eventlog: Add a log type for Chrome OS diagnostics

Add events for Chrome OS diagnostics in eventlog tool:
* ELOG_TYPE_CROS_DIAGNOSTICS(0xb6): diagnostics-related events
* ELOG_CROS_LAUNCH_DIAGNOSTICS(0x01): sub-type for diagnostics boot

These events are not added anywhere currently. They will be added in
another separate commit.

Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org>
Change-Id: I1b67fdb46f64db33f581cfb5635103c9f5bbb302
Reviewed-on: https://review.coreboot.org/c/coreboot/+/58795
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
This commit is contained in:
Hsuan Ting Chen 2021-11-01 19:14:01 +08:00 committed by Felix Held
parent b2a442ed59
commit a5cbe27148
2 changed files with 14 additions and 0 deletions

View File

@ -305,6 +305,10 @@ struct elog_event_mem_cache_update {
#define ELOG_TYPE_MI_HRPC 0xb4 #define ELOG_TYPE_MI_HRPC 0xb4
#define ELOG_TYPE_MI_HR 0xb5 #define ELOG_TYPE_MI_HR 0xb5
/* Chrome OS diagnostics-related events */
#define ELOG_TYPE_CROS_DIAGNOSTICS 0xb6
#define ELOG_CROS_LAUNCH_DIAGNOSTICS 0x01
struct elog_event_extended_event { struct elog_event_extended_event {
uint8_t event_type; uint8_t event_type;
uint32_t event_complement; uint32_t event_complement;

View File

@ -157,6 +157,7 @@ static void eventlog_print_type(const struct event_header *event)
{ELOG_TYPE_CR50_NEED_RESET, "cr50 Reset Required"}, {ELOG_TYPE_CR50_NEED_RESET, "cr50 Reset Required"},
{ELOG_TYPE_EC_DEVICE_EVENT, "EC Device"}, {ELOG_TYPE_EC_DEVICE_EVENT, "EC Device"},
{ELOG_TYPE_EXTENDED_EVENT, "Extended Event"}, {ELOG_TYPE_EXTENDED_EVENT, "Extended Event"},
{ELOG_TYPE_CROS_DIAGNOSTICS, "Diagnostics Mode"},
{ELOG_TYPE_EOL, "End of log"}, {ELOG_TYPE_EOL, "End of log"},
}; };
@ -533,6 +534,11 @@ static int eventlog_print_data(const struct event_header *event)
{0, NULL}, {0, NULL},
}; };
static const struct valstr cros_diagnostics_types[] = {
{ELOG_CROS_LAUNCH_DIAGNOSTICS, "Launch Diagnostics"},
{0, NULL},
};
switch (event->type) { switch (event->type) {
case ELOG_TYPE_LOG_CLEAR: { case ELOG_TYPE_LOG_CLEAR: {
const uint16_t *bytes = event_get_data(event); const uint16_t *bytes = event_get_data(event);
@ -614,6 +620,10 @@ static int eventlog_print_data(const struct event_header *event)
eventlog_printf("0x%X", ext_event->event_complement); eventlog_printf("0x%X", ext_event->event_complement);
break; break;
} }
case ELOG_TYPE_CROS_DIAGNOSTICS: {
const uint8_t *type = event_get_data(event);
eventlog_printf("%s", val2str(*type, cros_diagnostics_types));
}
default: default:
break; break;
} }