Patrick Georgi submitted this change.

View Change

Approvals: build bot (Jenkins): Verified Arthur Heymans: Looks good to me, approved
nb/intel/sandybridge: Fix VBOOT

The VBOOT code can be compiled but it asserts with:
ASSERTION ERROR: file 'src/security/vboot/common.c', line 40

Start VBOOT in bootblock to fix the assertion.

Tested on Lenovo X220:
The assertion is gone, the platform boots again.

Change-Id: I48365e911b4f43aecba3b1f950178b7ceed5b2e9
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/39160
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
---
M src/mainboard/google/butterfly/Kconfig
M src/mainboard/google/parrot/Kconfig
M src/mainboard/google/stout/Kconfig
M src/mainboard/samsung/lumpy/Kconfig
M src/mainboard/samsung/stumpy/Kconfig
M src/northbridge/intel/sandybridge/Kconfig
6 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/src/mainboard/google/butterfly/Kconfig b/src/mainboard/google/butterfly/Kconfig
index 92fc236..33a840f 100644
--- a/src/mainboard/google/butterfly/Kconfig
+++ b/src/mainboard/google/butterfly/Kconfig
@@ -20,6 +20,7 @@
select HAVE_ME_BIN
select GFX_GMA_INTERNAL_IS_LVDS
select MAINBOARD_HAS_LIBGFXINIT
+ select SANDYBRIDGE_VBOOT_IN_ROMSTAGE

config VBOOT
select VBOOT_VBNV_CMOS
diff --git a/src/mainboard/google/parrot/Kconfig b/src/mainboard/google/parrot/Kconfig
index 0169bea..c5b680c 100644
--- a/src/mainboard/google/parrot/Kconfig
+++ b/src/mainboard/google/parrot/Kconfig
@@ -21,6 +21,7 @@
# This board also feature sandy-bridge CPU's so must have LVDS
select GFX_GMA_INTERNAL_IS_LVDS
select MAINBOARD_HAS_LIBGFXINIT
+ select SANDYBRIDGE_VBOOT_IN_ROMSTAGE

config VBOOT
select VBOOT_VBNV_CMOS
diff --git a/src/mainboard/google/stout/Kconfig b/src/mainboard/google/stout/Kconfig
index a77964b..f945cc0 100644
--- a/src/mainboard/google/stout/Kconfig
+++ b/src/mainboard/google/stout/Kconfig
@@ -19,6 +19,7 @@
select GFX_GMA_INTERNAL_IS_LVDS
select HAVE_IFD_BIN
select HAVE_ME_BIN
+ select SANDYBRIDGE_VBOOT_IN_ROMSTAGE

config VBOOT
select VBOOT_VBNV_CMOS
diff --git a/src/mainboard/samsung/lumpy/Kconfig b/src/mainboard/samsung/lumpy/Kconfig
index f87ba8f..56304c9 100644
--- a/src/mainboard/samsung/lumpy/Kconfig
+++ b/src/mainboard/samsung/lumpy/Kconfig
@@ -23,6 +23,7 @@
select SUPERIO_SMSC_LPC47N207
select DRIVERS_GENERIC_IOAPIC
select INTEL_INT15
+ select SANDYBRIDGE_VBOOT_IN_ROMSTAGE

config VBOOT
select VBOOT_VBNV_CMOS
diff --git a/src/mainboard/samsung/stumpy/Kconfig b/src/mainboard/samsung/stumpy/Kconfig
index 5deb0f0..67cc67e 100644
--- a/src/mainboard/samsung/stumpy/Kconfig
+++ b/src/mainboard/samsung/stumpy/Kconfig
@@ -19,6 +19,7 @@
# not on board, should be made selectable.
select SUPERIO_SMSC_LPC47N207
select INTEL_INT15
+ select SANDYBRIDGE_VBOOT_IN_ROMSTAGE

config VBOOT
select VBOOT_VBNV_CMOS
diff --git a/src/northbridge/intel/sandybridge/Kconfig b/src/northbridge/intel/sandybridge/Kconfig
index 7a27d09..06fdc4a 100644
--- a/src/northbridge/intel/sandybridge/Kconfig
+++ b/src/northbridge/intel/sandybridge/Kconfig
@@ -23,8 +23,32 @@

if NORTHBRIDGE_INTEL_SANDYBRIDGE

+config SANDYBRIDGE_VBOOT_IN_ROMSTAGE
+ bool
+ default n
+ help
+ Selected by boards to force VBOOT_STARTS_IN_ROMSTAGE.
+
+config SANDYBRIDGE_VBOOT_IN_BOOTBLOCK
+ depends on VBOOT
+ depends on !SANDYBRIDGE_VBOOT_IN_ROMSTAGE
+ bool "Start verstage in bootblock"
+ default y
+ select VBOOT_STARTS_IN_BOOTBLOCK
+ select VBOOT_SEPARATE_VERSTAGE
+ help
+ Sandy Bridge can either start verstage in a separate stage
+ right after the bootblock has run or it can start it
+ after romstage for compatibility reasons.
+ Sandy Bridge however uses a mrc.bin to initialize memory which
+ needs to be located at a fixed offset. Therefore even with
+ a separate verstage starting after the bootblock that same
+ binary is used meaning a jump is made from RW to the RO region
+ and back to the RW region after the binary is done.
+
config VBOOT
- select VBOOT_STARTS_IN_ROMSTAGE
+ select VBOOT_MUST_REQUEST_DISPLAY
+ select VBOOT_STARTS_IN_ROMSTAGE if !SANDYBRIDGE_VBOOT_IN_BOOTBLOCK

config USE_NATIVE_RAMINIT
bool "Use native raminit"

To view, visit change 39160. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-Change-Id: I48365e911b4f43aecba3b1f950178b7ceed5b2e9
Gerrit-Change-Number: 39160
Gerrit-PatchSet: 4
Gerrit-Owner: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: Arthur Heymans <arthur@aheymans.xyz>
Gerrit-Reviewer: Patrick Georgi <pgeorgi@google.com>
Gerrit-Reviewer: Patrick Rudolph <patrick.rudolph@9elements.com>
Gerrit-Reviewer: Patrick Rudolph <siro@das-labor.org>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-MessageType: merged