xref: /kvm-unit-tests/lib/x86/fwcfg.h (revision 5b70cbdb7bc2ea65096b51565c75815cc95945b8)
1 #ifndef FWCFG_H
2 #define FWCFG_H
3 
4 #include <stdint.h>
5 #include <stdbool.h>
6 
7 #define FW_CFG_SIGNATURE        0x00
8 #define FW_CFG_ID               0x01
9 #define FW_CFG_UUID             0x02
10 #define FW_CFG_RAM_SIZE         0x03
11 #define FW_CFG_NOGRAPHIC        0x04
12 #define FW_CFG_NB_CPUS          0x05
13 #define FW_CFG_MACHINE_ID       0x06
14 #define FW_CFG_KERNEL_ADDR      0x07
15 #define FW_CFG_KERNEL_SIZE      0x08
16 #define FW_CFG_KERNEL_CMDLINE   0x09
17 #define FW_CFG_INITRD_ADDR      0x0a
18 #define FW_CFG_INITRD_SIZE      0x0b
19 #define FW_CFG_BOOT_DEVICE      0x0c
20 #define FW_CFG_NUMA             0x0d
21 #define FW_CFG_BOOT_MENU        0x0e
22 #define FW_CFG_MAX_CPUS         0x0f
23 #define FW_CFG_MAX_ENTRY        0x10
24 
25 #define FW_CFG_WRITE_CHANNEL    0x4000
26 #define FW_CFG_ARCH_LOCAL       0x8000
27 #define FW_CFG_ENTRY_MASK       ~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL)
28 
29 #define FW_CFG_INVALID          0xffff
30 
31 #define BIOS_CFG_IOPORT 0x510
32 
33 #define FW_CFG_ACPI_TABLES (FW_CFG_ARCH_LOCAL + 0)
34 #define FW_CFG_SMBIOS_ENTRIES (FW_CFG_ARCH_LOCAL + 1)
35 #define FW_CFG_IRQ0_OVERRIDE (FW_CFG_ARCH_LOCAL + 2)
36 
37 extern bool no_test_device;
38 
39 static inline bool test_device_enabled(void)
40 {
41 	return !no_test_device;
42 }
43 
44 uint8_t fwcfg_get_u8(unsigned index);
45 uint16_t fwcfg_get_u16(unsigned index);
46 uint32_t fwcfg_get_u32(unsigned index);
47 uint64_t fwcfg_get_u64(unsigned index);
48 
49 unsigned fwcfg_get_nb_cpus(void);
50 
51 #endif
52 
53