xref: /qemu/include/standard-headers/asm-x86/setup_data.h (revision 43ba160cb4bbb193560eb0d2d7decc4b5fc599fe)
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