[coreboot-gerrit] Patch set updated for coreboot: 556b5a5 elog: Fix regression that caused elog to omit "System boot" event

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Fri Apr 10 21:48:57 CEST 2015


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

-gerrit

commit 556b5a53c4a416fec2bf10d16fcdd542b2b6ac47
Author: Julius Werner <jwerner at chromium.org>
Date:   Thu Feb 5 12:55:45 2015 -0800

    elog: Fix regression that caused elog to omit "System boot" event
    
    CL:243671 moved the initialization of elog_initialized around, which is
    now unfortunately so late that the ELOG_TYPE_BOOT event gets omitted
    because the code believes the log to be broken at that time. Good thing
    we now have a FAFT test for these things that I had of course been too
    lazy to run. -.-
    
    The real reason for moving that line was to put it after any point in
    elog_init() that could still error out. The problem is that we might add
    the "cleared" event before we try to shrink (which can fail and cause an
    error)... but those two things cannot happen at the same time, so it
    should be okay to flip them around and mark the elog as initialized in
    between.
    
    BRANCH=none
    BUG=chrome-os-partner:35940
    TEST=Ran firmware_EventLog on a Pinky, manually confirmed that I once
    again get "System boot" events.
    
    Change-Id: I12dcf4a8e47d302f6cd317194912c31db502bbaf
    Signed-off-by: Stefan Reinauer <reinauer at chromium.org>
    Original-Commit-Id: 4a1c0b861017ca25229b1042c4b37dda33e869f9
    Original-Change-Id: I4103779790e1a8a53ecabffd4316724035928ce6
    Original-Signed-off-by: Julius Werner <jwerner at chromium.org>
    Original-Reviewed-on: https://chromium-review.googlesource.com/246715
    Original-Reviewed-by: Duncan Laurie <dlaurie at chromium.org>
---
 src/drivers/elog/elog.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/drivers/elog/elog.c b/src/drivers/elog/elog.c
index 76e8cf7..f5135d9 100644
--- a/src/drivers/elog/elog.c
+++ b/src/drivers/elog/elog.c
@@ -611,15 +611,17 @@ int elog_init(void)
 	       " shrink size %d\n", total_size,
 	       CONFIG_ELOG_FULL_THRESHOLD, CONFIG_ELOG_SHRINK_SIZE);
 
-	/* Log a clear event if necessary */
-	if (event_count == 0)
-		elog_add_event_word(ELOG_TYPE_LOG_CLEAR, total_size);
+	elog_initialized = ELOG_INITIALIZED;
 
 	/* Shrink the log if we are getting too full */
 	if (next_event_offset >= CONFIG_ELOG_FULL_THRESHOLD)
 		if (elog_shrink() < 0)
 			return -1;
 
+	/* Log a clear event if necessary */
+	if (event_count == 0)
+		elog_add_event_word(ELOG_TYPE_LOG_CLEAR, total_size);
+
 #if !defined(__SMM__)
 	/* Log boot count event except in S3 resume */
 #if CONFIG_ELOG_BOOT_COUNT == 1



More information about the coreboot-gerrit mailing list