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>
This commit is contained in:
Patrick Rudolph 2020-02-28 13:11:13 +01:00 committed by Patrick Georgi
parent c8b0f31ca1
commit 1ee3dbc63b
6 changed files with 30 additions and 1 deletions

View File

@ -20,6 +20,7 @@ config BOARD_SPECIFIC_OPTIONS
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

View File

@ -21,6 +21,7 @@ config BOARD_SPECIFIC_OPTIONS
# 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

View File

@ -19,6 +19,7 @@ config BOARD_SPECIFIC_OPTIONS
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

View File

@ -23,6 +23,7 @@ config BOARD_SPECIFIC_OPTIONS
select SUPERIO_SMSC_LPC47N207
select DRIVERS_GENERIC_IOAPIC
select INTEL_INT15
select SANDYBRIDGE_VBOOT_IN_ROMSTAGE
config VBOOT
select VBOOT_VBNV_CMOS

View File

@ -19,6 +19,7 @@ config BOARD_SPECIFIC_OPTIONS
# 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

View File

@ -23,8 +23,32 @@ config NORTHBRIDGE_INTEL_SANDYBRIDGE
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"