mb/lenovo/*: Add support for VBOOT on 12MiB devices

Enable VBOOT support on all devices that have a 12 MiB flash, using
RW_MAIN_A + RW_MAIN_B partition, allowing the use of tianocore payload
in both RW_MAIN_A, RW_MAIN_B and WP_RO.

* Add VBNV section to cmos.layout
* Add FMAP for VBOOT
* Select Kconfigs for VBOOT
* Enable VBOOT_SLOTS_RW_AB by default

The VBNV is intentionally not covered by the CMOS checksum.

Tested on x230 and T440p.

Change-Id: I8a35a06ece1e9d57a2ef23970e61ae26fafce543
Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com>
Signed-off-by: Jonas Moehle <ad-min@mailbox.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/32617
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Peter Lemenkov <lemenkov@gmail.com>
Reviewed-by:  Felix Singer <felixsinger@posteo.net>
This commit is contained in:
Jonas Moehle
2019-12-25 03:40:51 +01:00
committed by Patrick Georgi
parent 5e5e789f9b
commit 1f088c8757
21 changed files with 392 additions and 0 deletions

View File

@@ -26,6 +26,25 @@ config BOARD_SPECIFIC_OPTIONS
select INTEL_GMA_HAVE_VBT
select MAINBOARD_USES_IFD_GBE_REGION
config VBOOT
select VBOOT_VBNV_CMOS
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
select HAS_RECOVERY_MRC_CACHE
config VBOOT_SLOTS_RW_AB
default y
config VBOOT_VBNV_OFFSET
hex
default 0x2a
config FMDFILE
string
default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab.fmd" if VBOOT
config MAINBOARD_DIR
string
default "lenovo/t430"

View File

@@ -80,6 +80,9 @@ entries
#437 3 r 0 unused
440 8 h 0 volume
# VBOOT
448 128 r 0 vbnv
# SandyBridge MRC Scrambler Seed values
896 32 r 0 mrc_scrambler_seed
928 32 r 0 mrc_scrambler_seed_s3

View File

@@ -0,0 +1,34 @@
FLASH@0xff400000 0xc00000 {
SI_ALL@0x0 0x500000 {
SI_DESC@0x0 0x1000
SI_GBE@0x1000 0x2000
SI_ME
}
SI_BIOS@0x500000 0x700000 {
RW_SECTION_A 0x280000 {
VBLOCK_A 0x10000
FW_MAIN_A(CBFS)
RW_FWID_A 0x40
}
RW_SECTION_B 0x280000 {
VBLOCK_B 0x10000
FW_MAIN_B(CBFS)
RW_FWID_B 0x40
}
UNIFIED_MRC_CACHE@0x500000 0x20000 {
RECOVERY_MRC_CACHE@0x0 0x10000
RW_MRC_CACHE@0x10000 0x10000
}
RW_VPD(PRESERVE) 0x1000
SMMSTORE(PRESERVE)@0x521000 0x40000
WP_RO {
FMAP 0x800
RO_FRID 0x40
RO_PADDING 0x7c0
RO_VPD(PRESERVE) 0x1000
GBB 0x1e000
COREBOOT(CBFS)
}
}
}

View File

@@ -27,6 +27,25 @@ config BOARD_SPECIFIC_OPTIONS
# Workaround for EC/KBC IRQ1.
select SERIRQ_CONTINUOUS_MODE
config VBOOT
select VBOOT_VBNV_CMOS
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
select HAS_RECOVERY_MRC_CACHE
config VBOOT_SLOTS_RW_AB
default y
config VBOOT_VBNV_OFFSET
hex
default 0x2a
config FMDFILE
string
default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab.fmd" if VBOOT
config MAINBOARD_DIR
string
default "lenovo/t430s"

View File

@@ -80,6 +80,9 @@ entries
#436 4 r 0 unused
440 8 h 0 volume
# VBOOT
448 128 r 0 vbnv
# SandyBridge MRC Scrambler Seed values
896 32 r 0 mrc_scrambler_seed
928 32 r 0 mrc_scrambler_seed_s3

View File

@@ -0,0 +1,34 @@
FLASH@0xff400000 0xc00000 {
SI_ALL@0x0 0x500000 {
SI_DESC@0x0 0x1000
SI_GBE@0x1000 0x2000
SI_ME
}
SI_BIOS@0x500000 0x700000 {
RW_SECTION_A 0x280000 {
VBLOCK_A 0x10000
FW_MAIN_A(CBFS)
RW_FWID_A 0x40
}
RW_SECTION_B 0x280000 {
VBLOCK_B 0x10000
FW_MAIN_B(CBFS)
RW_FWID_B 0x40
}
UNIFIED_MRC_CACHE@0x500000 0x20000 {
RECOVERY_MRC_CACHE@0x0 0x10000
RW_MRC_CACHE@0x10000 0x10000
}
RW_VPD(PRESERVE) 0x1000
SMMSTORE(PRESERVE)@0x521000 0x40000
WP_RO {
FMAP 0x800
RO_FRID 0x40
RO_PADDING 0x7c0
RO_VPD(PRESERVE) 0x1000
GBB 0x1e000
COREBOOT(CBFS)
}
}
}

View File

@@ -23,6 +23,25 @@ config BOARD_SPECIFIC_OPTIONS
select SYSTEM_TYPE_LAPTOP
select MAINBOARD_USES_IFD_GBE_REGION
config VBOOT
select VBOOT_VBNV_CMOS
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
select HAS_RECOVERY_MRC_CACHE
config VBOOT_SLOTS_RW_AB
default y
config VBOOT_VBNV_OFFSET
hex
default 0x2a
config FMDFILE
string
default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab.fmd" if VBOOT
config MAINBOARD_DIR
string
default "lenovo/t440p"

View File

@@ -73,6 +73,9 @@ entries
#437 3 r 0 unused
440 8 h 0 volume
# VBOOT
448 128 r 0 vbnv
# coreboot config options: check sums
984 16 h 0 check_sum

View File

@@ -0,0 +1,34 @@
FLASH@0xff400000 0xc00000 {
SI_ALL@0x0 0x500000 {
SI_DESC@0x0 0x1000
SI_GBE@0x1000 0x2000
SI_ME
}
SI_BIOS@0x500000 0x700000 {
RW_SECTION_A 0x280000 {
VBLOCK_A 0x10000
FW_MAIN_A(CBFS)
RW_FWID_A 0x40
}
RW_SECTION_B 0x280000 {
VBLOCK_B 0x10000
FW_MAIN_B(CBFS)
RW_FWID_B 0x40
}
UNIFIED_MRC_CACHE@0x500000 0x20000 {
RECOVERY_MRC_CACHE@0x0 0x10000
RW_MRC_CACHE@0x10000 0x10000
}
RW_VPD(PRESERVE) 0x1000
SMMSTORE(PRESERVE)@0x521000 0x40000
WP_RO {
FMAP 0x800
RO_FRID 0x40
RO_PADDING 0x7c0
RO_VPD(PRESERVE) 0x1000
GBB 0x1e000
COREBOOT(CBFS)
}
}
}

View File

@@ -28,6 +28,25 @@ config BOARD_LENOVO_BASEBOARD_T530
if BOARD_LENOVO_BASEBOARD_T530
config VBOOT
select VBOOT_VBNV_CMOS
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
select HAS_RECOVERY_MRC_CACHE
config VBOOT_SLOTS_RW_AB
default y
config VBOOT_VBNV_OFFSET
hex
default 0x2a
config FMDFILE
string
default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab.fmd" if VBOOT
config VARIANT_DIR
string
default "t530" if BOARD_LENOVO_T530

View File

@@ -81,6 +81,9 @@ entries
440 8 h 0 volume
# VBOOT
448 128 r 0 vbnv
# SandyBridge MRC Scrambler Seed values
896 32 r 0 mrc_scrambler_seed
928 32 r 0 mrc_scrambler_seed_s3

View File

@@ -0,0 +1,34 @@
FLASH@0xff400000 0xc00000 {
SI_ALL@0x0 0x500000 {
SI_DESC@0x0 0x1000
SI_GBE@0x1000 0x2000
SI_ME
}
SI_BIOS@0x500000 0x700000 {
RW_SECTION_A 0x280000 {
VBLOCK_A 0x10000
FW_MAIN_A(CBFS)
RW_FWID_A 0x40
}
RW_SECTION_B 0x280000 {
VBLOCK_B 0x10000
FW_MAIN_B(CBFS)
RW_FWID_B 0x40
}
UNIFIED_MRC_CACHE@0x500000 0x20000 {
RECOVERY_MRC_CACHE@0x0 0x10000
RW_MRC_CACHE@0x10000 0x10000
}
RW_VPD(PRESERVE) 0x1000
SMMSTORE(PRESERVE)@0x521000 0x40000
WP_RO {
FMAP 0x800
RO_FRID 0x40
RO_PADDING 0x7c0
RO_VPD(PRESERVE) 0x1000
GBB 0x1e000
COREBOOT(CBFS)
}
}
}

View File

@@ -21,6 +21,25 @@ config BOARD_SPECIFIC_OPTIONS
select SERIRQ_CONTINUOUS_MODE
select INTEL_GMA_HAVE_VBT
config VBOOT
select VBOOT_VBNV_CMOS
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
select HAS_RECOVERY_MRC_CACHE
config VBOOT_SLOTS_RW_AB
default y
config VBOOT_VBNV_OFFSET
hex
default 0x2a
config FMDFILE
string
default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab.fmd" if VBOOT
config MAINBOARD_DIR
string
default "lenovo/x131e"

View File

@@ -79,6 +79,9 @@ entries
440 8 h 0 volume
# VBOOT
448 128 r 0 vbnv
# SandyBridge MRC Scrambler Seed values
896 32 r 0 mrc_scrambler_seed
928 32 r 0 mrc_scrambler_seed_s3

View File

@@ -0,0 +1,34 @@
FLASH@0xff400000 0xc00000 {
SI_ALL@0x0 0x500000 {
SI_DESC@0x0 0x1000
SI_GBE@0x1000 0x2000
SI_ME
}
SI_BIOS@0x500000 0x700000 {
RW_SECTION_A 0x280000 {
VBLOCK_A 0x10000
FW_MAIN_A(CBFS)
RW_FWID_A 0x40
}
RW_SECTION_B 0x280000 {
VBLOCK_B 0x10000
FW_MAIN_B(CBFS)
RW_FWID_B 0x40
}
UNIFIED_MRC_CACHE@0x500000 0x20000 {
RECOVERY_MRC_CACHE@0x0 0x10000
RW_MRC_CACHE@0x10000 0x10000
}
RW_VPD(PRESERVE) 0x1000
SMMSTORE(PRESERVE)@0x521000 0x40000
WP_RO {
FMAP 0x800
RO_FRID 0x40
RO_PADDING 0x7c0
RO_VPD(PRESERVE) 0x1000
GBB 0x1e000
COREBOOT(CBFS)
}
}
}

View File

@@ -26,6 +26,25 @@ config BOARD_SPECIFIC_OPTIONS
# Workaround for EC/KBC IRQ1.
select SERIRQ_CONTINUOUS_MODE
config VBOOT
select VBOOT_VBNV_CMOS
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
select HAS_RECOVERY_MRC_CACHE
config VBOOT_SLOTS_RW_AB
default y
config VBOOT_VBNV_OFFSET
hex
default 0x2a
config FMDFILE
string
default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab.fmd" if VBOOT
config MAINBOARD_DIR
string
default "lenovo/x1_carbon_gen1"

View File

@@ -80,6 +80,9 @@ entries
440 8 h 0 volume
# VBOOT
448 128 r 0 vbnv
# SandyBridge MRC Scrambler Seed values
896 32 r 0 mrc_scrambler_seed
928 32 r 0 mrc_scrambler_seed_s3

View File

@@ -0,0 +1,34 @@
FLASH@0xff400000 0xc00000 {
SI_ALL@0x0 0x500000 {
SI_DESC@0x0 0x1000
SI_GBE@0x1000 0x2000
SI_ME
}
SI_BIOS@0x500000 0x700000 {
RW_SECTION_A 0x280000 {
VBLOCK_A 0x10000
FW_MAIN_A(CBFS)
RW_FWID_A 0x40
}
RW_SECTION_B 0x280000 {
VBLOCK_B 0x10000
FW_MAIN_B(CBFS)
RW_FWID_B 0x40
}
UNIFIED_MRC_CACHE@0x500000 0x20000 {
RECOVERY_MRC_CACHE@0x0 0x10000
RW_MRC_CACHE@0x10000 0x10000
}
RW_VPD(PRESERVE) 0x1000
SMMSTORE(PRESERVE)@0x521000 0x40000
WP_RO {
FMAP 0x800
RO_FRID 0x40
RO_PADDING 0x7c0
RO_VPD(PRESERVE) 0x1000
GBB 0x1e000
COREBOOT(CBFS)
}
}
}

View File

@@ -27,6 +27,25 @@ config BOARD_SPECIFIC_OPTIONS
# Workaround for EC/KBC IRQ1.
select SERIRQ_CONTINUOUS_MODE
config VBOOT
select VBOOT_VBNV_CMOS
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
select HAS_RECOVERY_MRC_CACHE
config VBOOT_SLOTS_RW_AB
default y
config VBOOT_VBNV_OFFSET
hex
default 0x2a
config FMDFILE
string
default "src/mainboard/$(CONFIG_MAINBOARD_DIR)/vboot-rwab.fmd" if VBOOT
config MAINBOARD_DIR
string
default "lenovo/x230"

View File

@@ -80,6 +80,9 @@ entries
440 8 h 0 volume
# VBOOT
448 128 r 0 vbnv
# SandyBridge MRC Scrambler Seed values
896 32 r 0 mrc_scrambler_seed
928 32 r 0 mrc_scrambler_seed_s3

View File

@@ -0,0 +1,34 @@
FLASH@0xff400000 0xc00000 {
SI_ALL@0x0 0x500000 {
SI_DESC@0x0 0x1000
SI_GBE@0x1000 0x2000
SI_ME
}
SI_BIOS@0x500000 0x700000 {
RW_SECTION_A 0x280000 {
VBLOCK_A 0x10000
FW_MAIN_A(CBFS)
RW_FWID_A 0x40
}
RW_SECTION_B 0x280000 {
VBLOCK_B 0x10000
FW_MAIN_B(CBFS)
RW_FWID_B 0x40
}
UNIFIED_MRC_CACHE@0x500000 0x20000 {
RECOVERY_MRC_CACHE@0x0 0x10000
RW_MRC_CACHE@0x10000 0x10000
}
RW_VPD(PRESERVE) 0x1000
SMMSTORE(PRESERVE)@0x521000 0x40000
WP_RO {
FMAP 0x800
RO_FRID 0x40
RO_PADDING 0x7c0
RO_VPD(PRESERVE) 0x1000
GBB 0x1e000
COREBOOT(CBFS)
}
}
}