import CS lsvpd-1.7.14-4.el9
This commit is contained in:
parent
95ed593262
commit
2621a7d59f
141
SOURCES/lsvpd-git50e2fa.patch
Normal file
141
SOURCES/lsvpd-git50e2fa.patch
Normal file
@ -0,0 +1,141 @@
|
||||
commit 50e2fa22298de13fd731488306d2cbd0081730d8
|
||||
Author: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Date: Fri Feb 10 14:55:41 2023 +0530
|
||||
|
||||
lsvpd: Fill firmware information by recursively looking for firmware specific files within sysfs ID
|
||||
|
||||
Currently, fillFirmware() is filling firmware information based on the
|
||||
classNode value of a given component. It then looks for firmware specific
|
||||
sysfs files (fw_version, fwrev, firmware_rev), within the classNode path,
|
||||
to set firmware fields accordingly. For components that do not have a
|
||||
classNode value, fillFirmware() does not look for firmware information
|
||||
within the sysfs firmware files, and hence does not set firmware fields.
|
||||
|
||||
This patch recursively looks for sysfs firmware files within the ID path of
|
||||
a component, and sets the firmware fields accordingly, if not already set.
|
||||
|
||||
Reported-by: Borislav Stoymirski <borislav.stoymirski@bg.ibm.com>
|
||||
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||
Tested-by: Borislav Stoymirski <borislav.stoymirski@bg.ibm.com>
|
||||
|
||||
diff --git a/src/include/icollector.hpp b/src/include/icollector.hpp
|
||||
index 894dd99..392632f 100644
|
||||
--- a/src/include/icollector.hpp
|
||||
+++ b/src/include/icollector.hpp
|
||||
@@ -116,6 +116,25 @@ namespace lsvpd
|
||||
virtual ~ICollector( ){}
|
||||
|
||||
protected:
|
||||
+ /** Recursively search for attrName within a given path.
|
||||
+ *
|
||||
+ * @param path
|
||||
+ * Directory path to search for filename.
|
||||
+ *
|
||||
+ * @param attrName
|
||||
+ * Filename to search for.
|
||||
+ *
|
||||
+ * @return
|
||||
+ * Path in which attrName file exists.
|
||||
+ *
|
||||
+ * If attrName is fwrev, and is found at
|
||||
+ * /sys/devices/pci0020:01/0020:01:00.1/host4/scsi_host/host4/fwrev,
|
||||
+ * searchFile() will return
|
||||
+ * /sys/devices/pci0020:01/0020:01:00.1/host4/scsi_host/host4.
|
||||
+ */
|
||||
+ string searchFile( const string& path,
|
||||
+ const string& attrName );
|
||||
+
|
||||
string getAttrValue( const string& path,
|
||||
const string& attrName );
|
||||
|
||||
diff --git a/src/internal/sys_interface/icollector.cpp b/src/internal/sys_interface/icollector.cpp
|
||||
index 5c4dccc..7586fe8 100644
|
||||
--- a/src/internal/sys_interface/icollector.cpp
|
||||
+++ b/src/internal/sys_interface/icollector.cpp
|
||||
@@ -32,11 +32,46 @@
|
||||
#include <fstream>
|
||||
#include <cstring>
|
||||
#include <bitset>
|
||||
+#include <iostream>
|
||||
+#include <dirent.h>
|
||||
+#include <string.h>
|
||||
|
||||
using namespace std;
|
||||
|
||||
namespace lsvpd
|
||||
{
|
||||
+
|
||||
+ string ICollector::searchFile( const string& path, const string& attrName )
|
||||
+ {
|
||||
+ DIR *dir;
|
||||
+ struct dirent *entry;
|
||||
+
|
||||
+ if ((dir = opendir(path.c_str())) == NULL)
|
||||
+ return "";
|
||||
+
|
||||
+ while ((entry = readdir(dir)) != NULL) {
|
||||
+ if (entry->d_type == DT_DIR) {
|
||||
+ // Found a directory, but ignore . and ..
|
||||
+ if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0)
|
||||
+ continue;
|
||||
+ string newPath = path + "/" + entry->d_name;
|
||||
+ string result = searchFile(newPath, attrName);
|
||||
+ if (result != "") {
|
||||
+ closedir(dir);
|
||||
+ return result;
|
||||
+ }
|
||||
+ }
|
||||
+ else {
|
||||
+ if (entry->d_name == attrName) {
|
||||
+ closedir(dir);
|
||||
+ return path;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ closedir(dir);
|
||||
+ return "";
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Read a device attribute, given dev path and attribute name
|
||||
* @var path Full path to device in sysfs
|
||||
diff --git a/src/internal/sys_interface/sysfstreecollector.cpp b/src/internal/sys_interface/sysfstreecollector.cpp
|
||||
index c5eb71d..03eb7da 100644
|
||||
--- a/src/internal/sys_interface/sysfstreecollector.cpp
|
||||
+++ b/src/internal/sys_interface/sysfstreecollector.cpp
|
||||
@@ -1837,6 +1837,10 @@ ERROR:
|
||||
|
||||
void SysFSTreeCollector::fillFirmware( Component* fillMe )
|
||||
{
|
||||
+ string result = "";
|
||||
+ string path = fillMe->getID();
|
||||
+ const string firmwareAttributes[] = {"fw_version", "firmware_rev"};
|
||||
+ const size_t firmwareAttributesSize = sizeof(firmwareAttributes) / sizeof(firmwareAttributes[0]);
|
||||
string classNode = fillMe->getClassNode();
|
||||
if (classNode.length() > 0) {
|
||||
fillMe->mFirmwareVersion.setValue( getAttrValue( classNode,
|
||||
@@ -1848,6 +1852,23 @@ ERROR:
|
||||
fillMe->mFirmwareVersion.setValue( getAttrValue( classNode,
|
||||
"firmware_rev" ), 30, __FILE__, __LINE__ );
|
||||
}
|
||||
+
|
||||
+ if (fillMe->mFirmwareLevel.dataValue.empty()) {
|
||||
+ result = searchFile(path, "fwrev");
|
||||
+ if (!result.empty()) {
|
||||
+ fillMe->mFirmwareLevel.setValue( getAttrValue( result,
|
||||
+ "fwrev" ), 30, __FILE__, __LINE__ );
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ for (size_t i = 0; i < firmwareAttributesSize && fillMe->mFirmwareVersion.dataValue.empty(); i++) {
|
||||
+ result = searchFile(path, firmwareAttributes[i]);
|
||||
+ if (!result.empty()) {
|
||||
+ fillMe->mFirmwareVersion.setValue( getAttrValue( result,
|
||||
+ firmwareAttributes[i]), 30, __FILE__, __LINE__ );
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
string SysFSTreeCollector::resolveClassPath( const string& path )
|
76
SOURCES/lsvpd-git8b5d2c.patch
Normal file
76
SOURCES/lsvpd-git8b5d2c.patch
Normal file
@ -0,0 +1,76 @@
|
||||
commit 8b5d2cfb7d1a6731e72198e7c71fa5bfad1ff0ec
|
||||
Author: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Date: Wed Mar 29 12:10:36 2023 +0530
|
||||
|
||||
lsvpd: Update nvme_templates with logpage format for 0005 and 0006 versions
|
||||
|
||||
To collect nvme vpd data and set vpd fields accordingly, we interpret nvme
|
||||
f1h logpage. Currently, there is support to interpret NVMe logpage versions
|
||||
till 0004. NVMe devices with Alterable ROM Level REV.SN66 have f1h logpage
|
||||
versions of 0005 and above. Since there is no support for 0005 and above
|
||||
versions of nvme f1h logpage in the code yet, code returns without
|
||||
interpreting logpage information, and hence nvme vpd data for such devices
|
||||
are not being set and displayed completely. To address this issue, add nvme
|
||||
template for f1h logpage versions 0005 and 0006.
|
||||
|
||||
Starting with Version 0005, a new value was added to Encryption field
|
||||
(2 = BootROM support). And, starting with Version 0006, two new fields
|
||||
(Reserved for Future DS8K Usage and DLFEAT PI Deviation Support) were added
|
||||
to f1h logpage.
|
||||
|
||||
Before this patch:
|
||||
$ lscfg -vl 05ed:70:00.0
|
||||
05ed:70:00.0 nvme0 pci1014,6bc U50EE.001.WZS005P-P3-C13
|
||||
1.6TB NVMe Gen4 II U.2 SSD (1014a825)
|
||||
Manufacturer Name.........IBM
|
||||
Machine Type-Model........NVMe SSD Controller PM173Xa
|
||||
Alterable ROM Level.......REV.SN66
|
||||
Device Specific.(YC)......0
|
||||
Location Code.(YL)........U50EE.001.WZS005P-P3-C13
|
||||
|
||||
After this patch:
|
||||
$ lscfg -vl 05ed:70:00.0
|
||||
05ed:70:00.0 nvme0 pci1014,6bc U50EE.001.WZS005P-P3-C13
|
||||
1.6TB NVMe Gen4 II U.2 SSD (1014a825)
|
||||
Manufacturer Name.........IBM
|
||||
Machine Type-Model........NVMe SSD Controller PM173Xa
|
||||
Engineering Change Level..P65460
|
||||
Field Replaceable Unit Number
|
||||
..........................02YC725
|
||||
Manufacturer ID...........S6RUNE0T901384
|
||||
Part Number of assembly...01CM549
|
||||
Serial Number.............ANYH60HA
|
||||
Alterable ROM Level.......REV.SN66
|
||||
Device Specific.(ID)......1.6TB NVMe Gen4 U.2 SSD III
|
||||
Final Assembly PN.(AN)....02YC721
|
||||
Customer Card ID Number.(CC)
|
||||
..........................5B52
|
||||
Device Specific.(Z0)......101406BC
|
||||
Device Specific.(Z1)......3.0
|
||||
Device Specific.(Z2)......1600
|
||||
Device Specific.(Z3)......8.76
|
||||
Device Specific.(Z4)......2
|
||||
Device Specific.(Z5)......02
|
||||
Device Specific.(Z6)......A1800114
|
||||
Device Specific.(Z7)......0YA
|
||||
Device Specific.(Z8)......2901
|
||||
Device Specific.(Z9)......08
|
||||
Device Specific.(ZA)......0008
|
||||
Device Specific.(ZB)......0040
|
||||
Device Specific.(ZC)......00
|
||||
Device Specific.(YC)......0
|
||||
Location Code.(YL)........U50EE.001.WZS005P-P3-C13
|
||||
|
||||
Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
|
||||
Signed-off-by: Mahesh Salgaonkar <mahesh@linux.ibm.com>
|
||||
|
||||
diff --git a/nvme_templates.conf b/nvme_templates.conf
|
||||
index 269c0af..473734d 100644
|
||||
--- a/nvme_templates.conf
|
||||
+++ b/nvme_templates.conf
|
||||
@@ -2,3 +2,5 @@
|
||||
"0002", "_:4,ID:40,PN:12,EC:10,FN:12,AN:12,FC:4,CC:4,SN:8,Z0:8,Z1:4,Z2:10,Z3:12,Z4:1,Z5:2,Z6:8,Z7:3,Z8:5,Z9:2,ZA:4,ZB:4,ZC:2,MN:20,RM:8"
|
||||
"0003", "_:4,ID:40,PN:12,EC:10,FN:12,AN:12,FC:4,CC:4,SN:8,Z0:8,Z1:4,Z2:10,Z3:12,Z4:1,Z5:2,Z6:8,Z7:3,Z8:5,Z9:2,ZA:4,ZB:4,ZC:2,MN:20,RM:8"
|
||||
"0004", "_:4,ID:40,PN:12,EC:10,FN:12,AN:12,FC:4,CC:4,SN:8,Z0:8,Z1:4,Z2:10,Z3:12,Z4:1,Z5:2,Z6:8,Z7:3,Z8:5,Z9:2,ZA:4,ZB:4,ZC:2,MN:20,RM:8"
|
||||
+"0005", "_:4,ID:40,PN:12,EC:10,FN:12,AN:12,FC:4,CC:4,SN:8,Z0:8,Z1:4,Z2:10,Z3:12,Z4:1,Z5:2,Z6:8,Z7:3,Z8:5,Z9:2,ZA:4,ZB:4,ZC:2,MN:20,RM:8"
|
||||
+"0006", "_:4,ID:40,PN:12,EC:10,FN:12,AN:12,FC:4,CC:4,SN:8,Z0:8,Z1:4,Z2:10,Z3:12,Z4:1,Z5:2,Z6:8,Z7:3,Z8:5,Z9:2,ZA:4,ZB:4,ZC:2,MN:20,RM:8"
|
@ -3,7 +3,7 @@
|
||||
|
||||
Name: lsvpd
|
||||
Version: 1.7.14
|
||||
Release: 2%{?dist}
|
||||
Release: 4%{?dist}
|
||||
Summary: VPD/hardware inventory utilities for Linux
|
||||
|
||||
License: GPLv2+
|
||||
@ -12,6 +12,8 @@ Source: https://github.com/power-ras/%{name}/archive/v%{version}/%{name}-%{versi
|
||||
|
||||
Patch0: lsvpd-git1ca39c.patch
|
||||
Patch1: lsvpd-git6ff86f.patch
|
||||
Patch2: lsvpd-git50e2fa.patch
|
||||
Patch3: lsvpd-git8b5d2c.patch
|
||||
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: libvpd-devel >= 2.2.9
|
||||
@ -75,6 +77,14 @@ exit 0
|
||||
%dir %{_sysconfdir}/lsvpd
|
||||
|
||||
%changelog
|
||||
* Tue Apr 11 2023 Than Ngo <than@redhat.com> - 1.7.14-4
|
||||
- Related: #2181241, backport upstream patch to update update nvme_templates
|
||||
with logpage format for 0005 and 0006 versions
|
||||
|
||||
* Fri Mar 24 2023 Than Ngo <than@redhat.com> - 1.7.14-3
|
||||
- Resolves: #2181241, lsvpd is not reporting the correct I/O microcode
|
||||
for HBA, PCIe, SAS adapters, HDD, etc
|
||||
|
||||
* Sun Feb 05 2023 Than Ngo <than@redhat.com> - 1.7.14-2
|
||||
- Resolves: #2164975, add NVME f1h log page VPD information
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user