2 QEMU/KVM Firmware Configuration access
4 Copyright (c) 2011 - 2013, Intel Corporation. All rights reserved.<BR>
5 Copyright (C) 2013, Red Hat, Inc.
7 This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
17 #ifndef __FW_CFG_LIB__
18 #define __FW_CFG_LIB__
21 // The size, in bytes, of names of firmware configuration files, including at
22 // least one terminating NUL byte.
24 #define QEMU_FW_CFG_FNAME_SIZE 56
27 QemuFwCfgItemSignature
= 0x0000,
28 QemuFwCfgItemInterfaceVersion
= 0x0001,
29 QemuFwCfgItemSystemUuid
= 0x0002,
30 QemuFwCfgItemRamSize
= 0x0003,
31 QemuFwCfgItemGraphicsEnabled
= 0x0004,
32 QemuFwCfgItemSmpCpuCount
= 0x0005,
33 QemuFwCfgItemMachineId
= 0x0006,
34 QemuFwCfgItemKernelAddress
= 0x0007,
35 QemuFwCfgItemKernelSize
= 0x0008,
36 QemuFwCfgItemKernelCommandLine
= 0x0009,
37 QemuFwCfgItemInitrdAddress
= 0x000a,
38 QemuFwCfgItemInitrdSize
= 0x000b,
39 QemuFwCfgItemBootDevice
= 0x000c,
40 QemuFwCfgItemNumaData
= 0x000d,
41 QemuFwCfgItemBootMenu
= 0x000e,
42 QemuFwCfgItemMaximumCpuCount
= 0x000f,
43 QemuFwCfgItemKernelEntry
= 0x0010,
44 QemuFwCfgItemKernelData
= 0x0011,
45 QemuFwCfgItemInitrdData
= 0x0012,
46 QemuFwCfgItemCommandLineAddress
= 0x0013,
47 QemuFwCfgItemCommandLineSize
= 0x0014,
48 QemuFwCfgItemCommandLineData
= 0x0015,
49 QemuFwCfgItemKernelSetupAddress
= 0x0016,
50 QemuFwCfgItemKernelSetupSize
= 0x0017,
51 QemuFwCfgItemKernelSetupData
= 0x0018,
52 QemuFwCfgItemFileDir
= 0x0019,
54 QemuFwCfgItemX86AcpiTables
= 0x8000,
55 QemuFwCfgItemX86SmbiosTables
= 0x8001,
56 QemuFwCfgItemX86Irq0Override
= 0x8002,
57 QemuFwCfgItemX86E820Table
= 0x8003,
58 QemuFwCfgItemX86HpetData
= 0x8004,
60 } FIRMWARE_CONFIG_ITEM
;
64 Returns a boolean indicating if the firmware configuration interface
67 This function may change fw_cfg state.
69 @retval TRUE The interface is available
70 @retval FALSE The interface is not available
75 QemuFwCfgIsAvailable (
81 Selects a firmware configuration item for reading.
83 Following this call, any data read from this item will start from
84 the beginning of the configuration item's data.
86 @param[in] QemuFwCfgItem - Firmware Configuration item to read
92 IN FIRMWARE_CONFIG_ITEM QemuFwCfgItem
97 Reads firmware configuration bytes into a buffer
99 If called multiple times, then the data read will
100 continue at the offset of the firmware configuration
101 item where the previous read ended.
103 @param[in] Size - Size in bytes to read
104 @param[in] Buffer - Buffer to store data into
111 IN VOID
*Buffer OPTIONAL
116 Writes firmware configuration bytes from a buffer
118 If called multiple times, then the data written will
119 continue at the offset of the firmware configuration
120 item where the previous write ended.
122 @param[in] Size - Size in bytes to write
123 @param[in] Buffer - Buffer to read data from
128 QemuFwCfgWriteBytes (
135 Reads a UINT8 firmware configuration value
137 @return Value of Firmware Configuration item read
148 Reads a UINT16 firmware configuration value
150 @return Value of Firmware Configuration item read
161 Reads a UINT32 firmware configuration value
163 @return Value of Firmware Configuration item read
174 Reads a UINT64 firmware configuration value
176 @return Value of Firmware Configuration item read
187 Find the configuration item corresponding to the firmware configuration file.
189 @param[in] Name - Name of file to look up.
190 @param[out] Item - Configuration item corresponding to the file, to be passed
191 to QemuFwCfgSelectItem ().
192 @param[out] Size - Number of bytes in the file.
194 @return RETURN_SUCCESS If file is found.
195 RETURN_NOT_FOUND If file is not found.
196 RETURN_UNSUPPORTED If firmware configuration is unavailable.
202 IN CONST CHAR8
*Name
,
203 OUT FIRMWARE_CONFIG_ITEM
*Item
,
209 Returns a boolean indicating if the firmware configuration interface is
210 available for library-internal purposes.
212 This function never changes fw_cfg state.
214 @retval TRUE The interface is available internally.
215 @retval FALSE The interface is not available internally.
219 InternalQemuFwCfgIsAvailable (
225 Determine if S3 support is explicitly enabled.
227 @retval TRUE if S3 support is explicitly enabled.
228 FALSE otherwise. This includes unavailability of the firmware
229 configuration interface.