From 5c88c6f2d797b7fbcbf844a79356fcc833eb5338 Mon Sep 17 00:00:00 2001 From: Duncan Laurie Date: Sat, 1 Sep 2012 14:00:23 -0700 Subject: elog: add extended management engine event We are seeing ME disabled and ME error events on some devices and this extended info can help with debug. Also fix a potential issue where if the log does manage to get completely full it will never try to shrink it because the only call to shrink the log happens after a successful event write. Add a check at elog init time to shrink the log size. Change-Id: Ib81dc231f6a004b341900374e6c07962cc292031 Signed-off-by: Duncan Laurie Reviewed-on: http://review.coreboot.org/1739 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer --- src/southbridge/intel/bd82x6x/me.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) (limited to 'src/southbridge/intel/bd82x6x/me.c') diff --git a/src/southbridge/intel/bd82x6x/me.c b/src/southbridge/intel/bd82x6x/me.c index 3b7f3428bc..b9aff37d5c 100644 --- a/src/southbridge/intel/bd82x6x/me.c +++ b/src/southbridge/intel/bd82x6x/me.c @@ -568,10 +568,6 @@ static me_bios_path intel_me_path(device_t dev) /* Check and dump status */ intel_me_status(&hfs, &gmes); - /* Check for valid firmware */ - if (hfs.fpt_bad) - return ME_ERROR_BIOS_PATH; - /* Check Current Working State */ switch (hfs.working_state) { case ME_HFS_CWS_NORMAL: @@ -598,10 +594,27 @@ static me_bios_path intel_me_path(device_t dev) break; } - /* Check for any error code */ - if (hfs.error_code) + /* Check for any error code and valid firmware */ + if (hfs.error_code || hfs.fpt_bad) path = ME_ERROR_BIOS_PATH; +#if CONFIG_ELOG + if (path != ME_NORMAL_BIOS_PATH) { + struct elog_event_data_me_extended data = { + .current_working_state = hfs.working_state, + .operation_state = hfs.operation_state, + .operation_mode = hfs.operation_mode, + .error_code = hfs.error_code, + .progress_code = gmes.progress_code, + .current_pmevent = gmes.current_pmevent, + .current_state = gmes.current_state, + }; + elog_add_event_byte(ELOG_TYPE_MANAGEMENT_ENGINE, path); + elog_add_event_raw(ELOG_TYPE_MANAGEMENT_ENGINE_EXT, + &data, sizeof(data)); + } +#endif + return path; } @@ -728,9 +741,6 @@ static void intel_me_init(device_t dev) case ME_RECOVERY_BIOS_PATH: case ME_DISABLE_BIOS_PATH: case ME_FIRMWARE_UPDATE_BIOS_PATH: -#if CONFIG_ELOG - elog_add_event_byte(ELOG_TYPE_MANAGEMENT_ENGINE, path); -#endif break; } } -- cgit v1.2.3