aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/linux-headers/linux/qemu_fw_cfg.h
blob: 29fd0e97072dc8030489f7f86e881925d97852cf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/* SPDX-License-Identifier: BSD-3-Clause */ 
#ifndef _LINUX_FW_CFG_H 
#define _LINUX_FW_CFG_H 
 
#include <linux/types.h> 
 
#define FW_CFG_ACPI_DEVICE_ID	"QEMU0002" 
 
/* selector key values for "well-known" fw_cfg entries */ 
#define FW_CFG_SIGNATURE	0x00 
#define FW_CFG_ID		0x01 
#define FW_CFG_UUID		0x02 
#define FW_CFG_RAM_SIZE		0x03 
#define FW_CFG_NOGRAPHIC	0x04 
#define FW_CFG_NB_CPUS		0x05 
#define FW_CFG_MACHINE_ID	0x06 
#define FW_CFG_KERNEL_ADDR	0x07 
#define FW_CFG_KERNEL_SIZE	0x08 
#define FW_CFG_KERNEL_CMDLINE	0x09 
#define FW_CFG_INITRD_ADDR	0x0a 
#define FW_CFG_INITRD_SIZE	0x0b 
#define FW_CFG_BOOT_DEVICE	0x0c 
#define FW_CFG_NUMA		0x0d 
#define FW_CFG_BOOT_MENU	0x0e 
#define FW_CFG_MAX_CPUS		0x0f 
#define FW_CFG_KERNEL_ENTRY	0x10 
#define FW_CFG_KERNEL_DATA	0x11 
#define FW_CFG_INITRD_DATA	0x12 
#define FW_CFG_CMDLINE_ADDR	0x13 
#define FW_CFG_CMDLINE_SIZE	0x14 
#define FW_CFG_CMDLINE_DATA	0x15 
#define FW_CFG_SETUP_ADDR	0x16 
#define FW_CFG_SETUP_SIZE	0x17 
#define FW_CFG_SETUP_DATA	0x18 
#define FW_CFG_FILE_DIR		0x19 
 
#define FW_CFG_FILE_FIRST	0x20 
#define FW_CFG_FILE_SLOTS_MIN	0x10 
 
#define FW_CFG_WRITE_CHANNEL	0x4000 
#define FW_CFG_ARCH_LOCAL	0x8000 
#define FW_CFG_ENTRY_MASK	(~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL)) 
 
#define FW_CFG_INVALID		0xffff 
 
/* width in bytes of fw_cfg control register */ 
#define FW_CFG_CTL_SIZE		0x02 
 
/* fw_cfg "file name" is up to 56 characters (including terminating nul) */ 
#define FW_CFG_MAX_FILE_PATH	56 
 
/* size in bytes of fw_cfg signature */ 
#define FW_CFG_SIG_SIZE 4 
 
/* FW_CFG_ID bits */ 
#define FW_CFG_VERSION		0x01 
#define FW_CFG_VERSION_DMA	0x02 
 
/* fw_cfg file directory entry type */ 
struct fw_cfg_file { 
	__be32 size; 
	__be16 select; 
	__u16 reserved; 
	char name[FW_CFG_MAX_FILE_PATH]; 
}; 
 
/* FW_CFG_DMA_CONTROL bits */ 
#define FW_CFG_DMA_CTL_ERROR	0x01 
#define FW_CFG_DMA_CTL_READ	0x02 
#define FW_CFG_DMA_CTL_SKIP	0x04 
#define FW_CFG_DMA_CTL_SELECT	0x08 
#define FW_CFG_DMA_CTL_WRITE	0x10 
 
#define FW_CFG_DMA_SIGNATURE    0x51454d5520434647ULL /* "QEMU CFG" */ 
 
/* Control as first field allows for different structures selected by this 
 * field, which might be useful in the future 
 */ 
struct fw_cfg_dma_access { 
	__be32 control; 
	__be32 length; 
	__be64 address; 
}; 
 
#define FW_CFG_VMCOREINFO_FILENAME "etc/vmcoreinfo" 
 
#define FW_CFG_VMCOREINFO_FORMAT_NONE 0x0 
#define FW_CFG_VMCOREINFO_FORMAT_ELF 0x1 
 
struct fw_cfg_vmcoreinfo { 
	__le16 host_format; 
	__le16 guest_format; 
	__le32 size; 
	__le64 paddr; 
}; 
 
#endif