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