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