summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Rudolph <patrick.rudolph@9elements.com>2019-09-13 12:56:14 +0200
committerPatrick Georgi <pgeorgi@google.com>2019-11-06 13:56:49 +0000
commitf8251b98605264f3e353fc7b6146f686ec5295cc (patch)
treefa3c1eae7f75727ec820178e9b5315236616d85b
parentb4741616ea3dc1f0b281376f9c5e0ffe75a1b15b (diff)
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>
-rw-r--r--src/mainboard/emulation/qemu-i440fx/Kconfig25
-rw-r--r--src/mainboard/emulation/qemu-i440fx/cmos.layout6
-rw-r--r--src/mainboard/emulation/qemu-i440fx/vboot-rwa-16M.fmd19
-rw-r--r--src/mainboard/emulation/qemu-q35/Kconfig25
-rw-r--r--src/mainboard/emulation/qemu-q35/cmos.layout6
-rw-r--r--src/mainboard/emulation/qemu-q35/vboot-rwa-16M.fmd19
6 files changed, 96 insertions, 4 deletions
diff --git a/src/mainboard/emulation/qemu-i440fx/Kconfig b/src/mainboard/emulation/qemu-i440fx/Kconfig
index 3c5e3252f8..05246b6d6d 100644
--- a/src/mainboard/emulation/qemu-i440fx/Kconfig
+++ b/src/mainboard/emulation/qemu-i440fx/Kconfig
@@ -9,10 +9,33 @@ config BOARD_SPECIFIC_OPTIONS
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 b238a379d8..247a6a08a5 100644
--- a/src/mainboard/emulation/qemu-i440fx/cmos.layout
+++ b/src/mainboard/emulation/qemu-i440fx/cmos.layout
@@ -7,6 +7,10 @@ entries
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 @@ enumerations
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 0000000000..0d2c9da297
--- /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)
+ }
+ }
+}
diff --git a/src/mainboard/emulation/qemu-q35/Kconfig b/src/mainboard/emulation/qemu-q35/Kconfig
index bfa38ed84e..a86e844044 100644
--- a/src/mainboard/emulation/qemu-q35/Kconfig
+++ b/src/mainboard/emulation/qemu-q35/Kconfig
@@ -8,10 +8,33 @@ config BOARD_SPECIFIC_OPTIONS
select HAVE_OPTION_TABLE
# select HAVE_PIRQ_TABLE
select HAVE_ACPI_TABLES
- select BOARD_ROMSIZE_KB_2048
+ select BOARD_ROMSIZE_KB_2048 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 FMDFILE
+ string
+ default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwa-16M.fmd" if VBOOT_SLOTS_RW_A
+
+config VBOOT_SLOTS_RW_A
+ default y
+
+config VBOOT_VBNV_OFFSET
+ hex
+ default 0x2c
+
config MAINBOARD_DIR
string
default emulation/qemu-q35
diff --git a/src/mainboard/emulation/qemu-q35/cmos.layout b/src/mainboard/emulation/qemu-q35/cmos.layout
index b238a379d8..247a6a08a5 100644
--- a/src/mainboard/emulation/qemu-q35/cmos.layout
+++ b/src/mainboard/emulation/qemu-q35/cmos.layout
@@ -7,6 +7,10 @@ entries
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 @@ enumerations
checksums
-checksum 392 1007 1008
+checksum 392 463 1008
diff --git a/src/mainboard/emulation/qemu-q35/vboot-rwa-16M.fmd b/src/mainboard/emulation/qemu-q35/vboot-rwa-16M.fmd
new file mode 100644
index 0000000000..0d2c9da297
--- /dev/null
+++ b/src/mainboard/emulation/qemu-q35/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)
+ }
+ }
+}