Resolves: RHEL-11478, Enable light path diagnostics for RTAS events
This commit is contained in:
parent
b200305443
commit
6b71fdc084
@ -0,0 +1,63 @@
|
|||||||
|
commit 0fa486dbe800bea05c81fc33eee197873573fefb
|
||||||
|
Author: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||||
|
Date: Fri Sep 8 12:35:14 2023 +0530
|
||||||
|
|
||||||
|
ppc64-diag/lp_diag: Enable light path diagnostics for RTAS events
|
||||||
|
|
||||||
|
Currently, Light Path Diagnostics support is enabled only for OS and
|
||||||
|
Enclosure type events. Enable light path diagnostics support for RTAS
|
||||||
|
type events by turning on only the high priority FRU callouts.
|
||||||
|
|
||||||
|
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||||
|
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||||
|
|
||||||
|
diff --git a/lpd/lp_diag.c b/lpd/lp_diag.c
|
||||||
|
index e6f5d3c..e67db02 100644
|
||||||
|
--- a/lpd/lp_diag.c
|
||||||
|
+++ b/lpd/lp_diag.c
|
||||||
|
@@ -37,6 +37,8 @@
|
||||||
|
#include "lp_util.h"
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
+static int rtas_event;
|
||||||
|
+
|
||||||
|
/* FRU callout priority as defined in PAPR+
|
||||||
|
*
|
||||||
|
* Note: Order of the priority is important!
|
||||||
|
@@ -173,8 +175,10 @@ service_event_supported(struct sl_event *event)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
- case SL_TYPE_BMC:
|
||||||
|
case SL_TYPE_RTAS:
|
||||||
|
+ rtas_event = 1;
|
||||||
|
+ break;
|
||||||
|
+ case SL_TYPE_BMC:
|
||||||
|
case SL_TYPE_BASIC:
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
@@ -446,14 +450,20 @@ parse_service_event(int event_id)
|
||||||
|
attn_loc = &list[0];
|
||||||
|
|
||||||
|
if (operating_mode == LED_MODE_LIGHT_PATH) {
|
||||||
|
- if (event->callouts)
|
||||||
|
+ if (event->callouts) {
|
||||||
|
/* Run over FRU callout priority in order and
|
||||||
|
* enable fault indicator
|
||||||
|
*/
|
||||||
|
- for (i = 0; FRU_CALLOUT_PRIORITY[i]; i++)
|
||||||
|
+ if (!rtas_event) {
|
||||||
|
+ for (i = 0; FRU_CALLOUT_PRIORITY[i]; i++)
|
||||||
|
+ rc = event_fru_callout(event->callouts, list,
|
||||||
|
+ FRU_CALLOUT_PRIORITY[i],
|
||||||
|
+ &attn_on);
|
||||||
|
+ } else {
|
||||||
|
rc = event_fru_callout(event->callouts, list,
|
||||||
|
- FRU_CALLOUT_PRIORITY[i],
|
||||||
|
- &attn_on);
|
||||||
|
+ 'H', &attn_on);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
else {
|
||||||
|
/* No callout list, enable check log indicator */
|
||||||
|
indicator_log_write("Empty callout list");
|
136
ppc64-diag-2.7.9-moving-trim_trail_space-function.patch
Normal file
136
ppc64-diag-2.7.9-moving-trim_trail_space-function.patch
Normal file
@ -0,0 +1,136 @@
|
|||||||
|
commit c507319d1b5f0286d67e08a3598949ca4144f475
|
||||||
|
Author: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||||
|
Date: Fri Sep 8 12:35:12 2023 +0530
|
||||||
|
|
||||||
|
ppc64-diag: Move trim_trail_space() function to common/utils.c
|
||||||
|
|
||||||
|
Currently, trim_trail_space() function is used in diags/diag_nvme.c file
|
||||||
|
to be able to trim trailing white spaces from a given location code. Allow
|
||||||
|
code reusability by moving the trim_trail_space() function from
|
||||||
|
diags/diag_nvme.c to common/utils.c.
|
||||||
|
|
||||||
|
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||||
|
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||||
|
|
||||||
|
diff --git a/common/utils.c b/common/utils.c
|
||||||
|
index 0312943..2349878 100644
|
||||||
|
--- a/common/utils.c
|
||||||
|
+++ b/common/utils.c
|
||||||
|
@@ -24,9 +24,34 @@
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <assert.h>
|
||||||
|
+#include <ctype.h>
|
||||||
|
|
||||||
|
#include "utils.h"
|
||||||
|
|
||||||
|
+/* trim_trail_space - Trim trailing white spaces from string
|
||||||
|
+ * @string - Null terminated string to remove white spaces from
|
||||||
|
+ *
|
||||||
|
+ * This function will alter the passed string by removing any trailing white spaces and null
|
||||||
|
+ * terminating it at that point.
|
||||||
|
+ */
|
||||||
|
+void trim_trail_space(char *string)
|
||||||
|
+{
|
||||||
|
+ char *end;
|
||||||
|
+ size_t length;
|
||||||
|
+
|
||||||
|
+ if (string == NULL)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ length = strlen(string);
|
||||||
|
+ if (length == 0)
|
||||||
|
+ return;
|
||||||
|
+
|
||||||
|
+ end = string + length - 1;
|
||||||
|
+ while (end >= string && isspace(*end))
|
||||||
|
+ end--;
|
||||||
|
+ *(end + 1) = '\0';
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
static int process_child(char *argv[], int pipefd[])
|
||||||
|
{
|
||||||
|
int nullfd;
|
||||||
|
diff --git a/common/utils.h b/common/utils.h
|
||||||
|
index ec2072d..2459b5b 100644
|
||||||
|
--- a/common/utils.h
|
||||||
|
+++ b/common/utils.h
|
||||||
|
@@ -18,6 +18,7 @@
|
||||||
|
#ifndef UTILS_H
|
||||||
|
#define UTILS_H
|
||||||
|
|
||||||
|
+void trim_trail_space(char *string);
|
||||||
|
FILE *spopen(char **, pid_t *);
|
||||||
|
int spclose(FILE *, pid_t);
|
||||||
|
|
||||||
|
diff --git a/diags/Makefile.am b/diags/Makefile.am
|
||||||
|
index 4ac81b8..dea0a79 100644
|
||||||
|
--- a/diags/Makefile.am
|
||||||
|
+++ b/diags/Makefile.am
|
||||||
|
@@ -13,7 +13,8 @@ encl_led_h_files = diags/encl_led.h \
|
||||||
|
$(diag_common_h_files)
|
||||||
|
|
||||||
|
diag_nvme_h_files = diags/diag_nvme.h \
|
||||||
|
- common/platform.h
|
||||||
|
+ common/platform.h \
|
||||||
|
+ common/utils.h
|
||||||
|
|
||||||
|
sbin_PROGRAMS += diags/diag_encl diags/encl_led diags/diag_nvme
|
||||||
|
|
||||||
|
@@ -41,6 +42,7 @@ diags_encl_led_SOURCES = diags/encl_led.c \
|
||||||
|
|
||||||
|
diags_diag_nvme_SOURCES = diags/diag_nvme.c \
|
||||||
|
common/platform.c \
|
||||||
|
+ common/utils.c \
|
||||||
|
$(diag_nvme_h_files)
|
||||||
|
diags_diag_nvme_LDADD = -lservicelog -lm
|
||||||
|
diags_diag_nvme_CFLAGS = $(AM_CFLAGS) -Wno-stringop-truncation
|
||||||
|
diff --git a/diags/diag_nvme.c b/diags/diag_nvme.c
|
||||||
|
index 2a78034..2606f2c 100644
|
||||||
|
--- a/diags/diag_nvme.c
|
||||||
|
+++ b/diags/diag_nvme.c
|
||||||
|
@@ -27,6 +27,7 @@
|
||||||
|
#include <sys/utsname.h>
|
||||||
|
#include "diag_nvme.h"
|
||||||
|
#include "platform.h"
|
||||||
|
+#include "utils.h"
|
||||||
|
|
||||||
|
#define ITEM_DATA_LENGTH 255
|
||||||
|
#define MIN_HOURS_ON 720
|
||||||
|
@@ -71,7 +72,6 @@ static int raw_data_smart(unsigned char **raw_data, uint32_t *raw_data_len, stru
|
||||||
|
static int raw_data_vpd(unsigned char **raw_data, uint32_t *raw_data_len, struct nvme_ibm_vpd *vpd);
|
||||||
|
static int regex_controller(char *controller_name, char *device_name);
|
||||||
|
static void set_notify(struct notify *notify, struct dictionary *dict, int num_elements);
|
||||||
|
-static void trim_trail_space(char *string);
|
||||||
|
static long double uint128_to_long_double(uint8_t *data);
|
||||||
|
|
||||||
|
int main(int argc, char *argv[]) {
|
||||||
|
@@ -1426,28 +1426,6 @@ extern void set_vpd_pcie_field(const char *keyword, const char *vpd_data, struct
|
||||||
|
strncpy(vpd->firmware_level, vpd_data, sizeof(vpd->firmware_level));
|
||||||
|
}
|
||||||
|
|
||||||
|
-/* trim_trail_space - Trim trailing white spaces from string
|
||||||
|
- * @string - Null terminated string to remove white spaces from
|
||||||
|
- *
|
||||||
|
- * This function will alter the passed string by removing any trailing white spaces and null
|
||||||
|
- * terminating it at that point.
|
||||||
|
- */
|
||||||
|
-static void trim_trail_space(char *string) {
|
||||||
|
- char *end;
|
||||||
|
- size_t length;
|
||||||
|
-
|
||||||
|
- if (string == NULL)
|
||||||
|
- return;
|
||||||
|
-
|
||||||
|
- if ((length = strlen(string)) == 0)
|
||||||
|
- return;
|
||||||
|
-
|
||||||
|
- end = string + length - 1;
|
||||||
|
- while (end >= string && isspace(*end))
|
||||||
|
- end--;
|
||||||
|
- *(end + 1) = '\0';
|
||||||
|
-}
|
||||||
|
-
|
||||||
|
static long double uint128_to_long_double(uint8_t *data) {
|
||||||
|
int i;
|
||||||
|
long double value = 0;
|
@ -0,0 +1,37 @@
|
|||||||
|
commit 476b0af7516b86c4d98cfa229fb0c6b856eea31d
|
||||||
|
Author: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||||
|
Date: Fri Sep 8 12:35:13 2023 +0530
|
||||||
|
|
||||||
|
ppc64-diag/lp_diag: Utilize trim_trail_space() function in event_fru_callout()
|
||||||
|
|
||||||
|
Update the event_fru_callout() function to use the trim_trail_space()
|
||||||
|
function to be able to remove any trailing spaces from the location code.
|
||||||
|
This change aims to address an issue where the presence of trailing spaces
|
||||||
|
in the location code results in failure to find an indicator for the given
|
||||||
|
location code. Use trim_trail_space() on the location to ensure that the
|
||||||
|
device location code is properly compared with the indicator list.
|
||||||
|
|
||||||
|
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||||
|
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||||
|
|
||||||
|
diff --git a/lpd/lp_diag.c b/lpd/lp_diag.c
|
||||||
|
index 988a021..e6f5d3c 100644
|
||||||
|
--- a/lpd/lp_diag.c
|
||||||
|
+++ b/lpd/lp_diag.c
|
||||||
|
@@ -35,6 +35,7 @@
|
||||||
|
#include "servicelog.h"
|
||||||
|
#include "indicator.h"
|
||||||
|
#include "lp_util.h"
|
||||||
|
+#include "utils.h"
|
||||||
|
|
||||||
|
/* FRU callout priority as defined in PAPR+
|
||||||
|
*
|
||||||
|
@@ -344,6 +345,8 @@ event_fru_callout(struct sl_callout *callouts, struct loc_code *list,
|
||||||
|
/* get FRUs nearest fault indicator */
|
||||||
|
strncpy(location, callout->location, LOCATION_LENGTH);
|
||||||
|
location[LOCATION_LENGTH - 1] = '\0';
|
||||||
|
+ trim_trail_space(location);
|
||||||
|
+
|
||||||
|
loc_led = get_fru_indicator(list, location, &truncated);
|
||||||
|
if (!loc_led) { /* No indicator found for the given loc code */
|
||||||
|
*attn_on = 1;
|
@ -1,6 +1,6 @@
|
|||||||
Name: ppc64-diag
|
Name: ppc64-diag
|
||||||
Version: 2.7.9
|
Version: 2.7.9
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
Summary: PowerLinux Platform Diagnostics
|
Summary: PowerLinux Platform Diagnostics
|
||||||
URL: https://github.com/power-ras/%{name}
|
URL: https://github.com/power-ras/%{name}
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
@ -37,6 +37,9 @@ Patch0: ppc64-diag-2.7.9-fedora.patch
|
|||||||
# upstream fixes
|
# upstream fixes
|
||||||
# rtas_errd: Handle multiple platform dumps
|
# rtas_errd: Handle multiple platform dumps
|
||||||
Patch10: ppc64-diag-2.7.9-handle_multiple_platform_dumps.patch
|
Patch10: ppc64-diag-2.7.9-handle_multiple_platform_dumps.patch
|
||||||
|
Patch11: ppc64-diag-2.7.9-moving-trim_trail_space-function.patch
|
||||||
|
Patch12: ppc64-diag-2.7.9-utilize-trim_trail_space-in-event_fru_callout.patch
|
||||||
|
Patch13: ppc64-diag-2.7.9-enable-light-path-diagnostics-for-RTAS-events.patch
|
||||||
|
|
||||||
%description
|
%description
|
||||||
This package contains various diagnostic tools for PowerLinux.
|
This package contains various diagnostic tools for PowerLinux.
|
||||||
@ -173,6 +176,10 @@ if [ "$1" = "0" ]; then # last uninstall
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sun Dec 10 2023 Than Ngo <than@redhat.com> - 2.7.9-3
|
||||||
|
- Enable light path diagnostics for RTAS events
|
||||||
|
Resolves: RHEL-11478
|
||||||
|
|
||||||
* Thu Jul 20 2023 Than Ngo <than@redhat.com> - 2.7.9-2
|
* Thu Jul 20 2023 Than Ngo <than@redhat.com> - 2.7.9-2
|
||||||
- Resolves: #2177948, handle multiple platform dumps
|
- Resolves: #2177948, handle multiple platform dumps
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user