Fix some issues:

1.Backport 4 patches from openEuler master branch.
2.Enable compilation of the feature memory fault prediction based on corrected error.
3.Fix changelog date error of this spec file.

Signed-off-by: Xiaofei Tan <tanxiaofei@huawei.com>
(cherry picked from commit beb85dd5cfd3920dee725abb2e07fffd13f3dc1c)
This commit is contained in:
Xiaofei Tan 2022-03-02 15:59:07 +08:00 committed by openeuler-sync-bot
parent cdc3865890
commit cefb2d1861
5 changed files with 259 additions and 3 deletions

View File

@ -0,0 +1,55 @@
From 44fa917e290255570772926a2a11fd5bee3af90c Mon Sep 17 00:00:00 2001
From: Xiaofei Tan <tanxiaofei@huawei.com>
Date: Mon, 11 Oct 2021 10:22:10 +0800
Subject: [PATCH 1/4] rasdaemon: Fix the issue of sprintf data type mismatch in
uuid_le()
The data type of sprintf called in the function uuid_le() is mismatch.
Arm64 compiler force it to unsigned char by default, and can work normally.
But if someone compile it with the option -fsigned-char, the function
can't work correctly.
Signed-off-by: Xiaofei Tan <tanxiaofei@huawei.com>
---
ras-extlog-handler.c | 2 +-
ras-non-standard-handler.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/ras-extlog-handler.c b/ras-extlog-handler.c
index 5fd3580..1834687 100644
--- a/ras-extlog-handler.c
+++ b/ras-extlog-handler.c
@@ -152,7 +152,7 @@ static char *uuid_le(const char *uu)
static const unsigned char le[16] = {3,2,1,0,5,4,7,6,8,9,10,11,12,13,14,15};
for (i = 0; i < 16; i++) {
- p += sprintf(p, "%.2x", uu[le[i]]);
+ p += sprintf(p, "%.2x", (unsigned char) uu[le[i]]);
switch (i) {
case 3:
case 5:
diff --git a/ras-non-standard-handler.c b/ras-non-standard-handler.c
index 6ccf5bc..6d5a6f8 100644
--- a/ras-non-standard-handler.c
+++ b/ras-non-standard-handler.c
@@ -36,7 +36,7 @@ static char *uuid_le(const char *uu)
static const unsigned char le[16] = {3,2,1,0,5,4,7,6,8,9,10,11,12,13,14,15};
for (i = 0; i < 16; i++) {
- p += sprintf(p, "%.2x", uu[le[i]]);
+ p += sprintf(p, "%.2x", (unsigned char) uu[le[i]]);
switch (i) {
case 3:
case 5:
@@ -61,7 +61,7 @@ static int uuid_le_cmp(const char *sec_type, const char *uuid2)
3, 2, 1, 0, 5, 4, 7, 6, 8, 9, 10, 11, 12, 13, 14, 15};
for (i = 0; i < 16; i++)
- p += sprintf(p, "%.2x", sec_type[le[i]]);
+ p += sprintf(p, "%.2x", (unsigned char) sec_type[le[i]]);
*p = 0;
return strncmp(uuid1, uuid2, 32);
}
--
2.33.0

View File

@ -0,0 +1,72 @@
From 6af26231fd58be578ea7d2ceb009fddf14c386a7 Mon Sep 17 00:00:00 2001
From: Xiaofei Tan <tanxiaofei@huawei.com>
Date: Mon, 1 Feb 2021 19:09:59 +0800
Subject: [PATCH 2/4] rasdaemon: Fix the issue of command option -r for hip08
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,
--
2.33.0

View File

@ -0,0 +1,76 @@
From 6ff3528ea696377fe1ec666839258abfcf8802b6 Mon Sep 17 00:00:00 2001
From: Xiaofei Tan <tanxiaofei@huawei.com>
Date: Fri, 20 Aug 2021 10:02:04 +0800
Subject: [PATCH 3/4] rasdaemon: Fix some print format issues for hisi common
error section
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",
--
2.33.0

View File

@ -0,0 +1,35 @@
From 31c1d5f335aa63fb02583eca8fe21a18fbcb865e Mon Sep 17 00:00:00 2001
From: Xiaofei Tan <tanxiaofei@huawei.com>
Date: Fri, 20 Aug 2021 10:39:12 +0800
Subject: [PATCH 4/4] rasdaemon: Add some modules supported by hisi common
error section
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)
--
2.33.0

View File

@ -1,6 +1,6 @@
Name: rasdaemon
Version: 0.6.7
Release: 2
Release: 3
License: GPLv2
Summary: Utility to get Platform Reliability, Availability and Serviceability (RAS) reports via the Kernel tracing events
URL: https://github.com/mchehab/rasdaemon.git
@ -25,6 +25,10 @@ Patch3: bugfix-fix-disk-error-log-storm.patch
Patch4: backport-configure.ac-fix-SYSCONFDEFDIR-default-value.patch
Patch5: 0001-Support-cpu-fault-isolation-for-corrected-errors.patch
Patch6: 0002-Support-cpu-fault-isolation-for-recoverable-errors.patch
Patch7: 0001-rasdaemon-Fix-the-issue-of-sprintf-data-type-mismatc.patch
Patch8: 0002-rasdaemon-Fix-the-issue-of-command-option-r-for-hip0.patch
Patch9: 0003-rasdaemon-Fix-some-print-format-issues-for-hisi-comm.patch
Patch10: 0004-rasdaemon-Add-some-modules-supported-by-hisi-common-.patch
%description
The rasdaemon program is a daemon which monitors the platform
@ -43,7 +47,7 @@ autoheader
libtoolize --automake --copy --debug --force
automake --add-missing
%ifarch %{arm} aarch64
%configure --enable-mce --enable-aer --enable-sqlite3 --enable-extlog --enable-abrt-report --enable-devlink --enable-diskerror --enable-non-standard --enable-hisi-ns-decode --enable-arm
%configure --enable-mce --enable-aer --enable-sqlite3 --enable-extlog --enable-abrt-report --enable-devlink --enable-diskerror --enable-non-standard --enable-hisi-ns-decode --enable-arm --enable-memory-failure --enable-memory-ce-pfa
%else
%configure --enable-mce --enable-aer --enable-sqlite3 --enable-extlog --enable-abrt-report --enable-devlink --enable-diskerror
%endif
@ -70,6 +74,20 @@ rm INSTALL %{buildroot}/usr/include/*.h
/usr/bin/systemctl enable rasdaemon.service >/dev/null 2>&1 || :
%changelog
* Wed Mar 2 2022 tanxiaofei<tanxiaofei@huawei.com> - 0.6.7-3
- Type:bugfix
- ID:NA
- SUG:NA
- DESC:
1. Backport 4 patches from openEuler master branch.
1) Fix the issue of sprintf data type mismatch in uuid_le()
2) Fix the issue of command option -r for hip08
3) Fix some print format issues for hisi common error section
4) Add some modules supported by hisi common error section
2.Enable compilation of the feature memory fault prediction based on
corrected error.
3.Fix changelog date error of this spec file.
* Wed Feb 23 2022 luoshengwei<luoshengwei@huawei.com> - 0.6.7-2
- Type:feature
- ID:NA
@ -79,7 +97,7 @@ rm INSTALL %{buildroot}/usr/include/*.h
* Wed Dec 8 2021 xujing <xujing99@huawei.com> - 0.6.7-1
- Update software to v0.6.7
* Sat July 29 2021 tanxiaofei<tanxiaofei@huawei.com> - 0.6.6-6
* Thu Jul 29 2021 tanxiaofei<tanxiaofei@huawei.com> - 0.6.6-6
- Type:feature
- ID:NA
- SUG:NA