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 */
26struct setup_data {
27 __u64 next;
28 __u32 type;
29 __u32 len;
30 __u8 data[];
31};
32
33/* extensible setup indirect data node */
34struct 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 */
44struct 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 */
54struct 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 */
76struct 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

source code of linux/arch/x86/include/uapi/asm/setup_data.h