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