| .. | .. |
|---|
| 2 | 2 | #ifndef _ASM_X86_BOOTPARAM_H |
|---|
| 3 | 3 | #define _ASM_X86_BOOTPARAM_H |
|---|
| 4 | 4 | |
|---|
| 5 | | -/* setup_data types */ |
|---|
| 5 | +/* setup_data/setup_indirect types */ |
|---|
| 6 | 6 | #define SETUP_NONE 0 |
|---|
| 7 | 7 | #define SETUP_E820_EXT 1 |
|---|
| 8 | 8 | #define SETUP_DTB 2 |
|---|
| .. | .. |
|---|
| 10 | 10 | #define SETUP_EFI 4 |
|---|
| 11 | 11 | #define SETUP_APPLE_PROPERTIES 5 |
|---|
| 12 | 12 | #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) |
|---|
| 13 | 18 | |
|---|
| 14 | 19 | /* ram_size flags */ |
|---|
| 15 | 20 | #define RAMDISK_IMAGE_START_MASK 0x07FF |
|---|
| .. | .. |
|---|
| 29 | 34 | #define XLF_EFI_HANDOVER_32 (1<<2) |
|---|
| 30 | 35 | #define XLF_EFI_HANDOVER_64 (1<<3) |
|---|
| 31 | 36 | #define XLF_EFI_KEXEC (1<<4) |
|---|
| 37 | +#define XLF_5LEVEL (1<<5) |
|---|
| 38 | +#define XLF_5LEVEL_ENABLED (1<<6) |
|---|
| 32 | 39 | |
|---|
| 33 | 40 | #ifndef __ASSEMBLY__ |
|---|
| 34 | 41 | |
|---|
| .. | .. |
|---|
| 45 | 52 | __u32 type; |
|---|
| 46 | 53 | __u32 len; |
|---|
| 47 | 54 | __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; |
|---|
| 48 | 63 | }; |
|---|
| 49 | 64 | |
|---|
| 50 | 65 | struct setup_header { |
|---|
| .. | .. |
|---|
| 86 | 101 | __u64 pref_address; |
|---|
| 87 | 102 | __u32 init_size; |
|---|
| 88 | 103 | __u32 handover_offset; |
|---|
| 104 | + __u32 kernel_info_offset; |
|---|
| 89 | 105 | } __attribute__((packed)); |
|---|
| 90 | 106 | |
|---|
| 91 | 107 | struct sys_desc_table { |
|---|
| .. | .. |
|---|
| 137 | 153 | * setup data structure. |
|---|
| 138 | 154 | */ |
|---|
| 139 | 155 | 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; |
|---|
| 149 | 172 | } __attribute__((packed)); |
|---|
| 150 | 173 | |
|---|
| 151 | 174 | /* The so-called "zeropage" */ |
|---|
| .. | .. |
|---|
| 155 | 178 | __u8 _pad2[4]; /* 0x054 */ |
|---|
| 156 | 179 | __u64 tboot_addr; /* 0x058 */ |
|---|
| 157 | 180 | struct ist_info ist_info; /* 0x060 */ |
|---|
| 158 | | - __u8 _pad3[16]; /* 0x070 */ |
|---|
| 181 | + __u64 acpi_rsdp_addr; /* 0x070 */ |
|---|
| 182 | + __u8 _pad3[8]; /* 0x078 */ |
|---|
| 159 | 183 | __u8 hd0_info[16]; /* obsolete! */ /* 0x080 */ |
|---|
| 160 | 184 | __u8 hd1_info[16]; /* obsolete! */ /* 0x090 */ |
|---|
| 161 | 185 | struct sys_desc_table sys_desc_table; /* obsolete! */ /* 0x0a0 */ |
|---|
| .. | .. |
|---|
| 231 | 255 | * currently supportd through this PV boot path. |
|---|
| 232 | 256 | * @X86_SUBARCH_INTEL_MID: Used for Intel MID (Mobile Internet Device) platform |
|---|
| 233 | 257 | * 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 |
|---|
| 235 | 259 | * for settop boxes and media devices, the use of a subarch for CE4100 |
|---|
| 236 | 260 | * is more of a hack... |
|---|
| 237 | 261 | */ |
|---|