[coreboot-gerrit] Patch set updated for coreboot: 794d133 chromeos: vboot_loader: Add support for SW_WP_ENABLED flag

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Wed Dec 17 19:56:00 CET 2014


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/7750

-gerrit

commit 794d133da2a24e7db259598cf1d53e0949064966
Author: Shawn Nematbakhsh <shawnn at chromium.org>
Date:   Fri Mar 14 13:57:32 2014 -0700

    chromeos: vboot_loader: Add support for SW_WP_ENABLED flag
    
    Set VB_INIT_FLAG_SW_WP_ENABLED according to the status returned by an
    optional platform / mainboard function vboot_get_sw_write_protect().
    
    BUG=chrome-os-partner:26777
    TEST=Manual on Rambi with all patches in sequence:
    `crossystem sw_wpsw_boot` prints 0
    `flashrom --wp-enable` and reboot
    `crossystem sw_wpsw_boot` prints 1
    BRANCH=Rambi
    
    Original-Change-Id: Ifb852d75cc106d10120cfee0a396b0662282051a
    Original-Signed-off-by: Shawn Nematbakhsh <shawnn at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/190096
    Original-Reviewed-by: Aaron Durbin <adurbin at chromium.org>
    (cherry picked from commit c4668fc8a9ab31d9cf876b3d9ad3405756d4d683)
    Signed-off-by: Marc Jones <marc.jones at se-eng.com>
    
    Change-Id: Idace325439958f6b490d2e6705d55e95305c4b2a
---
 src/vendorcode/google/chromeos/chromeos.h      | 4 ++++
 src/vendorcode/google/chromeos/vboot_handoff.c | 6 ++++++
 src/vendorcode/google/chromeos/vboot_loader.c  | 2 ++
 3 files changed, 12 insertions(+)

diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h
index 6e3b2da..7192f33 100644
--- a/src/vendorcode/google/chromeos/chromeos.h
+++ b/src/vendorcode/google/chromeos/chromeos.h
@@ -35,6 +35,9 @@ void save_vbnv(const uint8_t *vbnv_copy);
 void init_chromeos(int bootmode);
 
 struct romstage_handoff;
+
+/* TODO(shawnn): Remove these CONFIGs and define default weak functions
+ * that can be overridden in the platform / MB code. */
 #if CONFIG_VBOOT_VERIFY_FIRMWARE
 /*
  * This is a dual purpose routine. If dest is non-NULL the region at
@@ -57,6 +60,7 @@ static inline int vboot_get_handoff_info(void **addr, uint32_t *size)
 }
 static inline int vboot_skip_display_init(void) { return 0; }
 #endif
+int vboot_get_sw_write_protect(void);
 
 #include "gnvs.h"
 struct device;
diff --git a/src/vendorcode/google/chromeos/vboot_handoff.c b/src/vendorcode/google/chromeos/vboot_handoff.c
index 71ac5cd..1a66f56 100644
--- a/src/vendorcode/google/chromeos/vboot_handoff.c
+++ b/src/vendorcode/google/chromeos/vboot_handoff.c
@@ -93,6 +93,12 @@ void *vboot_get_region(uintptr_t offset_addr, size_t size, void *dest)
        }
 }
 
+int __attribute((weak)) vboot_get_sw_write_protect(void)
+{
+	// Can be implemented by a platform / mainboard
+	return 0;
+}
+
 static void *vboot_get_payload(size_t *len)
 {
 	struct vboot_handoff *vboot_handoff;
diff --git a/src/vendorcode/google/chromeos/vboot_loader.c b/src/vendorcode/google/chromeos/vboot_loader.c
index 8e0babe..240b6b6 100644
--- a/src/vendorcode/google/chromeos/vboot_loader.c
+++ b/src/vendorcode/google/chromeos/vboot_loader.c
@@ -249,6 +249,8 @@ static void vboot_invoke_wrapper(struct vboot_handoff *vboot_handoff)
 		*iflags |= VB_INIT_FLAG_REC_BUTTON_PRESSED;
 	if (get_write_protect_state())
 		*iflags |= VB_INIT_FLAG_WP_ENABLED;
+	if (vboot_get_sw_write_protect())
+		*iflags |= VB_INIT_FLAG_SW_WP_ENABLED;
 	if (CONFIG_VIRTUAL_DEV_SWITCH)
 		*iflags |= VB_INIT_FLAG_VIRTUAL_DEV_SWITCH;
 	if (CONFIG_EC_SOFTWARE_SYNC) {



More information about the coreboot-gerrit mailing list