Some little fixes and add some modules support.
Xiaofei Tan (3): rasdaemon: Fix the issue of command option -r for hip08 rasdaemon: Fix some print format issues for hisi common error section rasdaemon: Add some modules supported by hisi common error section
non-standard-hisi_hip08.c | 6 +++--- non-standard-hisilicon.c | 32 +++++++++++++++++++++----------- 2 files changed, 24 insertions(+), 14 deletions(-)
It will record event even the option -r is not provided for hip08. It is not right, and fix it.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- non-standard-hisi_hip08.c | 6 +++--- non-standard-hisilicon.c | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/non-standard-hisi_hip08.c b/non-standard-hisi_hip08.c index ebf03e1..9092183 100644 --- a/non-standard-hisi_hip08.c +++ b/non-standard-hisi_hip08.c @@ -670,7 +670,7 @@ static int decode_hip08_oem_type1_error(struct ras_events *ras, }
#ifdef HAVE_SQLITE3 - if (!ev_decoder->stmt_dec_record) { + if (ras->record_events && !ev_decoder->stmt_dec_record) { if (ras_mc_add_vendor_table(ras, &ev_decoder->stmt_dec_record, &hip08_oem_type1_event_tab) != SQLITE_OK) { @@ -842,7 +842,7 @@ static int decode_hip08_oem_type2_error(struct ras_events *ras, }
#ifdef HAVE_SQLITE3 - if (!ev_decoder->stmt_dec_record) { + if (ras->record_events && !ev_decoder->stmt_dec_record) { if (ras_mc_add_vendor_table(ras, &ev_decoder->stmt_dec_record, &hip08_oem_type2_event_tab) != SQLITE_OK) { trace_seq_printf(s, @@ -992,7 +992,7 @@ static int decode_hip08_pcie_local_error(struct ras_events *ras, }
#ifdef HAVE_SQLITE3 - if (!ev_decoder->stmt_dec_record) { + if (ras->record_events && !ev_decoder->stmt_dec_record) { if (ras_mc_add_vendor_table(ras, &ev_decoder->stmt_dec_record, &hip08_pcie_local_event_tab) != SQLITE_OK) { trace_seq_printf(s, diff --git a/non-standard-hisilicon.c b/non-standard-hisilicon.c index a6f5e78..3fccff6 100644 --- a/non-standard-hisilicon.c +++ b/non-standard-hisilicon.c @@ -77,6 +77,9 @@ void record_vendor_data(struct ras_ns_ev_decoder *ev_decoder, enum hisi_oem_data_type data_type, int id, int64_t data, const char *text) { + if (ev_decoder->stmt_dec_record == NULL) + return; + switch (data_type) { case HISI_OEM_DATA_TYPE_INT: sqlite3_bind_int(ev_decoder->stmt_dec_record, id, data); @@ -94,6 +97,9 @@ int step_vendor_data_tab(struct ras_ns_ev_decoder *ev_decoder, const char *name) { int rc;
+ if (ev_decoder->stmt_dec_record == NULL) + return 0; + rc = sqlite3_step(ev_decoder->stmt_dec_record); if (rc != SQLITE_OK && rc != SQLITE_DONE) log(TERM, LOG_ERR,
It is not right to use '%d' to print uint8_t and uint16_t, although there is no function issue. Change to use '%hhu' and '%hu' separately.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- non-standard-hisilicon.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/non-standard-hisilicon.c b/non-standard-hisilicon.c index 3fccff6..f9c7bd4 100644 --- a/non-standard-hisilicon.c +++ b/non-standard-hisilicon.c @@ -198,7 +198,7 @@ static const char* get_soc_desc(uint8_t soc_id) static void decode_module(struct hisi_event *event, uint8_t module_id) { if (module_id >= sizeof(module_name)/sizeof(char *)) - HISI_SNPRINTF(event->error_msg, "module=unknown(id=%d) ", module_id); + HISI_SNPRINTF(event->error_msg, "module=unknown(id=%hhu) ", module_id); else HISI_SNPRINTF(event->error_msg, "module=%s ", module_name[module_id]); } @@ -207,36 +207,36 @@ static void decode_hisi_common_section_hdr(struct ras_ns_ev_decoder *ev_decoder, const struct hisi_common_error_section *err, struct hisi_event *event) { - HISI_SNPRINTF(event->error_msg, "[ table_version=%d", err->version); + HISI_SNPRINTF(event->error_msg, "[ table_version=%hhu", err->version); if (err->val_bits & BIT(HISI_COMMON_VALID_SOC_ID)) HISI_SNPRINTF(event->error_msg, "soc=%s", get_soc_desc(err->soc_id));
if (err->val_bits & BIT(HISI_COMMON_VALID_SOCKET_ID)) - HISI_SNPRINTF(event->error_msg, "socket_id=%d", err->socket_id); + HISI_SNPRINTF(event->error_msg, "socket_id=%hhu", err->socket_id);
if (err->val_bits & BIT(HISI_COMMON_VALID_TOTEM_ID)) - HISI_SNPRINTF(event->error_msg, "totem_id=%d", err->totem_id); + HISI_SNPRINTF(event->error_msg, "totem_id=%hhu", err->totem_id);
if (err->val_bits & BIT(HISI_COMMON_VALID_NIMBUS_ID)) - HISI_SNPRINTF(event->error_msg, "nimbus_id=%d", err->nimbus_id); + HISI_SNPRINTF(event->error_msg, "nimbus_id=%hhu", err->nimbus_id);
if (err->val_bits & BIT(HISI_COMMON_VALID_SUBSYSTEM_ID)) - HISI_SNPRINTF(event->error_msg, "subsystem_id=%d", err->subsystem_id); + HISI_SNPRINTF(event->error_msg, "subsystem_id=%hhu", err->subsystem_id);
if (err->val_bits & BIT(HISI_COMMON_VALID_MODULE_ID)) decode_module(event, err->module_id);
if (err->val_bits & BIT(HISI_COMMON_VALID_SUBMODULE_ID)) - HISI_SNPRINTF(event->error_msg, "submodule_id=%d", err->submodule_id); + HISI_SNPRINTF(event->error_msg, "submodule_id=%hhu", err->submodule_id);
if (err->val_bits & BIT(HISI_COMMON_VALID_CORE_ID)) - HISI_SNPRINTF(event->error_msg, "core_id=%d", err->core_id); + HISI_SNPRINTF(event->error_msg, "core_id=%hhu", err->core_id);
if (err->val_bits & BIT(HISI_COMMON_VALID_PORT_ID)) - HISI_SNPRINTF(event->error_msg, "port_id=%d", err->port_id); + HISI_SNPRINTF(event->error_msg, "port_id=%hhu", err->port_id);
if (err->val_bits & BIT(HISI_COMMON_VALID_ERR_TYPE)) - HISI_SNPRINTF(event->error_msg, "err_type=%d", err->err_type); + HISI_SNPRINTF(event->error_msg, "err_type=%hu", err->err_type);
if (err->val_bits & BIT(HISI_COMMON_VALID_PCIE_INFO)) HISI_SNPRINTF(event->error_msg, "pcie_device_id=%04x:%02x:%02x.%x",
Add some modules supported by hisi common error section. Besides, HHA is the module for some old platform, and it takes the same place of MATA, so remove it.
Signed-off-by: Xiaofei Tan tanxiaofei@huawei.com --- non-standard-hisilicon.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/non-standard-hisilicon.c b/non-standard-hisilicon.c index f9c7bd4..1432163 100644 --- a/non-standard-hisilicon.c +++ b/non-standard-hisilicon.c @@ -184,7 +184,11 @@ static const char* module_name[] = { "SEC", "RDE", "MEE", - "HHA", + "L4D", + "Tsensor", + "ROH", + "BTC", + "HILINK" };
static const char* get_soc_desc(uint8_t soc_id)