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