Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
mb/emulation/qemu-q35: Enable CHROMEOS as an option
Allow Chrome OS to be enabled for this QEMU target. By default this does not change anything unless it is selected in the build configuration, but it makes it possible.
Native VGA init is not forced when Chrome OS is enabled because the drm-bochs driver does not work with chrome (even the latest upstream kernel driver with drm atomic support) but it does work with virtio.
Recovery mode can be entered by supplying a custom fw_cfg option when launching qemu: -fw_cfg name=opt/cros/recovery,string=1
Change-Id: I24b4532ea961e68558663292c99d121f0a30ce3b Signed-off-by: Duncan Laurie dlaurie@google.com --- M src/mainboard/emulation/qemu-q35/Kconfig M src/mainboard/emulation/qemu-q35/Makefile.inc A src/mainboard/emulation/qemu-q35/chromeos.c A src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd 4 files changed, 95 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/37/39837/1
diff --git a/src/mainboard/emulation/qemu-q35/Kconfig b/src/mainboard/emulation/qemu-q35/Kconfig index ee64060..31aa3d8 100644 --- a/src/mainboard/emulation/qemu-q35/Kconfig +++ b/src/mainboard/emulation/qemu-q35/Kconfig @@ -11,15 +11,16 @@ 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 + select MAINBOARD_FORCE_NATIVE_VGA_INIT if !CHROMEOS select MAINBOARD_HAS_LPC_TPM + select MAINBOARD_HAS_CHROMEOS
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 VBOOT_NO_BOARD_SUPPORT if !CHROMEOS select GBB_FLAG_DISABLE_LID_SHUTDOWN select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC @@ -27,7 +28,8 @@
config FMDFILE string - default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwa-16M.fmd" if VBOOT_SLOTS_RW_A + default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwa-16M.fmd" if VBOOT_SLOTS_RW_A && !VBOOT_SLOTS_RW_AB + default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab-16M.fmd" if VBOOT_SLOTS_RW_AB
if VBOOT
diff --git a/src/mainboard/emulation/qemu-q35/Makefile.inc b/src/mainboard/emulation/qemu-q35/Makefile.inc index 133a213..e142d4d 100644 --- a/src/mainboard/emulation/qemu-q35/Makefile.inc +++ b/src/mainboard/emulation/qemu-q35/Makefile.inc @@ -10,3 +10,7 @@ ramstage-y += ../qemu-i440fx/fw_cfg.c ramstage-y += ../qemu-i440fx/memmap.c ramstage-y += ../qemu-i440fx/northbridge.c + +verstage-$(CONFIG_CHROMEOS) += chromeos.c +verstage-$(CONFIG_CHROMEOS) += ../qemu-i440fx/fw_cfg.c +ramstage-$(CONFIG_CHROMEOS) += chromeos.c diff --git a/src/mainboard/emulation/qemu-q35/chromeos.c b/src/mainboard/emulation/qemu-q35/chromeos.c new file mode 100644 index 0000000..50e48ca --- /dev/null +++ b/src/mainboard/emulation/qemu-q35/chromeos.c @@ -0,0 +1,58 @@ +/* + * This file is part of the coreboot project. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include <boot/coreboot_tables.h> +#include <vendorcode/google/chromeos/chromeos.h> +#include "../qemu-i440fx/fw_cfg.h" + +void fill_lb_gpios(struct lb_gpios *gpios) +{ + struct lb_gpio chromeos_gpios[] = { + {-1, ACTIVE_HIGH, 1, "lid"}, + {-1, ACTIVE_HIGH, 0, "power"}, + {-1, ACTIVE_HIGH, gfx_get_init_done(), "oprom"}, + {-1, ACTIVE_HIGH, 0, "EC in RW"}, + }; + lb_add_gpios(gpios, chromeos_gpios, ARRAY_SIZE(chromeos_gpios)); +} + +int get_write_protect_state(void) +{ + return 0; +} + +/* + * Enable recovery mode with fw_cfg option to qemu: + * -fw_cfg name=opt/cros/recovery,string=1 + */ +int get_recovery_mode_switch(void) +{ + FWCfgFile f; + + if (!fw_cfg_check_file(&f, "opt/cros/recovery")) { + uint8_t rec_mode; + if (f.size != 1) { + printk(BIOS_ERR, "opt/cros/recovery invalid size %d\n", f.size); + return 0; + } + fw_cfg_get(f.select, &rec_mode, f.size); + if (rec_mode == '1') { + printk(BIOS_INFO, "Recovery is enabled.\n"); + return 1; + } + } + + return 0; +} + +static const struct cros_gpio cros_gpios[] = { + CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, "QEMU"), +}; + +void mainboard_chromeos_acpi_generate(void) +{ + chromeos_acpi_gpio_generate(cros_gpios, ARRAY_SIZE(cros_gpios)); +} diff --git a/src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd b/src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd new file mode 100644 index 0000000..b4a9d29 --- /dev/null +++ b/src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd @@ -0,0 +1,28 @@ +FLASH@0xff000000 0x1000000 { + SI_BIOS 0x1000000 { + RW_SECTION_A 0x1c0000 { + VBLOCK_A 0x10000 + FW_MAIN_A(CBFS) 0x14ffc0 + RW_FWID_A 0x40 + } + RW_SECTION_B 0x1c0000 { + VBLOCK_B 0x10000 + FW_MAIN_B(CBFS) 0x14ffc0 + RW_FWID_B 0x40 + } + RW_SHARED 0x4000 { + SHARED_DATA 0x2000 + VBLOCK_DEV 0x2000 + } + RW_VPD(PRESERVE) 0x1000 + RW_LEGACY(CBFS) 0x10000 + WP_RO { + FMAP 0x800 + RO_FRID 0x40 + RO_PADDING 0x7c0 + RO_VPD(PRESERVE) 0x1000 + GBB 0x1e000 + COREBOOT(CBFS) + } + } +}
Furquan Shaikh has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 1: Code-Review+2
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 1:
(4 comments)
https://review.coreboot.org/c/coreboot/+/39837/1//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/39837/1//COMMIT_MSG@15 PS1, Line 15: kernel driver with drm atomic support) but it does work with virtio. Sorry for being ignorant. What has the graphics init in coreboot to do with what Linux drivers are doing?
https://review.coreboot.org/c/coreboot/+/39837/1//COMMIT_MSG@19 PS1, Line 19: Please mention, that an FMAP is needed, and how you run QEMU with virtio.
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... File src/mainboard/emulation/qemu-q35/chromeos.c:
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... PS1, Line 22: int get_write_protect_state(void) `bool is_write_protected(void)`
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... PS1, Line 31: int get_recovery_mode_switch(void) Make it return bool, and name it: `is_recovery_mode_enabled()?
Hello build bot (Jenkins), Furquan Shaikh, Patrick Georgi, Martin Roth,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/39837
to look at the new patch set (#2).
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
mb/emulation/qemu-q35: Enable CHROMEOS as an option
Allow Chrome OS to be enabled for this QEMU target. By default this does not change anything unless it is selected in the build configuration, but it makes it possible.
Native VGA init is not forced when Chrome OS is enabled because the drm-bochs driver does not work with chrome (even the latest upstream kernel driver with drm atomic support) but it does work with virtio. The coreboot graphics init needs to match what is selected with qemu (with -vga std or -vga virtio) which in turn will determine which kernel driver is used.
A second FMAP is added with both RW-A and RW-B regions which is required by chromeos.
Recovery mode can be entered by supplying a custom fw_cfg option when launching qemu: -fw_cfg name=opt/cros/recovery,string=1
Change-Id: I24b4532ea961e68558663292c99d121f0a30ce3b Signed-off-by: Duncan Laurie dlaurie@google.com --- M src/mainboard/emulation/qemu-q35/Kconfig M src/mainboard/emulation/qemu-q35/Makefile.inc A src/mainboard/emulation/qemu-q35/chromeos.c A src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd 4 files changed, 95 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/37/39837/2
Duncan Laurie has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 2:
(4 comments)
https://review.coreboot.org/c/coreboot/+/39837/1//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/39837/1//COMMIT_MSG@15 PS1, Line 15: kernel driver with drm atomic support) but it does work with virtio.
Sorry for being ignorant. […]
qemu has a number of different options for the -vga argument, but what is selected needs to match in both coreboot and the kernel.
In this case native init only works with drm-bochs (-vga std) which itself does not work with chrome. Instead using drm-virtio (-vga virtio) does work with chrome.
I had hoped that the recent addition of DRM atomic support to the bochs driver would help, but I still get a GPU watchdog from chrome.
https://review.coreboot.org/c/coreboot/+/39837/1//COMMIT_MSG@19 PS1, Line 19:
Please mention, that an FMAP is needed, and how you run QEMU with virtio.
Done
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... File src/mainboard/emulation/qemu-q35/chromeos.c:
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... PS1, Line 22: int get_write_protect_state(void)
`bool is_write_protected(void)`
This function is defined and used elsewhere so I can't really change it here.
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... PS1, Line 31: int get_recovery_mode_switch(void)
Make it return bool, and name it: `is_recovery_mode_enabled()?
same as above. these functions are already defined and used by chromeos code.
Patrick Rudolph has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 2: Code-Review+2
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 2: Code-Review+1
(3 comments)
https://review.coreboot.org/c/coreboot/+/39837/1//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/39837/1//COMMIT_MSG@15 PS1, Line 15: kernel driver with drm atomic support) but it does work with virtio.
qemu has a number of different options for the -vga argument, but what is selected needs to match in […]
Ack
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... File src/mainboard/emulation/qemu-q35/chromeos.c:
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... PS1, Line 22: int get_write_protect_state(void)
This function is defined and used elsewhere so I can't really change it here.
Done
https://review.coreboot.org/c/coreboot/+/39837/1/src/mainboard/emulation/qem... PS1, Line 31: int get_recovery_mode_switch(void)
same as above. these functions are already defined and used by chromeos code.
Done
Arthur Heymans has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 2: Code-Review-1
(2 comments)
https://review.coreboot.org/c/coreboot/+/39837/2/src/mainboard/emulation/qem... File src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd:
https://review.coreboot.org/c/coreboot/+/39837/2/src/mainboard/emulation/qem... PS2, Line 3: 0x1c0000 the fmap sections below do not add up to this.
https://review.coreboot.org/c/coreboot/+/39837/2/src/mainboard/emulation/qem... PS2, Line 5: 0x14ffc0 You can omit the size to make sure it automatically fills up the parent section.
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 2: -Code-Review
Duncan Laurie has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 2:
(2 comments)
https://review.coreboot.org/c/coreboot/+/39837/2/src/mainboard/emulation/qem... File src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd:
https://review.coreboot.org/c/coreboot/+/39837/2/src/mainboard/emulation/qem... PS2, Line 3: 0x1c0000
the fmap sections below do not add up to this.
Done
https://review.coreboot.org/c/coreboot/+/39837/2/src/mainboard/emulation/qem... PS2, Line 5: 0x14ffc0
You can omit the size to make sure it automatically fills up the parent section.
Done
Hello build bot (Jenkins), Furquan Shaikh, Patrick Georgi, Martin Roth, Paul Menzel, Arthur Heymans, Patrick Rudolph,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/39837
to look at the new patch set (#3).
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
mb/emulation/qemu-q35: Enable CHROMEOS as an option
Allow Chrome OS to be enabled for this QEMU target. By default this does not change anything unless it is selected in the build configuration, but it makes it possible.
Native VGA init is not forced when Chrome OS is enabled because the drm-bochs driver does not work with chrome (even the latest upstream kernel driver with drm atomic support) but it does work with virtio. The coreboot graphics init needs to match what is selected with qemu (with -vga std or -vga virtio) which in turn will determine which kernel driver is used.
A second FMAP is added with both RW-A and RW-B regions which is required by chromeos.
Recovery mode can be entered by supplying a custom fw_cfg option when launching qemu: -fw_cfg name=opt/cros/recovery,string=1
Change-Id: I24b4532ea961e68558663292c99d121f0a30ce3b Signed-off-by: Duncan Laurie dlaurie@google.com --- M src/mainboard/emulation/qemu-q35/Kconfig M src/mainboard/emulation/qemu-q35/Makefile.inc A src/mainboard/emulation/qemu-q35/chromeos.c A src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd 4 files changed, 95 insertions(+), 3 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/37/39837/3
Patrick Georgi has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
Patch Set 3: Code-Review+2
Patrick Georgi has submitted this change. ( https://review.coreboot.org/c/coreboot/+/39837 )
Change subject: mb/emulation/qemu-q35: Enable CHROMEOS as an option ......................................................................
mb/emulation/qemu-q35: Enable CHROMEOS as an option
Allow Chrome OS to be enabled for this QEMU target. By default this does not change anything unless it is selected in the build configuration, but it makes it possible.
Native VGA init is not forced when Chrome OS is enabled because the drm-bochs driver does not work with chrome (even the latest upstream kernel driver with drm atomic support) but it does work with virtio. The coreboot graphics init needs to match what is selected with qemu (with -vga std or -vga virtio) which in turn will determine which kernel driver is used.
A second FMAP is added with both RW-A and RW-B regions which is required by chromeos.
Recovery mode can be entered by supplying a custom fw_cfg option when launching qemu: -fw_cfg name=opt/cros/recovery,string=1
Change-Id: I24b4532ea961e68558663292c99d121f0a30ce3b Signed-off-by: Duncan Laurie dlaurie@google.com Reviewed-on: https://review.coreboot.org/c/coreboot/+/39837 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Patrick Georgi pgeorgi@google.com --- M src/mainboard/emulation/qemu-q35/Kconfig M src/mainboard/emulation/qemu-q35/Makefile.inc A src/mainboard/emulation/qemu-q35/chromeos.c A src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd 4 files changed, 95 insertions(+), 3 deletions(-)
Approvals: build bot (Jenkins): Verified Patrick Georgi: Looks good to me, approved
diff --git a/src/mainboard/emulation/qemu-q35/Kconfig b/src/mainboard/emulation/qemu-q35/Kconfig index ee64060..31aa3d8 100644 --- a/src/mainboard/emulation/qemu-q35/Kconfig +++ b/src/mainboard/emulation/qemu-q35/Kconfig @@ -11,15 +11,16 @@ 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 + select MAINBOARD_FORCE_NATIVE_VGA_INIT if !CHROMEOS select MAINBOARD_HAS_LPC_TPM + select MAINBOARD_HAS_CHROMEOS
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 VBOOT_NO_BOARD_SUPPORT if !CHROMEOS select GBB_FLAG_DISABLE_LID_SHUTDOWN select GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC select GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC @@ -27,7 +28,8 @@
config FMDFILE string - default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwa-16M.fmd" if VBOOT_SLOTS_RW_A + default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwa-16M.fmd" if VBOOT_SLOTS_RW_A && !VBOOT_SLOTS_RW_AB + default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab-16M.fmd" if VBOOT_SLOTS_RW_AB
if VBOOT
diff --git a/src/mainboard/emulation/qemu-q35/Makefile.inc b/src/mainboard/emulation/qemu-q35/Makefile.inc index 133a213..e142d4d 100644 --- a/src/mainboard/emulation/qemu-q35/Makefile.inc +++ b/src/mainboard/emulation/qemu-q35/Makefile.inc @@ -10,3 +10,7 @@ ramstage-y += ../qemu-i440fx/fw_cfg.c ramstage-y += ../qemu-i440fx/memmap.c ramstage-y += ../qemu-i440fx/northbridge.c + +verstage-$(CONFIG_CHROMEOS) += chromeos.c +verstage-$(CONFIG_CHROMEOS) += ../qemu-i440fx/fw_cfg.c +ramstage-$(CONFIG_CHROMEOS) += chromeos.c diff --git a/src/mainboard/emulation/qemu-q35/chromeos.c b/src/mainboard/emulation/qemu-q35/chromeos.c new file mode 100644 index 0000000..50e48ca --- /dev/null +++ b/src/mainboard/emulation/qemu-q35/chromeos.c @@ -0,0 +1,58 @@ +/* + * This file is part of the coreboot project. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include <boot/coreboot_tables.h> +#include <vendorcode/google/chromeos/chromeos.h> +#include "../qemu-i440fx/fw_cfg.h" + +void fill_lb_gpios(struct lb_gpios *gpios) +{ + struct lb_gpio chromeos_gpios[] = { + {-1, ACTIVE_HIGH, 1, "lid"}, + {-1, ACTIVE_HIGH, 0, "power"}, + {-1, ACTIVE_HIGH, gfx_get_init_done(), "oprom"}, + {-1, ACTIVE_HIGH, 0, "EC in RW"}, + }; + lb_add_gpios(gpios, chromeos_gpios, ARRAY_SIZE(chromeos_gpios)); +} + +int get_write_protect_state(void) +{ + return 0; +} + +/* + * Enable recovery mode with fw_cfg option to qemu: + * -fw_cfg name=opt/cros/recovery,string=1 + */ +int get_recovery_mode_switch(void) +{ + FWCfgFile f; + + if (!fw_cfg_check_file(&f, "opt/cros/recovery")) { + uint8_t rec_mode; + if (f.size != 1) { + printk(BIOS_ERR, "opt/cros/recovery invalid size %d\n", f.size); + return 0; + } + fw_cfg_get(f.select, &rec_mode, f.size); + if (rec_mode == '1') { + printk(BIOS_INFO, "Recovery is enabled.\n"); + return 1; + } + } + + return 0; +} + +static const struct cros_gpio cros_gpios[] = { + CROS_GPIO_REC_AL(CROS_GPIO_VIRTUAL, "QEMU"), +}; + +void mainboard_chromeos_acpi_generate(void) +{ + chromeos_acpi_gpio_generate(cros_gpios, ARRAY_SIZE(cros_gpios)); +} diff --git a/src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd b/src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd new file mode 100644 index 0000000..fcbfa95 --- /dev/null +++ b/src/mainboard/emulation/qemu-q35/vboot-rwab-16M.fmd @@ -0,0 +1,28 @@ +FLASH@0xff000000 0x1000000 { + SI_BIOS 0x1000000 { + RW_SECTION_A 0x1c0000 { + VBLOCK_A 0x10000 + FW_MAIN_A(CBFS) + RW_FWID_A 0x40 + } + RW_SECTION_B 0x1c0000 { + VBLOCK_B 0x10000 + FW_MAIN_B(CBFS) + RW_FWID_B 0x40 + } + RW_SHARED 0x4000 { + SHARED_DATA 0x2000 + VBLOCK_DEV 0x2000 + } + RW_VPD(PRESERVE) 0x1000 + RW_LEGACY(CBFS) 0x10000 + WP_RO { + FMAP 0x800 + RO_FRID 0x40 + RO_PADDING 0x7c0 + RO_VPD(PRESERVE) 0x1000 + GBB 0x1e000 + COREBOOT(CBFS) + } + } +}