1136d2dc0SWarner Losh /*- 2136d2dc0SWarner Losh * Copyright (c) 2024, Netflix, Inc. 3136d2dc0SWarner Losh * 4136d2dc0SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 5136d2dc0SWarner Losh */ 6136d2dc0SWarner Losh 7136d2dc0SWarner Losh #pragma once 8136d2dc0SWarner Losh 9136d2dc0SWarner Losh #include <sys/efi.h> 10136d2dc0SWarner Losh #include <machine/metadata.h> 11136d2dc0SWarner Losh 12136d2dc0SWarner Losh /* Note, we mix and match FreeBSD types and EFI standard defined types */ 13136d2dc0SWarner Losh 14136d2dc0SWarner Losh typedef void (*efi_map_entry_cb)(struct efi_md *, void *argp); 15136d2dc0SWarner Losh 16*92ad79ecSWarner Losh struct preloaded_file; 17*92ad79ecSWarner Losh 18*92ad79ecSWarner Losh bool efi_read_from_pa(uint64_t pa, uint32_t map_size, uint32_t desc_size, uint32_t vers); 19*92ad79ecSWarner Losh void efi_read_from_sysfs(void); 20*92ad79ecSWarner Losh void efi_set_systbl(uint64_t tbl); 21136d2dc0SWarner Losh void foreach_efi_map_entry(struct efi_map_header *efihdr, efi_map_entry_cb cb, void *argp); 22136d2dc0SWarner Losh void print_efi_map(struct efi_map_header *efihdr); 23*92ad79ecSWarner Losh void efi_bi_loadsmap(struct preloaded_file *kfp); 24*92ad79ecSWarner Losh 25*92ad79ecSWarner Losh extern uint32_t efi_map_size; 26*92ad79ecSWarner Losh extern vm_paddr_t efi_map_phys_src; /* From DTB */ 27*92ad79ecSWarner Losh extern vm_paddr_t efi_map_phys_dst; /* From our memory map metadata module */ 28