xref: /kvm-unit-tests/lib/x86/fwcfg.h (revision 03b1e4570f9678c59a1fdcd0428d21681541602e)
17d36db35SAvi Kivity #ifndef FWCFG_H
27d36db35SAvi Kivity #define FWCFG_H
37d36db35SAvi Kivity 
47d36db35SAvi Kivity #include <stdint.h>
5*03b1e457SNadav Amit #include <stdbool.h>
67d36db35SAvi Kivity 
77d36db35SAvi Kivity #define FW_CFG_SIGNATURE        0x00
87d36db35SAvi Kivity #define FW_CFG_ID               0x01
97d36db35SAvi Kivity #define FW_CFG_UUID             0x02
107d36db35SAvi Kivity #define FW_CFG_RAM_SIZE         0x03
117d36db35SAvi Kivity #define FW_CFG_NOGRAPHIC        0x04
127d36db35SAvi Kivity #define FW_CFG_NB_CPUS          0x05
137d36db35SAvi Kivity #define FW_CFG_MACHINE_ID       0x06
147d36db35SAvi Kivity #define FW_CFG_KERNEL_ADDR      0x07
157d36db35SAvi Kivity #define FW_CFG_KERNEL_SIZE      0x08
167d36db35SAvi Kivity #define FW_CFG_KERNEL_CMDLINE   0x09
177d36db35SAvi Kivity #define FW_CFG_INITRD_ADDR      0x0a
187d36db35SAvi Kivity #define FW_CFG_INITRD_SIZE      0x0b
197d36db35SAvi Kivity #define FW_CFG_BOOT_DEVICE      0x0c
207d36db35SAvi Kivity #define FW_CFG_NUMA             0x0d
217d36db35SAvi Kivity #define FW_CFG_BOOT_MENU        0x0e
227d36db35SAvi Kivity #define FW_CFG_MAX_CPUS         0x0f
237d36db35SAvi Kivity #define FW_CFG_MAX_ENTRY        0x10
247d36db35SAvi Kivity 
257d36db35SAvi Kivity #define FW_CFG_WRITE_CHANNEL    0x4000
267d36db35SAvi Kivity #define FW_CFG_ARCH_LOCAL       0x8000
277d36db35SAvi Kivity #define FW_CFG_ENTRY_MASK       ~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL)
287d36db35SAvi Kivity 
297d36db35SAvi Kivity #define FW_CFG_INVALID          0xffff
307d36db35SAvi Kivity 
317d36db35SAvi Kivity #define BIOS_CFG_IOPORT 0x510
327d36db35SAvi Kivity 
337d36db35SAvi Kivity #define FW_CFG_ACPI_TABLES (FW_CFG_ARCH_LOCAL + 0)
347d36db35SAvi Kivity #define FW_CFG_SMBIOS_ENTRIES (FW_CFG_ARCH_LOCAL + 1)
357d36db35SAvi Kivity #define FW_CFG_IRQ0_OVERRIDE (FW_CFG_ARCH_LOCAL + 2)
367d36db35SAvi Kivity 
37*03b1e457SNadav Amit extern bool no_test_device;
38*03b1e457SNadav Amit 
39*03b1e457SNadav Amit void read_cfg_override(void);
40*03b1e457SNadav Amit 
41*03b1e457SNadav Amit static inline bool test_device_enabled(void)
42*03b1e457SNadav Amit {
43*03b1e457SNadav Amit 	return !no_test_device;
44*03b1e457SNadav Amit }
45*03b1e457SNadav Amit 
467d36db35SAvi Kivity uint8_t fwcfg_get_u8(unsigned index);
477d36db35SAvi Kivity uint16_t fwcfg_get_u16(unsigned index);
487d36db35SAvi Kivity uint32_t fwcfg_get_u32(unsigned index);
497d36db35SAvi Kivity uint64_t fwcfg_get_u64(unsigned index);
507d36db35SAvi Kivity 
517d36db35SAvi Kivity unsigned fwcfg_get_nb_cpus(void);
527d36db35SAvi Kivity 
537d36db35SAvi Kivity #endif
547d36db35SAvi Kivity 
55