#ifndef _ASM_X86_EFI_H
#define _ASM_X86_EFI_H
#include <asm/fpu/api.h>
#include <asm/processor-flags.h>
#include <asm/tlb.h>
#include <asm/nospec-branch.h>
#include <asm/mmu_context.h>
#include <asm/ibt.h>
#include <linux/build_bug.h>
#include <linux/kernel.h>
#include <linux/pgtable.h>
extern unsigned long efi_fw_vendor, efi_config_table;
extern unsigned long efi_mixed_mode_stack_pa;
#define EFI32_LOADER_SIGNATURE …
#define EFI64_LOADER_SIGNATURE …
#define ARCH_EFI_IRQ_FLAGS_MASK …
#define EFI_UNACCEPTED_UNIT_SIZE …
#define __efi_nargs(...) …
#define __efi_nargs_(...) …
#define __efi_nargs__(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, n, ...) …
#define __efi_arg_sentinel(n) …
#define __efi_nargs_check(f, n, ...) …
#define __efi_nargs_check_(f, p, n) …
#define __efi_nargs_check__(f, p, n) …
static inline void efi_fpu_begin(void)
{ … }
static inline void efi_fpu_end(void)
{ … }
#ifdef CONFIG_X86_32
#define EFI_X86_KERNEL_ALLOC_LIMIT …
#else
#define EFI_X86_KERNEL_ALLOC_LIMIT …
extern asmlinkage u64 __efi_call(void *fp, ...);
extern bool efi_disable_ibt_for_runtime;
#define efi_call(...) …
#undef arch_efi_call_virt
#define arch_efi_call_virt(p, f, args...) …
#ifdef CONFIG_KASAN
#undef memcpy
#undef memset
#undef memmove
#endif
#endif
extern int __init efi_memblock_x86_reserve_range(void);
extern void __init efi_print_memmap(void);
extern void __init efi_map_region(efi_memory_desc_t *md);
extern void __init efi_map_region_fixed(efi_memory_desc_t *md);
extern void efi_sync_low_kernel_mappings(void);
extern int __init efi_alloc_page_tables(void);
extern int __init efi_setup_page_tables(unsigned long pa_memmap, unsigned num_pages);
extern void __init efi_runtime_update_mappings(void);
extern void __init efi_dump_pagetable(void);
extern void __init efi_apply_memmap_quirks(void);
extern int __init efi_reuse_config(u64 tables, int nr_tables);
extern void efi_delete_dummy_variable(void);
extern void efi_crash_gracefully_on_page_fault(unsigned long phys_addr);
extern void efi_free_boot_services(void);
void arch_efi_call_virt_setup(void);
void arch_efi_call_virt_teardown(void);
extern u64 efi_setup;
#ifdef CONFIG_EFI
extern u64 __efi64_thunk(u32, ...);
#define efi64_thunk(...) …
static inline bool efi_is_mixed(void)
{ … }
static inline bool efi_runtime_supported(void)
{ … }
extern void parse_efi_setup(u64 phys_addr, u32 data_len);
extern void efi_thunk_runtime_setup(void);
efi_status_t efi_set_virtual_address_map(unsigned long memory_map_size,
unsigned long descriptor_size,
u32 descriptor_version,
efi_memory_desc_t *virtual_map,
unsigned long systab_phys);
#ifdef CONFIG_EFI_MIXED
#define EFI_ALLOC_LIMIT …
#define ARCH_HAS_EFISTUB_WRAPPERS
static inline bool efi_is_64bit(void)
{ … }
static inline bool efi_is_native(void)
{ … }
#define efi_table_attr(inst, attr) …
#define efi_mixed_table_attr(inst, attr) …
static inline void *efi64_zero_upper(void *p)
{ … }
static inline u32 efi64_convert_status(efi_status_t status)
{ … }
#define __efi64_split(val) …
#define __efi64_argmap_free_pages(addr, size) …
#define __efi64_argmap_get_memory_map(mm_size, mm, key, size, ver) …
#define __efi64_argmap_allocate_pool(type, size, buffer) …
#define __efi64_argmap_create_event(type, tpl, f, c, event) …
#define __efi64_argmap_set_timer(event, type, time) …
#define __efi64_argmap_wait_for_event(num, event, index) …
#define __efi64_argmap_handle_protocol(handle, protocol, interface) …
#define __efi64_argmap_locate_protocol(protocol, reg, interface) …
#define __efi64_argmap_locate_device_path(protocol, path, handle) …
#define __efi64_argmap_exit(handle, status, size, data) …
#define __efi64_argmap_get_location(protocol, seg, bus, dev, func) …
#define __efi64_argmap_load_file(protocol, path, policy, bufsize, buf) …
#define __efi64_argmap_query_mode(gop, mode, size, info) …
#define __efi64_argmap_hash_log_extend_event(prot, fl, addr, size, ev) …
#define __efi64_argmap_get_memory_space_descriptor(phys, desc) …
#define __efi64_argmap_set_memory_space_attributes(phys, size, flags) …
#define __efi64_argmap_open(prot, newh, fname, mode, attr) …
#define __efi64_argmap_set_position(pos) …
#define __efi64_argmap_open_volume(prot, file) …
#define __efi64_argmap_get_memory_attributes(protocol, phys, size, flags) …
#define __efi64_argmap_set_memory_attributes(protocol, phys, size, flags) …
#define __efi64_argmap_clear_memory_attributes(protocol, phys, size, flags) …
#define __efi64_argmap_get_next(protocol, smbioshandle, type, record, phandle) …
#define __efi64_thunk_map(inst, func, ...) …
#define __efi64_argmap(mapped, args) …
#define __efi64_argmap__0(mapped, args) …
#define __efi64_argmap__1(mapped, args) …
#define __efi_eat(...) …
#define __efi_eval(...) …
static inline efi_status_t __efi64_widen_efi_status(u64 status)
{ … }
#define efi_fn_call(inst, func, ...) …
#define efi_mixed_call(inst, func, ...) …
#else
static inline bool efi_is_64bit(void)
{
return IS_ENABLED(CONFIG_X86_64);
}
#endif
extern bool efi_reboot_required(void);
extern bool efi_is_table_address(unsigned long phys_addr);
extern void efi_reserve_boot_services(void);
#else
static inline void parse_efi_setup(u64 phys_addr, u32 data_len) {}
static inline bool efi_reboot_required(void)
{
return false;
}
static inline bool efi_is_table_address(unsigned long phys_addr)
{
return false;
}
static inline void efi_reserve_boot_services(void)
{
}
#endif
extern int __init efi_memmap_alloc(unsigned int num_entries,
struct efi_memory_map_data *data);
extern int __init efi_memmap_install(struct efi_memory_map_data *data);
extern int __init efi_memmap_split_count(efi_memory_desc_t *md,
struct range *range);
extern void __init efi_memmap_insert(struct efi_memory_map *old_memmap,
void *buf, struct efi_mem_range *mem);
extern enum efi_secureboot_mode __x86_ima_efi_boot_mode(void);
#define arch_ima_efi_boot_mode …
#ifdef CONFIG_EFI_RUNTIME_MAP
int efi_get_runtime_map_size(void);
int efi_get_runtime_map_desc_size(void);
int efi_runtime_map_copy(void *buf, size_t bufsz);
#else
static inline int efi_get_runtime_map_size(void)
{
return 0;
}
static inline int efi_get_runtime_map_desc_size(void)
{
return 0;
}
static inline int efi_runtime_map_copy(void *buf, size_t bufsz)
{
return 0;
}
#endif
#endif