1ab0c7fb2SPaolo Bonzini /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ 2ab0c7fb2SPaolo Bonzini #ifndef _ASM_X86_SETUP_DATA_H 3ab0c7fb2SPaolo Bonzini #define _ASM_X86_SETUP_DATA_H 4ab0c7fb2SPaolo Bonzini 5ab0c7fb2SPaolo Bonzini /* setup_data/setup_indirect types */ 6ab0c7fb2SPaolo Bonzini #define SETUP_NONE 0 7ab0c7fb2SPaolo Bonzini #define SETUP_E820_EXT 1 8ab0c7fb2SPaolo Bonzini #define SETUP_DTB 2 9ab0c7fb2SPaolo Bonzini #define SETUP_PCI 3 10ab0c7fb2SPaolo Bonzini #define SETUP_EFI 4 11ab0c7fb2SPaolo Bonzini #define SETUP_APPLE_PROPERTIES 5 12ab0c7fb2SPaolo Bonzini #define SETUP_JAILHOUSE 6 13ab0c7fb2SPaolo Bonzini #define SETUP_CC_BLOB 7 14ab0c7fb2SPaolo Bonzini #define SETUP_IMA 8 15ab0c7fb2SPaolo Bonzini #define SETUP_RNG_SEED 9 16*688b0756SPaolo Bonzini #define SETUP_KEXEC_KHO 10 17*688b0756SPaolo Bonzini #define SETUP_ENUM_MAX SETUP_KEXEC_KHO 18ab0c7fb2SPaolo Bonzini 19ab0c7fb2SPaolo Bonzini #define SETUP_INDIRECT (1<<31) 20ab0c7fb2SPaolo Bonzini #define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT) 21ab0c7fb2SPaolo Bonzini 221cab5a02SRorie Reyes #ifndef __ASSEMBLER__ 23ab0c7fb2SPaolo Bonzini 24ab0c7fb2SPaolo Bonzini #include "standard-headers/linux/types.h" 25ab0c7fb2SPaolo Bonzini 26ab0c7fb2SPaolo Bonzini /* extensible setup data list node */ 27ab0c7fb2SPaolo Bonzini struct setup_data { 28ab0c7fb2SPaolo Bonzini uint64_t next; 29ab0c7fb2SPaolo Bonzini uint32_t type; 30ab0c7fb2SPaolo Bonzini uint32_t len; 31ab0c7fb2SPaolo Bonzini uint8_t data[]; 32ab0c7fb2SPaolo Bonzini }; 33ab0c7fb2SPaolo Bonzini 34ab0c7fb2SPaolo Bonzini /* extensible setup indirect data node */ 35ab0c7fb2SPaolo Bonzini struct setup_indirect { 36ab0c7fb2SPaolo Bonzini uint32_t type; 37ab0c7fb2SPaolo Bonzini uint32_t reserved; /* Reserved, must be set to zero. */ 38ab0c7fb2SPaolo Bonzini uint64_t len; 39ab0c7fb2SPaolo Bonzini uint64_t addr; 40ab0c7fb2SPaolo Bonzini }; 41ab0c7fb2SPaolo Bonzini 42ab0c7fb2SPaolo Bonzini /* 43ab0c7fb2SPaolo Bonzini * The E820 memory region entry of the boot protocol ABI: 44ab0c7fb2SPaolo Bonzini */ 45ab0c7fb2SPaolo Bonzini struct boot_e820_entry { 46ab0c7fb2SPaolo Bonzini uint64_t addr; 47ab0c7fb2SPaolo Bonzini uint64_t size; 48ab0c7fb2SPaolo Bonzini uint32_t type; 49ab0c7fb2SPaolo Bonzini } QEMU_PACKED; 50ab0c7fb2SPaolo Bonzini 51ab0c7fb2SPaolo Bonzini /* 52ab0c7fb2SPaolo Bonzini * The boot loader is passing platform information via this Jailhouse-specific 53ab0c7fb2SPaolo Bonzini * setup data structure. 54ab0c7fb2SPaolo Bonzini */ 55ab0c7fb2SPaolo Bonzini struct jailhouse_setup_data { 56ab0c7fb2SPaolo Bonzini struct { 57ab0c7fb2SPaolo Bonzini uint16_t version; 58ab0c7fb2SPaolo Bonzini uint16_t compatible_version; 59ab0c7fb2SPaolo Bonzini } QEMU_PACKED hdr; 60ab0c7fb2SPaolo Bonzini struct { 61ab0c7fb2SPaolo Bonzini uint16_t pm_timer_address; 62ab0c7fb2SPaolo Bonzini uint16_t num_cpus; 63ab0c7fb2SPaolo Bonzini uint64_t pci_mmconfig_base; 64ab0c7fb2SPaolo Bonzini uint32_t tsc_khz; 65ab0c7fb2SPaolo Bonzini uint32_t apic_khz; 66ab0c7fb2SPaolo Bonzini uint8_t standard_ioapic; 67ab0c7fb2SPaolo Bonzini uint8_t cpu_ids[255]; 68ab0c7fb2SPaolo Bonzini } QEMU_PACKED v1; 69ab0c7fb2SPaolo Bonzini struct { 70ab0c7fb2SPaolo Bonzini uint32_t flags; 71ab0c7fb2SPaolo Bonzini } QEMU_PACKED v2; 72ab0c7fb2SPaolo Bonzini } QEMU_PACKED; 73ab0c7fb2SPaolo Bonzini 74ab0c7fb2SPaolo Bonzini /* 75ab0c7fb2SPaolo Bonzini * IMA buffer setup data information from the previous kernel during kexec 76ab0c7fb2SPaolo Bonzini */ 77ab0c7fb2SPaolo Bonzini struct ima_setup_data { 78ab0c7fb2SPaolo Bonzini uint64_t addr; 79ab0c7fb2SPaolo Bonzini uint64_t size; 80ab0c7fb2SPaolo Bonzini } QEMU_PACKED; 81ab0c7fb2SPaolo Bonzini 82*688b0756SPaolo Bonzini /* 83*688b0756SPaolo Bonzini * Locations of kexec handover metadata 84*688b0756SPaolo Bonzini */ 85*688b0756SPaolo Bonzini struct kho_data { 86*688b0756SPaolo Bonzini uint64_t fdt_addr; 87*688b0756SPaolo Bonzini uint64_t fdt_size; 88*688b0756SPaolo Bonzini uint64_t scratch_addr; 89*688b0756SPaolo Bonzini uint64_t scratch_size; 90*688b0756SPaolo Bonzini } QEMU_PACKED; 91*688b0756SPaolo Bonzini 921cab5a02SRorie Reyes #endif /* __ASSEMBLER__ */ 93ab0c7fb2SPaolo Bonzini 94ab0c7fb2SPaolo Bonzini #endif /* _ASM_X86_SETUP_DATA_H */ 95