mb/emulation/qemu: Add VBOOT support
Add VBOOT support for testing purposes.
Add a 16 MiB FMAP containing RO + RW_A.
Tested on qemu.
Change-Id: I4039d77de44ade68c7bc1f8b4b0aa21387c50f8a
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/35400
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
diff --git a/src/mainboard/emulation/qemu-i440fx/Kconfig b/src/mainboard/emulation/qemu-i440fx/Kconfig
index 3c5e325..05246b6 100644
--- a/src/mainboard/emulation/qemu-i440fx/Kconfig
+++ b/src/mainboard/emulation/qemu-i440fx/Kconfig
@@ -9,10 +9,33 @@
select HAVE_CMOS_DEFAULT
select HAVE_PIRQ_TABLE
select HAVE_ACPI_TABLES
- select BOARD_ROMSIZE_KB_256
+ select BOARD_ROMSIZE_KB_256 if !VBOOT
+ select BOARD_ROMSIZE_KB_16384 if VBOOT
select MAINBOARD_HAS_NATIVE_VGA_INIT
select MAINBOARD_FORCE_NATIVE_VGA_INIT
+config VBOOT
+ select VBOOT_MUST_REQUEST_DISPLAY
+ select VBOOT_STARTS_IN_BOOTBLOCK
+ select VBOOT_SEPARATE_VERSTAGE
+ select VBOOT_VBNV_CMOS
+ select VBOOT_NO_BOARD_SUPPORT
+ select GBB_FLAG_DISABLE_LID_SHUTDOWN
+ select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC
+ select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC
+ select GBB_FLAG_DISABLE_FWMP
+
+config VBOOT_SLOTS_RW_A
+ default y
+
+config FMDFILE
+ string
+ default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwa-16M.fmd" if VBOOT_SLOTS_RW_A
+
+config VBOOT_VBNV_OFFSET
+ hex
+ default 0x2c
+
config MAINBOARD_DIR
string
default emulation/qemu-i440fx
diff --git a/src/mainboard/emulation/qemu-i440fx/cmos.layout b/src/mainboard/emulation/qemu-i440fx/cmos.layout
index b238a37..247a6a0 100644
--- a/src/mainboard/emulation/qemu-i440fx/cmos.layout
+++ b/src/mainboard/emulation/qemu-i440fx/cmos.layout
@@ -7,6 +7,10 @@
400 1 e 1 power_on_after_fail
412 4 e 6 debug_level
456 1 e 1 ECC_memory
+
+# VBOOT
+464 128 r 0 vbnv
+
1008 16 h 0 check_sum
enumerations
@@ -25,4 +29,4 @@
checksums
-checksum 392 1007 1008
+checksum 392 463 1008
diff --git a/src/mainboard/emulation/qemu-i440fx/vboot-rwa-16M.fmd b/src/mainboard/emulation/qemu-i440fx/vboot-rwa-16M.fmd
new file mode 100644
index 0000000..0d2c9da
--- /dev/null
+++ b/src/mainboard/emulation/qemu-i440fx/vboot-rwa-16M.fmd
@@ -0,0 +1,19 @@
+FLASH@0xff000000 0x1000000 {
+ SI_BIOS 0x1000000 {
+ RW_SECTION_A 0x7c0000 {
+ VBLOCK_A 0x10000
+ FW_MAIN_A(CBFS) 0x74ffc0
+ RW_FWID_A 0x40
+ }
+ RW_VPD(PRESERVE) 0x1000
+
+ WP_RO {
+ FMAP 0x800
+ RO_FRID 0x40
+ RO_PADDING 0x7c0
+ RO_VPD(PRESERVE) 0x1000
+ GBB 0x1e000
+ COREBOOT(CBFS)
+ }
+ }
+}