[coreboot-gerrit] New patch to review for coreboot: vboot: check vb2_shared_data flags for manual recovery

Patrick Georgi (pgeorgi@google.com) gerrit at coreboot.org
Tue Oct 27 19:07:29 CET 2015


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

-gerrit

commit 2e3ca30dee47b72be0526a6d499a3330b79b0287
Author: Daisuke Nojiri <dnojiri at chromium.org>
Date:   Wed Oct 21 13:31:44 2015 -0700

    vboot: check vb2_shared_data flags for manual recovery
    
    vboot handoff should look at flags in struct vb2_shared_data when
    translating flags to VBSD_BOOT_REC_SWITCH_ON because
    VBSD_BOOT_REC_SWITCH_ON is supposed to indicate whether manual recovery was
    triggered or not while vb2_sd->recovery_reason will be able to provide
    that information only in some cases after CL:307586 is checked in.
    
    For example, this fixes a recovery loop problem: Without this fix,
    vb2_sd->recovery_reason won't be set to VB2_RECOVERY_RO_MANUAL when user
    hits esc+refresh+power at 'broken' screen. In the next boot,
    recovery_reason will be set to whatever reason which caused 'broken'
    screen. So, if we check recovery_reason == VB2_RECOVERY_RO_MANUAL, we
    won't set vb_sd->flags to VBSD_BOOT_REC_SWITCH_ON. That'll cause a
    recovery loop because VbBootRecovery traps us again in the 'broken'
    screen after not seeing VBSD_BOOT_REC_SWITCH_ON.
    
    BUG=chromium:501060
    BRANCH=tot
    TEST=test_that -b veyron_jerry suite:faft_bios
    
    Change-Id: I69a50c71d93ab311c1f7d4cfcd7d454ca1189586
    Signed-off-by: Patrick Georgi <pgeorgi at chromium.org>
    Original-Commit-Id: d9679b02f6d21ed903bb02e107badb0fbf7da46c
    Original-Change-Id: I3da642ff2d05c097d10db303fc8ab3358e10a5c7
    Original-Signed-off-by: Daisuke Nojiri <dnojiri at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/307946
    Original-Reviewed-by: Randall Spangler <rspangler at chromium.org>
---
 src/vendorcode/google/chromeos/vboot2/vboot_handoff.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/vendorcode/google/chromeos/vboot2/vboot_handoff.c b/src/vendorcode/google/chromeos/vboot2/vboot_handoff.c
index ec95726..9c3d27d 100644
--- a/src/vendorcode/google/chromeos/vboot2/vboot_handoff.c
+++ b/src/vendorcode/google/chromeos/vboot2/vboot_handoff.c
@@ -66,7 +66,7 @@ static void fill_vboot_handoff(struct vboot_handoff *vboot_handoff,
 
 	if (vb2_sd->recovery_reason) {
 		vb_sd->firmware_index = 0xFF;
-		if (vb2_sd->recovery_reason == VB2_RECOVERY_RO_MANUAL)
+		if (vb2_sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY)
 			vb_sd->flags |= VBSD_BOOT_REC_SWITCH_ON;
 		*oflags |= VB_INIT_OUT_ENABLE_RECOVERY;
 		*oflags |= VB_INIT_OUT_CLEAR_RAM;



More information about the coreboot-gerrit mailing list