1/*- 2 * Copyright (c) 2022, Netflix, Inc. 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#ifndef KBOOT_H 8#define KBOOT_H 9 10#define DEVT_HOSTDISK 1234 11 12struct memory_segments 13{ 14 uint64_t start; 15 uint64_t end; 16 uint64_t type; /* MD defined */ 17}; 18 19bool enumerate_memory_arch(void); 20struct preloaded_file; 21void bi_loadsmap(struct preloaded_file *kfp); 22 23bool has_acpi(void); 24vm_offset_t acpi_rsdp(void); 25 26void do_init(void); 27 28/* Per-platform fdt fixup */ 29void fdt_arch_fixups(void *fdtp); 30 31uint64_t kboot_get_phys_load_segment(void); 32uint8_t kboot_get_kernel_machine_bits(void); 33 34/* main.c */ 35void kboot_kseg_get(int *nseg, void **ptr); 36 37/* hostdisk.c */ 38extern const char *hostfs_root; 39const char *hostdisk_gen_probe(void); 40void hostdisk_zfs_probe(void); 41bool hostdisk_zfs_find_default(void); 42 43/* seg.c */ 44#define SYSTEM_RAM 1 45void init_avail(void); 46void need_avail(int n); 47void add_avail(uint64_t start, uint64_t end, uint64_t type); 48void remove_avail(uint64_t start, uint64_t end, uint64_t type); 49uint64_t first_avail(uint64_t align, uint64_t min_size, uint64_t type); 50void print_avail(void); 51bool populate_avail_from_iomem(void); 52uint64_t space_avail(uint64_t start); 53 54/* util.c */ 55bool file2str(const char *fn, char *buffer, size_t buflen); 56bool file2u64(const char *fn, uint64_t *val); 57 58#endif /* KBOOT_H */ 59