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