Resolves: RHEL-102474, Update to 2.7.11
This commit is contained in:
parent
4f4f98a09e
commit
5f14218b3e
1
.gitignore
vendored
1
.gitignore
vendored
@ -16,3 +16,4 @@
|
||||
/ppc64-diag-2.7.7.tar.gz
|
||||
/ppc64-diag-2.7.8.tar.gz
|
||||
/ppc64-diag-2.7.9.tar.gz
|
||||
/ppc64-diag-2.7.11.tar.gz
|
||||
|
||||
@ -1,71 +0,0 @@
|
||||
commit db0c6d7974d7f8909878384d77ec02457759d6df
|
||||
Author: Nilay Shroff <nilay@linux.ibm.com>
|
||||
Date: Tue Jan 16 13:55:03 2024 +0530
|
||||
|
||||
diags/diag_nvme: call_home command fails on nvmf drive
|
||||
|
||||
The diag_nvme command needs to retrieve the VPD log page from NVMe for
|
||||
filling in the product data while generating the call-home event.
|
||||
However, call-home feature is supported for directly attached NVMe
|
||||
module. In the current diag_nvme implementation, if user doesn't
|
||||
provide NVMe device name for diagnostics then it(diag_nvme) loops
|
||||
through each NVMe moudle (directly connected to the system/LPAR as
|
||||
well as discovered over fabrics) and attempt retrieving the SMART log
|
||||
page as well as VPD page. Unfortunately, diag_nvme fails to retrieve
|
||||
the VPD page for NVMe connected over fabrics and that causes the
|
||||
diag_nvme to print "not-so-nice" failure messages on console.
|
||||
|
||||
Henec fixed the diag_nvme code so that for call-home event reporting,
|
||||
it skips the NVMe which is connected over fabrics and prints a
|
||||
"nice-message" informing the user that it's skipping diagnosting for
|
||||
NVMe module connected over fabrics. In a nutshell, with this fix now
|
||||
diag_nvme would only diagnose the NVMe module which is directtly
|
||||
attached (over PCIe) to the system.
|
||||
|
||||
Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
|
||||
|
||||
diff --git a/diags/diag_nvme.c b/diags/diag_nvme.c
|
||||
index c1c0a20..e86786c 100644
|
||||
--- a/diags/diag_nvme.c
|
||||
+++ b/diags/diag_nvme.c
|
||||
@@ -375,9 +375,40 @@ static int diagnose_nvme(char *device_name, struct notify *notify, char *file_pa
|
||||
char endurance_s[sizeof(vpd.endurance) + 1], capacity_s[sizeof(vpd.capacity)+1];
|
||||
uint64_t event_id;
|
||||
uint8_t severity;
|
||||
+ FILE *fp;
|
||||
+ char tr_file_path[PATH_MAX];
|
||||
uint32_t raw_data_len = 0;
|
||||
unsigned char *raw_data = NULL;
|
||||
|
||||
+ /*
|
||||
+ * Skip diag test if NVMe is connected over fabric
|
||||
+ */
|
||||
+ snprintf(tr_file_path, sizeof(tr_file_path),
|
||||
+ NVME_SYS_PATH"/%s/%s", device_name, "transport");
|
||||
+ fp = fopen(tr_file_path, "r");
|
||||
+ if (fp) {
|
||||
+ char buf[12];
|
||||
+ int n = fread(buf, 1, sizeof(buf), fp);
|
||||
+
|
||||
+ if (n) {
|
||||
+ /*
|
||||
+ * If NVMe transport is anything but pcie then skip the diag test
|
||||
+ */
|
||||
+ if (strncmp(buf, "pcie", 4) != 0) {
|
||||
+ fprintf(stdout, "Skipping diagnostics for nvmf : %s\n",
|
||||
+ device_name);
|
||||
+ fclose(fp);
|
||||
+ return 0;
|
||||
+ }
|
||||
+ }
|
||||
+ fclose(fp);
|
||||
+ } else {
|
||||
+ fprintf(stderr, "Skipping diagnostics for %s:\n"
|
||||
+ "Unable to find the nvme transport type\n",
|
||||
+ device_name);
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
tmp_rc = regex_controller(controller_name, device_name);
|
||||
if (tmp_rc != 0)
|
||||
return -1;
|
||||
@ -1,43 +0,0 @@
|
||||
diff --git a/lpd/usysident.c b/lpd/usysident.c
|
||||
index 8fee736..11a512b 100644
|
||||
--- a/lpd/usysident.c
|
||||
+++ b/lpd/usysident.c
|
||||
@@ -429,7 +429,7 @@ retry:
|
||||
* next elements in the list (which may match the device name);
|
||||
* for this we need to retry, re-starting on the next element.
|
||||
*/
|
||||
- if (dvalue && current->devname &&
|
||||
+ if (dvalue && current->devname[0] != '\0' &&
|
||||
strncmp(dvalue, current->devname, DEV_LENGTH)) {
|
||||
list_start = current->next;
|
||||
goto retry;
|
||||
diff --git a/opal_errd/extract_opal_dump.c b/opal_errd/extract_opal_dump.c
|
||||
index b7f365f..656899d 100644
|
||||
--- a/opal_errd/extract_opal_dump.c
|
||||
+++ b/opal_errd/extract_opal_dump.c
|
||||
@@ -77,8 +77,10 @@ static void dump_get_file_name(char *buf, int bsize, char *dfile,
|
||||
if (bsize >= DUMP_HDR_PREFIX_OFFSET + sizeof(uint16_t))
|
||||
*prefix_size = be16toh(*(uint16_t *)(buf + DUMP_HDR_PREFIX_OFFSET));
|
||||
|
||||
- if (bsize >= DUMP_HDR_FNAME_OFFSET + DUMP_MAX_FNAME_LEN)
|
||||
- strncpy(dfile, buf + DUMP_HDR_FNAME_OFFSET, dfile_size);
|
||||
+ if (bsize >= DUMP_HDR_FNAME_OFFSET + DUMP_MAX_FNAME_LEN) {
|
||||
+ strncpy(dfile, buf + DUMP_HDR_FNAME_OFFSET, dfile_size - 1);
|
||||
+ dfile[dfile_size - 1] = '\0';
|
||||
+ }
|
||||
else
|
||||
strncpy(dfile, "platform.dumpid.PARTIAL", dfile_size);
|
||||
|
||||
diff --git a/rtas_errd/extract_platdump.c b/rtas_errd/extract_platdump.c
|
||||
index 831e57e..50bac99 100644
|
||||
--- a/rtas_errd/extract_platdump.c
|
||||
+++ b/rtas_errd/extract_platdump.c
|
||||
@@ -220,7 +220,7 @@ extract_platform_dump(uint64_t dump_tag)
|
||||
char filename[DUMP_MAX_FNAME_LEN + 1];
|
||||
char pathname[PATH_MAX];
|
||||
char dump_err[RTAS_ERROR_LOG_MAX];
|
||||
- char dumpid[5];
|
||||
+ char dumpid[5] = "";
|
||||
int out=-1, rc, librtas_rc, dump_complete=0, ret=0;
|
||||
|
||||
msg("Dump tag: 0x%016LX", dump_tag);
|
||||
@ -1,72 +0,0 @@
|
||||
commit 565035cf98e97c7adda523221e109c676daf3430
|
||||
Author: Barnali Guha Thakurata <barnali@linux.ibm.com>
|
||||
Date: Mon Jan 8 20:16:19 2024 +0530
|
||||
|
||||
diag_encl help output update
|
||||
|
||||
This patch changes "scsi_enclosure" in the help output of diag_encl to
|
||||
"sgn ..." so that it matches with the naming convention in the
|
||||
manual page
|
||||
|
||||
Before patch:
|
||||
|
||||
diags/diag_encl --help
|
||||
Usage: diags/diag_encl [-h] [-V] [...] [<scsi_enclosure>]
|
||||
|
||||
[...]
|
||||
<scsi_enclosure>: the sg device on which to operate, such
|
||||
as sg7; if not specified, all such
|
||||
devices will be diagnosed
|
||||
man diags/man/diag_encl.8
|
||||
...
|
||||
SYNOPSIS
|
||||
diag_encl [-s [-c][-l]] [-v] [-f <path.pg2>] [sgn ...]
|
||||
diag_encl -d
|
||||
diag_encl --version
|
||||
diag_encl --help
|
||||
...
|
||||
|
||||
After patch:
|
||||
|
||||
diags/diag_encl --help
|
||||
Usage: diags/diag_encl [-h] [-V] [...] [-f <path.pg2>] [<sgn ...>]
|
||||
|
||||
[...]
|
||||
<sgn ...>: the scsi device on which to operate, such
|
||||
as sg7; if not specified, all such
|
||||
devices will be diagnosed
|
||||
|
||||
man diags/man/diag_encl.8
|
||||
...
|
||||
SYNOPSIS
|
||||
diag_encl [-s [-c][-l]] [-v] [-f <path.pg2>] [sgn ...]
|
||||
diag_encl -d
|
||||
diag_encl --version
|
||||
diag_encl --help
|
||||
...
|
||||
|
||||
Signed-off-by: Barnali Guha Thakurata <barnali@linux.ibm.com>
|
||||
|
||||
diff --git a/diags/diag_encl.c b/diags/diag_encl.c
|
||||
index 449b097..e0d86ce 100644
|
||||
--- a/diags/diag_encl.c
|
||||
+++ b/diags/diag_encl.c
|
||||
@@ -75,8 +75,7 @@ static struct {
|
||||
*/
|
||||
static void
|
||||
print_usage(const char *name) {
|
||||
- printf("Usage: %s [-h] [-V] [-s [-c][-l]] [-v] [-f <path.pg2>]"
|
||||
- " [<scsi_enclosure>]\n"
|
||||
+ printf("Usage: %s [-h] [-V] [-s [-c][-l]] [-v] [-f <path.pg2>] [<sgn ...>]\n"
|
||||
"\n\t-h: print this help message\n"
|
||||
"\t-s: generate serviceable events for any failures and\n"
|
||||
"\t write events to the servicelog\n"
|
||||
@@ -87,7 +86,7 @@ print_usage(const char *name) {
|
||||
"\t-V: print the version of the command and exit\n"
|
||||
"\t-f: for testing, read SES data from path.pg2 and VPD\n"
|
||||
"\t from path.vpd\n"
|
||||
- "\t<scsi_enclosure>: the sg device on which to operate, such\n"
|
||||
+ "\t<sgn ...>: the scsi device on which to operate, such\n"
|
||||
"\t as sg7; if not specified, all such\n"
|
||||
"\t devices will be diagnosed\n", name);
|
||||
}
|
||||
@ -1,62 +0,0 @@
|
||||
commit 420d5145230041e0256f0f950a36c4ecaed4d584
|
||||
Author: Barnali Guha Thakurata <barnali@linux.ibm.com>
|
||||
Date: Mon Jan 8 16:59:33 2024 +0530
|
||||
|
||||
diag_nvme help output update
|
||||
|
||||
This patch changes "nvme_devices" in the help output of diag_nvme to
|
||||
"nvmen ..." so that it matches with the naming convention in the
|
||||
manual page
|
||||
|
||||
Before patch:
|
||||
|
||||
diags/diag_nvme --help
|
||||
Usage: diags/diag_nvme [-h] [<nvme_devices>]
|
||||
-h or --help: print this help message
|
||||
<nvme_devices>: the NVMe devices on which to operate, for
|
||||
example nvme0; if not specified, all detected
|
||||
nvme devices will be diagnosed
|
||||
|
||||
man diags/man/diag_nvme.8
|
||||
...
|
||||
SYNOPSIS
|
||||
diag_nvme [<nvmen ...>]
|
||||
diag_nvme <nvmen>
|
||||
diag_nvme --help
|
||||
...
|
||||
|
||||
After patch:
|
||||
|
||||
diags/diag_nvme --help
|
||||
Usage: diags/diag_nvme [-h] [<nvmen ...>]
|
||||
-h or --help: print this help message
|
||||
<nvmen ...>: the NVMe devices on which to operate, for
|
||||
example nvme0; if not specified, all detected
|
||||
nvme devices will be diagnosed
|
||||
|
||||
man diags/man/diag_nvme.8
|
||||
...
|
||||
SYNOPSIS
|
||||
diag_nvme [<nvmen ...>]
|
||||
diag_nvme <nvmen>
|
||||
diag_nvme --help
|
||||
...
|
||||
|
||||
Signed-off-by: Barnali Guha Thakurata <barnali@linux.ibm.com>
|
||||
|
||||
diff --git a/diags/diag_nvme.c b/diags/diag_nvme.c
|
||||
index c1c0a20..2a74007 100644
|
||||
--- a/diags/diag_nvme.c
|
||||
+++ b/diags/diag_nvme.c
|
||||
@@ -989,9 +989,9 @@ extern int open_nvme(char *dev_path) {
|
||||
}
|
||||
|
||||
static void print_usage(char *command) {
|
||||
- printf("Usage: %s [-h] [<nvme_devices>]\n"
|
||||
+ printf("Usage: %s [-h] [<nvmen ...>]\n"
|
||||
"\t-h or --help: print this help message\n"
|
||||
- "\t<nvme_devices>: the NVMe devices on which to operate, for\n"
|
||||
+ "\t<nvmen ...>: the NVMe devices on which to operate, for\n"
|
||||
"\t example nvme0; if not specified, all detected\n"
|
||||
"\t nvme devices will be diagnosed\n", command);
|
||||
}
|
||||
@ -1,55 +0,0 @@
|
||||
commit 6bfa2ec7a7f424b018fd2e21a70e9d2f04041832
|
||||
Author: Barnali Guha Thakurata <barnali@linux.ibm.com>
|
||||
Date: Tue Oct 22 12:05:39 2024 +0530
|
||||
|
||||
Added Power11 support for diag_nvme
|
||||
|
||||
Without Patch:
|
||||
# diag_nvme nvme0
|
||||
diag_nvme is only supported in PowerVM LPARs and at least Power10 processors
|
||||
|
||||
With Patch:
|
||||
# diag_nvme nvme0
|
||||
Running diagnostics for nvme0
|
||||
|
||||
NVMe diag command completed successfully
|
||||
|
||||
Signed-off-by: Barnali Guha Thakurata <barnali@linux.ibm.com>
|
||||
Signed-off-by: Nilay Shroff <nilay@linux.ibm.com>
|
||||
Reviewed-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Tested-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
|
||||
diff --git a/common/platform.c b/common/platform.c
|
||||
index 1359adb..801b924 100644
|
||||
--- a/common/platform.c
|
||||
+++ b/common/platform.c
|
||||
@@ -96,6 +96,9 @@ get_processor(void)
|
||||
case PVR_POWER10:
|
||||
rc = POWER10;
|
||||
break;
|
||||
+ case PVR_POWER11:
|
||||
+ rc = POWER11;
|
||||
+ break;
|
||||
default:
|
||||
rc = PROCESSOR_UNKNOWN;
|
||||
break;
|
||||
diff --git a/common/platform.h b/common/platform.h
|
||||
index b265d1e..ae3ea21 100644
|
||||
--- a/common/platform.h
|
||||
+++ b/common/platform.h
|
||||
@@ -36,6 +36,7 @@
|
||||
#define PVR_POWER8 0x004D
|
||||
#define PVR_POWER9 0x004E
|
||||
#define PVR_POWER10 0x0080
|
||||
+#define PVR_POWER11 0x0082
|
||||
|
||||
enum {
|
||||
PLATFORM_UNKNOWN = 0,
|
||||
@@ -56,6 +57,7 @@ enum {
|
||||
POWER8,
|
||||
POWER9,
|
||||
POWER10,
|
||||
+ POWER11,
|
||||
};
|
||||
|
||||
extern const char *__platform_name[];
|
||||
@ -1,63 +0,0 @@
|
||||
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");
|
||||
@ -1,100 +0,0 @@
|
||||
commit d05654e5ec6f37cf6caa491fc7d95b336f9603e2
|
||||
Author: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Date: Mon Jul 10 13:43:21 2023 +0530
|
||||
|
||||
rtas_errd: Handle multiple platform dumps
|
||||
|
||||
Currently, whenever a new dump arrives, old dump file of that specific dump
|
||||
type is removed before writing the new dump out. Any dump file with the
|
||||
same prefix (dump type) gets deleted. This means only one set of dump files
|
||||
is saved, since only one dump file per dump type is saved.
|
||||
|
||||
Handle multiple dumps on Linux by allowing as many dumps to be offloaded
|
||||
until disk space is available. To do this, remove the function that checks
|
||||
for prefix size and removes old dump files. In the event of not enough
|
||||
disk space available, log an error to the user along with the dump tag.
|
||||
User will free up space and run extract_platdump tool using the dump tag
|
||||
provided in the error message to offload the dump. Error log can be viewed
|
||||
by the user by issuing 'journalctl -p err -t rtas_errd' command.
|
||||
|
||||
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||
|
||||
diff --git a/rtas_errd/dump.c b/rtas_errd/dump.c
|
||||
index cc50d91..494c322 100644
|
||||
--- a/rtas_errd/dump.c
|
||||
+++ b/rtas_errd/dump.c
|
||||
@@ -30,8 +30,10 @@
|
||||
#include <fcntl.h>
|
||||
#include <librtas.h>
|
||||
#include <librtasevent.h>
|
||||
+#include <syslog.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
+#include <sys/statvfs.h>
|
||||
#include "utils.h"
|
||||
#include "rtas_errd.h"
|
||||
|
||||
@@ -284,7 +286,9 @@ void
|
||||
check_platform_dump(struct event *event)
|
||||
{
|
||||
struct rtas_dump_scn *dump_scn;
|
||||
+ struct statvfs vfs;
|
||||
uint64_t dump_tag;
|
||||
+ uint64_t dump_size;
|
||||
char filename[DUMP_MAX_FNAME_LEN + 20], *pos;
|
||||
char *pathname = NULL;
|
||||
FILE *f;
|
||||
@@ -306,11 +310,34 @@ check_platform_dump(struct event *event)
|
||||
return;
|
||||
}
|
||||
|
||||
- /* Retrieve the dump */
|
||||
+ /* Retrieve the dump tag */
|
||||
dump_tag = dump_scn->id;
|
||||
dump_tag |= ((uint64_t)dump_scn->v6hdr.subtype << 32);
|
||||
dbg("Dump ID: 0x%016LX", dump_tag);
|
||||
|
||||
+ if (statvfs(d_cfg.platform_dump_path, &vfs) == -1) {
|
||||
+ log_msg(event, "statvfs() failed on %s: %s",
|
||||
+ d_cfg.platform_dump_path, strerror(errno));
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Retrieve the size of the platform dump */
|
||||
+ dump_size = dump_scn->size_hi;
|
||||
+ dump_size <<= 32;
|
||||
+ dump_size |= dump_scn->size_lo;
|
||||
+
|
||||
+ /* Check if there is sufficient space in the file system to store the dump */
|
||||
+ if (vfs.f_bavail * vfs.f_frsize < dump_size) {
|
||||
+ syslog(LOG_ERR, "Insufficient space in %s to store platform dump for dump ID: "
|
||||
+ "0x%016lX (required: %lu bytes, available: %lu bytes)",
|
||||
+ d_cfg.platform_dump_path, dump_tag, dump_size,
|
||||
+ (vfs.f_bavail * vfs.f_frsize));
|
||||
+ syslog(LOG_ERR, "After clearing space, run 'extract_platdump "
|
||||
+ "0x%016lX'.\n", dump_tag);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* Retrieve the dump */
|
||||
snprintf(tmp_sys_arg, 60, "0x%016LX", (long long unsigned int)dump_tag);
|
||||
system_args[0] = EXTRACT_PLATDUMP_CMD;
|
||||
system_args[1] = tmp_sys_arg;
|
||||
diff --git a/rtas_errd/extract_platdump.c b/rtas_errd/extract_platdump.c
|
||||
index fbe65b2..831e57e 100644
|
||||
--- a/rtas_errd/extract_platdump.c
|
||||
+++ b/rtas_errd/extract_platdump.c
|
||||
@@ -290,12 +290,6 @@ extract_platform_dump(uint64_t dump_tag)
|
||||
}
|
||||
}
|
||||
|
||||
- /*
|
||||
- * Before writing the new dump out, we need to see if any older
|
||||
- * dumps need to be removed first
|
||||
- */
|
||||
- remove_old_dumpfiles(filename, prefix_size);
|
||||
-
|
||||
/* Copy the dump off to the filesystem */
|
||||
pathname[0] = '\0';
|
||||
strcpy(pathname, d_cfg.platform_dump_path);
|
||||
@ -1,37 +0,0 @@
|
||||
commit 3ad587d20868f154bb7ab972ee7812add1380d7a
|
||||
Author: Greg Joyce <gjoyce@linux.vnet.ibm.com>
|
||||
Date: Wed Oct 11 12:10:40 2023 -0500
|
||||
|
||||
diag_nvme: improvements to status and err messages
|
||||
|
||||
Signed-off-by: Greg Joyce <gjoyce@linux.vnet.ibm.com>
|
||||
|
||||
diff --git a/diags/diag_nvme.c b/diags/diag_nvme.c
|
||||
index df191f2..00efec2 100644
|
||||
--- a/diags/diag_nvme.c
|
||||
+++ b/diags/diag_nvme.c
|
||||
@@ -166,9 +166,9 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
|
||||
if (rc == 0)
|
||||
- fprintf(stdout, "Command completed successfully\n");
|
||||
+ fprintf(stdout, "NVMe diag command completed successfully\n");
|
||||
else
|
||||
- fprintf(stderr, "Command failed, exiting with rc %d\n", rc);
|
||||
+ fprintf(stderr, "NVMe diag command failed with rc %d\n", rc);
|
||||
|
||||
return rc;
|
||||
}
|
||||
@@ -724,8 +724,11 @@ extern int get_smart_file(char *file_path, struct nvme_smart_log_page *log) {
|
||||
int num_elements = 0;
|
||||
struct dictionary dict[MAX_DICT_ELEMENTS];
|
||||
|
||||
- if ((num_elements = read_file_dict(file_path, dict, MAX_DICT_ELEMENTS)) < 0)
|
||||
+ if ((num_elements = read_file_dict(file_path, dict, MAX_DICT_ELEMENTS)) < 0) {
|
||||
+ fprintf(stderr, "read_file_dict failed: %s, rc % d\n",
|
||||
+ file_path, num_elements);
|
||||
return num_elements;
|
||||
+ }
|
||||
return set_smart_log_field(log, dict, num_elements);
|
||||
}
|
||||
|
||||
@ -1,136 +0,0 @@
|
||||
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;
|
||||
@ -1,24 +0,0 @@
|
||||
commit 316d2baf5dba0d00447a3ac49f2f95339dbdf5cd
|
||||
Author: Greg Joyce <gjoyce@linux.vnet.ibm.com>
|
||||
Date: Wed Nov 15 11:28:05 2023 -0600
|
||||
|
||||
nvme_call_home: remove -d and -f from usage message
|
||||
|
||||
The -d and -f weren't removed from the first line of the
|
||||
usage message.
|
||||
|
||||
Signed-off-by: Greg Joyce <gjoyce@linux.vnet.ibm.com>
|
||||
|
||||
diff --git a/diags/diag_nvme.c b/diags/diag_nvme.c
|
||||
index 00efec2..164afe1 100644
|
||||
--- a/diags/diag_nvme.c
|
||||
+++ b/diags/diag_nvme.c
|
||||
@@ -989,7 +989,7 @@ extern int open_nvme(char *dev_path) {
|
||||
}
|
||||
|
||||
static void print_usage(char *command) {
|
||||
- printf("Usage: %s [-h] [-d <file>] [-f <file>] [<nvme_devices>]\n"
|
||||
+ printf("Usage: %s [-h] [<nvme_devices>]\n"
|
||||
"\t-h or --help: print this help message\n"
|
||||
"\t<nvme_devices>: the NVMe devices on which to operate, for\n"
|
||||
"\t example nvme0; if not specified, all detected\n"
|
||||
@ -1,143 +0,0 @@
|
||||
commit 11cb2a44a59b63bdc23c94e386c4e2f43ea7eb61
|
||||
Author: Greg Joyce <gjoyce@linux.vnet.ibm.com>
|
||||
Date: Fri Sep 22 15:19:34 2023 -0500
|
||||
|
||||
nvme_call_home: remove -d and -f as visible options
|
||||
|
||||
The dump(-d) and file(-f) options have been removed as option in usage
|
||||
and also in the man page. The options are for internal test only and
|
||||
should not have been exposed. Also added some helpful status messages.
|
||||
|
||||
Signed-off-by: Greg Joyce <gjoyce@linux.vnet.ibm.com>
|
||||
|
||||
diff --git a/diags/diag_nvme.c b/diags/diag_nvme.c
|
||||
index 2a78034..df191f2 100644
|
||||
--- a/diags/diag_nvme.c
|
||||
+++ b/diags/diag_nvme.c
|
||||
@@ -165,6 +165,11 @@ int main(int argc, char *argv[]) {
|
||||
optind++;
|
||||
}
|
||||
|
||||
+ if (rc == 0)
|
||||
+ fprintf(stdout, "Command completed successfully\n");
|
||||
+ else
|
||||
+ fprintf(stderr, "Command failed, exiting with rc %d\n", rc);
|
||||
+
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -310,6 +315,7 @@ extern int dump_smart_data(char *device_name, char *dump_path) {
|
||||
int fd, rc;
|
||||
FILE *fp;
|
||||
struct nvme_smart_log_page smart_log = { 0 };
|
||||
+ char ans;
|
||||
|
||||
/* Read SMART data from device */
|
||||
snprintf(dev_path,sizeof(dev_path), "/dev/%s", device_name);
|
||||
@@ -331,8 +337,16 @@ extern int dump_smart_data(char *device_name, char *dump_path) {
|
||||
}
|
||||
fp = fopen(dump_path, "wx");
|
||||
if (fp == NULL) {
|
||||
- fprintf(stderr, "%s open failed: %s\n", dump_path, strerror(errno));
|
||||
- return -1;
|
||||
+ if (errno == EEXIST) {
|
||||
+ fprintf(stdout, "File %s exists. Overwrite (y/n)? ", dump_path);
|
||||
+ rc = scanf("%c", &ans);
|
||||
+ if (ans == 'y' || ans == 'Y')
|
||||
+ fp = fopen(dump_path, "w");
|
||||
+ }
|
||||
+ if (fp == NULL) {
|
||||
+ fprintf(stderr, "%s open failed: %s\n", dump_path, strerror(errno));
|
||||
+ return -1;
|
||||
+ }
|
||||
}
|
||||
write_smart_file(fp, &smart_log);
|
||||
fclose(fp);
|
||||
@@ -974,11 +988,6 @@ extern int open_nvme(char *dev_path) {
|
||||
static void print_usage(char *command) {
|
||||
printf("Usage: %s [-h] [-d <file>] [-f <file>] [<nvme_devices>]\n"
|
||||
"\t-h or --help: print this help message\n"
|
||||
- "\t-d or --dump: dump SMART data to the specified path and file name <file>\n"
|
||||
- "\t one <nvme_device> is expected with this option\n"
|
||||
- "\t-f or --file: use SMART data from the specified path and file name <file>\n"
|
||||
- "\t instead of device, one <nvme_device> is expected with\n"
|
||||
- "\t this option\n"
|
||||
"\t<nvme_devices>: the NVMe devices on which to operate, for\n"
|
||||
"\t example nvme0; if not specified, all detected\n"
|
||||
"\t nvme devices will be diagnosed\n", command);
|
||||
diff --git a/diags/man/diag_nvme.8 b/diags/man/diag_nvme.8
|
||||
index 45567ac..c023ed6 100644
|
||||
--- a/diags/man/diag_nvme.8
|
||||
+++ b/diags/man/diag_nvme.8
|
||||
@@ -1,7 +1,7 @@
|
||||
.\"
|
||||
-.\" Copyright (C) 2022 IBM Corporation
|
||||
+.\" Copyright (C) 2022, 2023 IBM Corporation
|
||||
.\"
|
||||
-.TH "DIAG_NVME" "8" "June 2022" "Linux" "PowerLinux Diagnostic Tools"
|
||||
+.TH "DIAG_NVME" "8" "September 2023" "Linux" "PowerLinux Diagnostic Tools"
|
||||
.hy
|
||||
.SH NAME
|
||||
.PP
|
||||
@@ -12,7 +12,7 @@ diag_nvme \- diagnose NVMe devices
|
||||
.PD 0
|
||||
.P
|
||||
.PD
|
||||
-\f[B]diag_nvme\f[] [\-d <\f[I]file\f[]>] [\-f <\f[I]file\f[]>]
|
||||
+\f[B]diag_nvme\f[]
|
||||
<\f[B]nvme\f[]\f[I]n\f[]>
|
||||
.PD 0
|
||||
.P
|
||||
@@ -29,52 +29,10 @@ go through the diagnostics procedure.
|
||||
The user can control which events will be reported through the
|
||||
configuration file \f[I]/etc/ppc64\-diag/diag_nvme.config\f[]
|
||||
.SH OPTIONS
|
||||
-.TP
|
||||
-.B \f[B]\-d\f[], \f[B]--dump\f[] \f[I]file\f[]
|
||||
-Dump SMART data to the specified path and file name \f[I]file\f[].
|
||||
-The SMART data is extracted from an NVMe device, so specifying one is
|
||||
-mandatory if this option is selected.
|
||||
-File created is in a simple key=value format.
|
||||
-.RS
|
||||
-.RE
|
||||
-.TP
|
||||
-.B \f[B]\-f\f[], \f[B]--file\f[] \f[I]file\f[]
|
||||
-This option usage is for testing only.
|
||||
-Use SMART data from the specified path and file name \f[I]file\f[]
|
||||
-instead of device, one NVMe is mandatory if this option is selected.
|
||||
-The expected format of the file is a simple key=value that is the same
|
||||
-one provided with the \-d / --dump option.
|
||||
-If \f[I]file\f[] is missing from the filesystem it will be treated as a
|
||||
-failure to retrieve SMART data and an event will be reported.
|
||||
-.RS
|
||||
-.RE
|
||||
-.TP
|
||||
-.B \f[B]\-h\f[], \f[B]--help\f[]
|
||||
-Print a help message and exit
|
||||
-.RS
|
||||
-.RE
|
||||
-.SH EXAMPLES
|
||||
-.TP
|
||||
-.B \f[B]diag_nvme\f[]
|
||||
-Run diagnostics in all NVMe devices detected in the system.
|
||||
-.RS
|
||||
-.RE
|
||||
-.TP
|
||||
.B \f[B]diag_nvme nvme0 nvme1\f[]
|
||||
Run diagnostics only in nvme0 and nvme1 devices.
|
||||
.RS
|
||||
.RE
|
||||
-.TP
|
||||
-.B \f[B]diag_nvme \-d smart.txt nvme0\f[]
|
||||
-Dump SMART data from nvme0 into file smart.txt.
|
||||
-.RS
|
||||
-.RE
|
||||
-.TP
|
||||
-.B \f[B]diag_nvme \-f smart.txt nvme0\f[]
|
||||
-Read SMART data from file smart.txt and use it as health information for
|
||||
-diagnostics of device nvme0.
|
||||
-.RS
|
||||
-.RE
|
||||
.SH REPORTING BUGS
|
||||
.PP
|
||||
Patches and issues may be submitted at
|
||||
@ -1,89 +0,0 @@
|
||||
commit 357923dafda766429acbe68470c3bd6028d5ebf5
|
||||
Author: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Date: Sun May 5 02:48:25 2024 -0400
|
||||
|
||||
rtas_errd: Fix core dump with large filename passed to -f option
|
||||
|
||||
When a filename passed to rtas_errd's -f option is excessively long,
|
||||
it causes a stack buffer overflow in the _log_msg() function, leading
|
||||
to stack smashing.
|
||||
|
||||
The _log_msg() function, utilized by log_msg(), operates with a buffer
|
||||
limited to 4096 characters. Additional space is consumed by _dbg() and
|
||||
re-formatting in _log_msg(), increasing the risk of buffer overflow.
|
||||
|
||||
To address this, in case of an error, if the filename exceeds the
|
||||
length of 2048 characters, truncate it and log a message indicating the
|
||||
truncation. Use 2048 characters as limit for filename length to allow
|
||||
space for further modifications.
|
||||
|
||||
Additionally, add a check when processing the -f option to ensure that
|
||||
the length of the specified filename does not exceed 4096 characters.
|
||||
|
||||
Reported-by: R Nageswara Sastry <rnsastry@linux.ibm.com>
|
||||
Closes: https://github.com/power-ras/ppc64-diag/issues/31
|
||||
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Tested-by: R Nageswara Sastry<rnsastry@linux.ibm.com>
|
||||
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||
|
||||
diff --git a/rtas_errd/files.c b/rtas_errd/files.c
|
||||
index 4be75c6..3750bdc 100644
|
||||
--- a/rtas_errd/files.c
|
||||
+++ b/rtas_errd/files.c
|
||||
@@ -284,10 +284,27 @@ init_files(void)
|
||||
proc_error_log_fd = open(proc_error_log2, O_RDONLY);
|
||||
|
||||
if (proc_error_log_fd < 0) {
|
||||
- log_msg(NULL, "Could not open error log file at either %s or "
|
||||
- "%s, %s\nThe rtas_errd daemon cannot continue and will "
|
||||
- "exit", proc_error_log1, proc_error_log2,
|
||||
- strerror(errno));
|
||||
+
|
||||
+ if (strlen(proc_error_log1) <= 2048) {
|
||||
+ log_msg(NULL, "Could not open error log file at either %s or "
|
||||
+ "%s, %s\nThe rtas_errd daemon cannot continue and will "
|
||||
+ "exit", proc_error_log1, proc_error_log2,
|
||||
+ strerror(errno));
|
||||
+ } else {
|
||||
+ /* If the filename is too long, truncate it */
|
||||
+ char truncated_filename[2048];
|
||||
+
|
||||
+ strncpy(truncated_filename, proc_error_log1,
|
||||
+ sizeof(truncated_filename) - 1);
|
||||
+ truncated_filename[sizeof(truncated_filename) - 1] = '\0';
|
||||
+
|
||||
+ log_msg(NULL, "Truncating the filename since it is too long "
|
||||
+ "(%d characters)", strlen(proc_error_log1));
|
||||
+ log_msg(NULL, "Could not open error log file at either %s or "
|
||||
+ "%s, %s\nThe rtas_errd daemon cannot continue and will "
|
||||
+ "exit", truncated_filename, proc_error_log2,
|
||||
+ strerror(errno));
|
||||
+ }
|
||||
return -1;
|
||||
}
|
||||
|
||||
diff --git a/rtas_errd/rtas_errd.c b/rtas_errd/rtas_errd.c
|
||||
index 10c422c..f6c6a4a 100644
|
||||
--- a/rtas_errd/rtas_errd.c
|
||||
+++ b/rtas_errd/rtas_errd.c
|
||||
@@ -30,6 +30,7 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
#include <librtas.h>
|
||||
+#include <limits.h>
|
||||
|
||||
#include "rtas_errd.h"
|
||||
#include "platform.h"
|
||||
@@ -474,6 +475,12 @@ main(int argc, char *argv[])
|
||||
|
||||
f_flag++;
|
||||
proc_error_log1 = optarg;
|
||||
+ if (strlen(proc_error_log1) > PATH_MAX) {
|
||||
+ fprintf(stderr, "The specified file path %s exceeds"
|
||||
+ " the maximum supported file length of 4096 characters.\n",
|
||||
+ proc_error_log1);
|
||||
+ goto error_out;
|
||||
+ }
|
||||
proc_error_log2 = NULL;
|
||||
break;
|
||||
|
||||
@ -1,37 +0,0 @@
|
||||
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
|
||||
Version: 2.7.9
|
||||
Release: 6%{?dist}
|
||||
Version: 2.7.11
|
||||
Release: 1%{?dist}
|
||||
Summary: PowerLinux Platform Diagnostics
|
||||
URL: https://github.com/power-ras/%{name}
|
||||
License: GPLv2
|
||||
@ -35,19 +35,6 @@ Source5: rtas_errd.8
|
||||
Patch0: ppc64-diag-2.7.9-fedora.patch
|
||||
|
||||
# upstream fixes
|
||||
Patch10: ppc64-diag-2.7.9-handle_multiple_platform_dumps.patch
|
||||
Patch11: ppc64-diag-2.7.9-remove_d_and_f_option.patch
|
||||
Patch12: ppc64-diag-2.7.9-moving-trim_trail_space-function.patch
|
||||
Patch13: ppc64-diag-2.7.9-utilize-trim_trail_space-in-event_fru_callout.patch
|
||||
Patch14: ppc64-diag-2.7.9-enable-light-path-diagnostics-for-RTAS-events.patch
|
||||
Patch15: ppc64-diag-2.7.9-improvements_status_and_err_messages.patch
|
||||
Patch16: ppc64-diag-2.7.9-remove-d-and-f-from-usage.patch
|
||||
Patch17: ppc64-diag-2.7.9-diag_encl-man-and-help-page.patch
|
||||
Patch18: ppc64-diag-2.7.9-diag_nvme-man-and-help-page.patch
|
||||
Patch19: ppc64-diag-2.7.9-call_home-fail-on-nvmf-device.patch
|
||||
Patch20: ppc64-diag-2.7.9-compiler-warnings.patch
|
||||
Patch21: ppc64-diag-2.7.9-rtas_errd_crash.patch
|
||||
Patch22: ppc64-diag-2.7.9-diag_vnme-add-power11-support.patch
|
||||
|
||||
%description
|
||||
This package contains various diagnostic tools for PowerLinux.
|
||||
@ -184,6 +171,9 @@ if [ "$1" = "0" ]; then # last uninstall
|
||||
fi
|
||||
|
||||
%changelog
|
||||
* Tue Jan 27 2026 Than Ngo <than@redhat.com> - 2.7.11-1
|
||||
- Resolves: RHEL-102474, Update to 2.7.11
|
||||
|
||||
* Wed Jan 08 2025 Than Ngo <than@redhat.com> - 2.7.9-6
|
||||
- Resolves: RHEL-72515, Added Power11 support for diag_nvme
|
||||
|
||||
|
||||
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (ppc64-diag-2.7.9.tar.gz) = b6756c17e67e876ad3a945d05dbd2c2523cbf121c4aa658a4edaf33775c8165ff26a252bdf812600e2d47ae69cd68f6e22c0de6f2d3994856adcd3d949322673
|
||||
SHA512 (ppc64-diag-2.7.11.tar.gz) = 651e8faca5bdf092625424239afc5d6f0062ad9d001f70a4759fe9179b021494516e129606d0ae3eedfd2a2d45ad21983fb7fa8836d5310afe9722d3f7b7cd15
|
||||
|
||||
Loading…
Reference in New Issue
Block a user