[coreboot] New patch to review for coreboot: a8d447a ELOG: Fix reporting of developer/recovery modes

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Tue Jul 24 01:43:07 CEST 2012


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

-gerrit

commit a8d447a324ef126fab9dce1d1f8268fb97d24b72
Author: Duncan Laurie <dlaurie at chromium.org>
Date:   Mon Jul 16 12:47:45 2012 -0700

    ELOG: Fix reporting of developer/recovery modes
    
    Recent changes in EC/Vboot/U-boot have completely broken
    the logging of developer and recovery modes.
    
    Recovery mode may not be in VBNV, so if that is zero and
    yet we are in recovery mode then assume it is there because
    the button/key was pressed.
    
    Since there may not be any actual developer mode switch
    we look if option rom is loaded and the system is not
    in recovery mode and consider that as developer mode.
    
    Change-Id: I70104877b24de477217e1ff5b3a019aef22343ec
    Signed-off-by: Duncan Laurie <dlaurie at chromium.org>
---
 src/include/elog.h                    |    1 +
 src/vendorcode/google/chromeos/gnvs.c |    9 ++++++---
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/include/elog.h b/src/include/elog.h
index 5a84c75..488549e 100644
--- a/src/include/elog.h
+++ b/src/include/elog.h
@@ -104,6 +104,7 @@ struct elog_event_data_wake {
 /* Chrome OS related events */
 #define ELOG_TYPE_CROS_DEVELOPER_MODE     0xa0
 #define ELOG_TYPE_CROS_RECOVERY_MODE      0xa1
+#define  ELOG_CROS_RECOVERY_MODE_BUTTON    0x02
 
 /* Management Engine Events */
 #define ELOG_TYPE_MANAGEMENT_ENGINE       0xa2
diff --git a/src/vendorcode/google/chromeos/gnvs.c b/src/vendorcode/google/chromeos/gnvs.c
index c8ccfe4..2e9975c 100644
--- a/src/vendorcode/google/chromeos/gnvs.c
+++ b/src/vendorcode/google/chromeos/gnvs.c
@@ -37,11 +37,14 @@ void chromeos_init_vboot(chromeos_acpi_t *chromeos)
 	memcpy(vboot_data->mehh, me_hash_saved, sizeof(vboot_data->mehh));
 
 #if CONFIG_ELOG
-	if (developer_mode_enabled())
+	if (developer_mode_enabled() ||
+	    (vboot_wants_oprom() && !recovery_mode_enabled()))
 		elog_add_event(ELOG_TYPE_CROS_DEVELOPER_MODE);
-	if (recovery_mode_enabled())
+	if (recovery_mode_enabled()) {
+		int reason = get_recovery_mode_from_vbnv();
 		elog_add_event_byte(ELOG_TYPE_CROS_RECOVERY_MODE,
-				    get_recovery_mode_from_vbnv());
+			    reason ? reason : ELOG_CROS_RECOVERY_MODE_BUTTON);
+	}
 #endif
 }
 




More information about the coreboot mailing list