[coreboot-gerrit] Patch set updated for coreboot: google/chromeos/vboot2: defer clearing rec mode switch

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Mon Feb 8 12:32:28 CET 2016


Patrick Georgi (pgeorgi at google.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13604

-gerrit

commit f4be3b5767ff249ca8055616831e8c8d8f8107d9
Author: Aaron Durbin <adurbin at chromium.org>
Date:   Mon Feb 1 17:37:16 2016 -0600

    google/chromeos/vboot2: defer clearing rec mode switch
    
    Certain platforms query the recovery mode switch more than just within
    vboot during the boot flow. Therefore, it's important that the first call to
    get_recovery_mode_switch() is consistent through memory training because
    certain platforms use the recovery mode switch to take different action
    for memory training. Therefore, defer the clearing of the rec mode
    switch to a place when it's known that memory is up and online.
    
    BUG=chrome-os-partner:44827
    BRANCH=glados
    TEST=Three finger salute is honored on chell by retraining memory.
    
    Change-Id: I26ea51de7ffa2fe75b9ef1401fe92f9aec2b4567
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: 6b0de9369242e50c7ff3b164cf1ced0642c7b087
    Original-Change-Id: Ia7709c7346d1222e314bf3ac7e4335a63e9a5144
    Original-Signed-off-by: Aaron Durbin <adurbin at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/325120
    Original-Reviewed-by: Duncan Laurie <dlaurie at chromium.org>
---
 src/vendorcode/google/chromeos/vboot2/vboot_handoff.c | 11 +++++++++++
 src/vendorcode/google/chromeos/vboot2/vboot_logic.c   |  1 -
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/vendorcode/google/chromeos/vboot2/vboot_handoff.c b/src/vendorcode/google/chromeos/vboot2/vboot_handoff.c
index dbcc4da..c89e9a0 100644
--- a/src/vendorcode/google/chromeos/vboot2/vboot_handoff.c
+++ b/src/vendorcode/google/chromeos/vboot2/vboot_handoff.c
@@ -152,6 +152,17 @@ void vboot_fill_handoff(void)
 
 	/* needed until we finish transtion to vboot2 for kernel verification */
 	fill_vboot_handoff(vh, sd);
+
+	/*
+	 * The recovery mode switch is cleared (typically backed by EC) here
+	 * to allow multiple queries to get_recovery_mode_switch() and have
+	 * them return consistent results during the verified boot path as well
+	 * as dram initialization. x86 systems ignore the saved dram settings
+	 * in the recovery path in order to start from a clean slate. Therefore
+	 * clear the state here since this function is called when memory
+	 * is known to be up.
+	 */
+	clear_recovery_mode_switch();
 }
 
 /*
diff --git a/src/vendorcode/google/chromeos/vboot2/vboot_logic.c b/src/vendorcode/google/chromeos/vboot2/vboot_logic.c
index fec368c..a4829c0 100644
--- a/src/vendorcode/google/chromeos/vboot2/vboot_logic.c
+++ b/src/vendorcode/google/chromeos/vboot2/vboot_logic.c
@@ -316,7 +316,6 @@ void verstage_main(void)
 		ctx.flags |= VB2_CONTEXT_FORCE_DEVELOPER_MODE;
 
 	if (get_recovery_mode_switch()) {
-		clear_recovery_mode_switch();
 		ctx.flags |= VB2_CONTEXT_FORCE_RECOVERY_MODE;
 		if (IS_ENABLED(CONFIG_VBOOT_DISABLE_DEV_ON_RECOVERY))
 			ctx.flags |= VB2_DISABLE_DEVELOPER_MODE;



More information about the coreboot-gerrit mailing list