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>
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"