xref: /kvm-unit-tests/lib/x86/fwcfg.h (revision c865f654ffe4c5955038aaf74f702ba62f3eb014)
1*c865f654SCornelia Huck #ifndef _X86_FWCFG_H_
2*c865f654SCornelia Huck #define _X86_FWCFG_H_
37d36db35SAvi Kivity 
47d36db35SAvi Kivity #include <stdint.h>
503b1e457SNadav 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
2382147b77SPaolo Bonzini 
2482147b77SPaolo Bonzini /* Dummy entries used when running on bare metal */
25eb2db85dSNadav Amit #define FW_CFG_MAX_RAM		0x11
267d36db35SAvi Kivity 
2782147b77SPaolo Bonzini #define FW_CFG_NUM_ENTRIES      (FW_CFG_MAX_RAM + 1)
2882147b77SPaolo Bonzini 
297d36db35SAvi Kivity #define FW_CFG_WRITE_CHANNEL    0x4000
307d36db35SAvi Kivity #define FW_CFG_ARCH_LOCAL       0x8000
317d36db35SAvi Kivity #define FW_CFG_ENTRY_MASK       ~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL)
327d36db35SAvi Kivity 
337d36db35SAvi Kivity #define FW_CFG_INVALID          0xffff
347d36db35SAvi Kivity 
357d36db35SAvi Kivity #define BIOS_CFG_IOPORT 0x510
367d36db35SAvi Kivity 
377d36db35SAvi Kivity #define FW_CFG_ACPI_TABLES (FW_CFG_ARCH_LOCAL + 0)
387d36db35SAvi Kivity #define FW_CFG_SMBIOS_ENTRIES (FW_CFG_ARCH_LOCAL + 1)
397d36db35SAvi Kivity #define FW_CFG_IRQ0_OVERRIDE (FW_CFG_ARCH_LOCAL + 2)
407d36db35SAvi Kivity 
4103b1e457SNadav Amit extern bool no_test_device;
4203b1e457SNadav Amit 
test_device_enabled(void)4303b1e457SNadav Amit static inline bool test_device_enabled(void)
4403b1e457SNadav Amit {
4503b1e457SNadav Amit 	return !no_test_device;
4603b1e457SNadav Amit }
4703b1e457SNadav Amit 
487d36db35SAvi Kivity uint8_t fwcfg_get_u8(unsigned index);
497d36db35SAvi Kivity uint16_t fwcfg_get_u16(unsigned index);
507d36db35SAvi Kivity uint32_t fwcfg_get_u32(unsigned index);
517d36db35SAvi Kivity uint64_t fwcfg_get_u64(unsigned index);
527d36db35SAvi Kivity 
537d36db35SAvi Kivity unsigned fwcfg_get_nb_cpus(void);
547d36db35SAvi Kivity 
557d36db35SAvi Kivity #endif
567d36db35SAvi Kivity 
57