hc
2024-05-10 9999e48639b3cecb08ffb37358bcba3b48161b29
kernel/arch/x86/include/uapi/asm/bootparam.h
....@@ -2,7 +2,7 @@
22 #ifndef _ASM_X86_BOOTPARAM_H
33 #define _ASM_X86_BOOTPARAM_H
44
5
-/* setup_data types */
5
+/* setup_data/setup_indirect types */
66 #define SETUP_NONE 0
77 #define SETUP_E820_EXT 1
88 #define SETUP_DTB 2
....@@ -10,6 +10,11 @@
1010 #define SETUP_EFI 4
1111 #define SETUP_APPLE_PROPERTIES 5
1212 #define SETUP_JAILHOUSE 6
13
+
14
+#define SETUP_INDIRECT (1<<31)
15
+
16
+/* SETUP_INDIRECT | max(SETUP_*) */
17
+#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
1318
1419 /* ram_size flags */
1520 #define RAMDISK_IMAGE_START_MASK 0x07FF
....@@ -29,6 +34,8 @@
2934 #define XLF_EFI_HANDOVER_32 (1<<2)
3035 #define XLF_EFI_HANDOVER_64 (1<<3)
3136 #define XLF_EFI_KEXEC (1<<4)
37
+#define XLF_5LEVEL (1<<5)
38
+#define XLF_5LEVEL_ENABLED (1<<6)
3239
3340 #ifndef __ASSEMBLY__
3441
....@@ -45,6 +52,14 @@
4552 __u32 type;
4653 __u32 len;
4754 __u8 data[0];
55
+};
56
+
57
+/* extensible setup indirect data node */
58
+struct setup_indirect {
59
+ __u32 type;
60
+ __u32 reserved; /* Reserved, must be set to zero. */
61
+ __u64 len;
62
+ __u64 addr;
4863 };
4964
5065 struct setup_header {
....@@ -86,6 +101,7 @@
86101 __u64 pref_address;
87102 __u32 init_size;
88103 __u32 handover_offset;
104
+ __u32 kernel_info_offset;
89105 } __attribute__((packed));
90106
91107 struct sys_desc_table {
....@@ -137,15 +153,22 @@
137153 * setup data structure.
138154 */
139155 struct jailhouse_setup_data {
140
- __u16 version;
141
- __u16 compatible_version;
142
- __u16 pm_timer_address;
143
- __u16 num_cpus;
144
- __u64 pci_mmconfig_base;
145
- __u32 tsc_khz;
146
- __u32 apic_khz;
147
- __u8 standard_ioapic;
148
- __u8 cpu_ids[255];
156
+ struct {
157
+ __u16 version;
158
+ __u16 compatible_version;
159
+ } __attribute__((packed)) hdr;
160
+ struct {
161
+ __u16 pm_timer_address;
162
+ __u16 num_cpus;
163
+ __u64 pci_mmconfig_base;
164
+ __u32 tsc_khz;
165
+ __u32 apic_khz;
166
+ __u8 standard_ioapic;
167
+ __u8 cpu_ids[255];
168
+ } __attribute__((packed)) v1;
169
+ struct {
170
+ __u32 flags;
171
+ } __attribute__((packed)) v2;
149172 } __attribute__((packed));
150173
151174 /* The so-called "zeropage" */
....@@ -155,7 +178,8 @@
155178 __u8 _pad2[4]; /* 0x054 */
156179 __u64 tboot_addr; /* 0x058 */
157180 struct ist_info ist_info; /* 0x060 */
158
- __u8 _pad3[16]; /* 0x070 */
181
+ __u64 acpi_rsdp_addr; /* 0x070 */
182
+ __u8 _pad3[8]; /* 0x078 */
159183 __u8 hd0_info[16]; /* obsolete! */ /* 0x080 */
160184 __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */
161185 struct sys_desc_table sys_desc_table; /* obsolete! */ /* 0x0a0 */
....@@ -231,7 +255,7 @@
231255 * currently supportd through this PV boot path.
232256 * @X86_SUBARCH_INTEL_MID: Used for Intel MID (Mobile Internet Device) platform
233257 * systems which do not have the PCI legacy interfaces.
234
- * @X86_SUBARCH_CE4100: Used for Intel CE media processor (CE4100) SoC for
258
+ * @X86_SUBARCH_CE4100: Used for Intel CE media processor (CE4100) SoC
235259 * for settop boxes and media devices, the use of a subarch for CE4100
236260 * is more of a hack...
237261 */