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@chromium.org> Original-Commit-Id: 4a1c0b861017ca25229b1042c4b37dda33e869f9 Original-Change-Id: I4103779790e1a8a53ecabffd4316724035928ce6 Original-Signed-off-by: Julius Werner <jwerner@chromium.org> Original-Reviewed-on: https://chromium-review.googlesource.com/246715 Original-Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: http://review.coreboot.org/9503 Tested-by: build bot (Jenkins) Reviewed-by: Julius Werner <jwerner@chromium.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
parent
5d686229e8
commit
efae69a4ef
|
@ -611,15 +611,17 @@ int elog_init(void)
|
||||||
" shrink size %d\n", total_size,
|
" shrink size %d\n", total_size,
|
||||||
CONFIG_ELOG_FULL_THRESHOLD, CONFIG_ELOG_SHRINK_SIZE);
|
CONFIG_ELOG_FULL_THRESHOLD, CONFIG_ELOG_SHRINK_SIZE);
|
||||||
|
|
||||||
/* Log a clear event if necessary */
|
elog_initialized = ELOG_INITIALIZED;
|
||||||
if (event_count == 0)
|
|
||||||
elog_add_event_word(ELOG_TYPE_LOG_CLEAR, total_size);
|
|
||||||
|
|
||||||
/* Shrink the log if we are getting too full */
|
/* Shrink the log if we are getting too full */
|
||||||
if (next_event_offset >= CONFIG_ELOG_FULL_THRESHOLD)
|
if (next_event_offset >= CONFIG_ELOG_FULL_THRESHOLD)
|
||||||
if (elog_shrink() < 0)
|
if (elog_shrink() < 0)
|
||||||
return -1;
|
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__)
|
#if !defined(__SMM__)
|
||||||
/* Log boot count event except in S3 resume */
|
/* Log boot count event except in S3 resume */
|
||||||
#if CONFIG_ELOG_BOOT_COUNT == 1
|
#if CONFIG_ELOG_BOOT_COUNT == 1
|
||||||
|
|
Loading…
Reference in New Issue