From d2c7851d31555c601e95da32b28057f4fd389092 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Tue, 9 May 2023 05:31:08 +0000 Subject: [PATCH] import lsvpd-1.7.14-2.el9 --- SOURCES/lsvpd-git1ca39c.patch | 164 ++++++++++++++++++++++++++++++++++ SOURCES/lsvpd-git6ff86f.patch | 21 +++++ SPECS/lsvpd.spec | 18 ++-- 3 files changed, 197 insertions(+), 6 deletions(-) create mode 100644 SOURCES/lsvpd-git1ca39c.patch create mode 100644 SOURCES/lsvpd-git6ff86f.patch diff --git a/SOURCES/lsvpd-git1ca39c.patch b/SOURCES/lsvpd-git1ca39c.patch new file mode 100644 index 0000000..44879ef --- /dev/null +++ b/SOURCES/lsvpd-git1ca39c.patch @@ -0,0 +1,164 @@ +commit 1ca39cf877d0a74bc3f420205a672aea146982a5 +Author: Sathvika Vasireddy +Date: Fri Dec 23 14:19:38 2022 +0530 + + lsvpd: Add NVME f1h log page VPD information parsing logic in fillByBus() + + This patch adds NVME f1h log page VPD information parsing logic + in fillByBus(). If bus is pci, then fill PCI device information + for this nvme device by reading and interpreting NVME f1h log + page. + + Without this patch: + ===== + + # lscfg -vl 0185:a0:00.0 + 0185:a0:00.0 nvme1 pci1014,680 U78DA.ND0.WZS004R-P1-C5 + 3.2TB NVMe Gen4 U.2 SSD (1014a824) + Manufacturer Name.........IBM + Machine Type-Model........NVMe SSD Controller PM173X + Device Specific.(YC)......0 + Location Code.(YL)........U78DA.ND0.WZS004R-P1-C5 + + ===== + + With this patch: + ===== + + # ./lscfg -vl 0185:a0:00.0 + 0185:a0:00.0 nvme1 pci1014,680 U78DA.ND0.WZS004R-P1-C5 + 3.2TB NVMe Gen4 U.2 SSD (1014a824) + Manufacturer Name.........IBM + Machine Type-Model........NVMe SSD Controller PM173X + Engineering Change Level..P65459 + Field Replaceable Unit Number + ..........................01LU968 + Manufacturer ID...........S5H0NE0MC00161 + Part Number of assembly...01CM529 + Serial Number.............CEYD404W + Device Specific.(ID)......3.2TB NVMe Gen4 U.2 SSD + Final Assembly PN.(AN)....01LU965 + Customer Card ID Number.(CC) + ..........................59B9 + Device Specific.(Z0)......10140680 + Device Specific.(Z1)......3.0 + Device Specific.(Z2)......3200 + Device Specific.(Z3)......17.52 + Device Specific.(Z4)......0 + Device Specific.(Z5)......00 + Device Specific.(Z6)......A180010C + Device Specific.(Z7)......0YA + Device Specific.(Z8)......2902 + Device Specific.(Z9)......08 + Device Specific.(ZA)......0008 + Device Specific.(ZB)......0040 + Device Specific.(ZC)......00 + Device Specific.(FR)......REV.ST45 + Device Specific.(YC)......0 + Location Code.(YL)........U78DA.ND0.WZS004R-P1-C5 + + ===== + + Signed-off-by: Sathvika Vasireddy + Signed-off-by: Mahesh Salgaonkar + +diff --git a/src/include/sysfstreecollector.hpp b/src/include/sysfstreecollector.hpp +index e2af3ab..29f1d20 100644 +--- a/src/include/sysfstreecollector.hpp ++++ b/src/include/sysfstreecollector.hpp +@@ -139,6 +139,7 @@ namespace lsvpd + void process_template(Component *fillMe, string *deviceType, + char *data, int dataSize, string *format, + int pageCode); ++ int collectNvmeVpd(Component *fillMe, int device_fd); + + int collectVpd(Component *fillMe, int device_fd, bool limitSCSISize); + void fillSCSIComponent( Component* fillMe, bool limitSCSISize); +@@ -224,7 +225,6 @@ namespace lsvpd + */ + void fillUSBDev( Component* fillMe, const string& sysDir ); + +- + /** + * Fill a NVMe device. + * +@@ -259,6 +259,15 @@ namespace lsvpd + */ + void fillIDEDev( Component* fillMe ); + ++ /** ++ * Fill a NVME device by reading and interpreting f1h log page ++ * information ++ * ++ * @param fillMe ++ * The Component to fill ++ */ ++ void fillPciNvmeVpd( Component* fillMe); ++ + /** + * Gather PCI device specific vpd info. + * +diff --git a/src/internal/sys_interface/sysfs_SCSI_Fill.cpp b/src/internal/sys_interface/sysfs_SCSI_Fill.cpp +index b14bc3a..bdd6a30 100644 +--- a/src/internal/sys_interface/sysfs_SCSI_Fill.cpp ++++ b/src/internal/sys_interface/sysfs_SCSI_Fill.cpp +@@ -1225,6 +1225,22 @@ namespace lsvpd + return ret; + } + ++ int SysFSTreeCollector::collectNvmeVpd(Component *fillMe, int device_fd) ++ { ++ int rc; ++ char data[NVME_VPD_INFO_SIZE]; ++ ++ rc = nvme_read_vpd(device_fd, data); ++ if (rc) ++ return rc; ++ ++ rc = interpretNVMEf1hLogPage(fillMe, data); ++ if (rc) ++ return rc; ++ ++ return 0; ++ } ++ + /******************************************************************** + * @brief: High-level data collection call, using ioctl and doSGQuery + * to collect relevant data which is returned for interpretation. +diff --git a/src/internal/sys_interface/sysfstreecollector.cpp b/src/internal/sys_interface/sysfstreecollector.cpp +index 8ac0ea5..c5eb71d 100644 +--- a/src/internal/sys_interface/sysfstreecollector.cpp ++++ b/src/internal/sys_interface/sysfstreecollector.cpp +@@ -1407,6 +1407,22 @@ ERROR: + return 0; + } + ++ void SysFSTreeCollector::fillPciNvmeVpd( Component* fillMe ) ++ { ++ int device_fd; ++ struct stat myDir; ++ string path; ++ path = fillMe->sysFsNode.getValue() + "/nvme"; ++ if (stat(path.c_str(), &myDir) < 0) ++ return; ++ device_fd = device_open(fillMe); ++ if (device_fd < 0) ++ return; ++ collectNvmeVpd(fillMe, device_fd); ++ close(device_fd); ++ return; ++ } ++ + /* Parse VPD file */ + void SysFSTreeCollector::fillPciDevVpd( Component* fillMe ) + { +@@ -1520,6 +1536,9 @@ ERROR: + /* Fill PCI device VPD info */ + fillPciDevVpd(fillMe); + ++ /* Fill NVME device VPD info using f1h log page */ ++ fillPciNvmeVpd(fillMe); ++ + // Read the pci config file for Device Specific (YC) + os.str( "" ); + os << fillMe->sysFsNode.dataValue << "/config"; diff --git a/SOURCES/lsvpd-git6ff86f.patch b/SOURCES/lsvpd-git6ff86f.patch new file mode 100644 index 0000000..6060207 --- /dev/null +++ b/SOURCES/lsvpd-git6ff86f.patch @@ -0,0 +1,21 @@ +commit 6ff86f3e6885e24b6eca2f42d6b02da5cead32e5 +Author: Sathvika Vasireddy +Date: Fri Dec 23 14:19:53 2022 +0530 + + lsvpd: Update nvme_template with logpage format for 0003 and 0004 versions + + This patch adds nvme templates for f1h log page versions + 0003 and 0004. + + Signed-off-by: Sathvika Vasireddy + Signed-off-by: Mahesh Salgaonkar + +diff --git a/nvme_templates.conf b/nvme_templates.conf +index a85e95e..269c0af 100644 +--- a/nvme_templates.conf ++++ b/nvme_templates.conf +@@ -1,2 +1,4 @@ + "0001", "_: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,FR:8" + "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" diff --git a/SPECS/lsvpd.spec b/SPECS/lsvpd.spec index 1842f23..9669a22 100644 --- a/SPECS/lsvpd.spec +++ b/SPECS/lsvpd.spec @@ -1,15 +1,18 @@ %define name lsvpd %define version 1.7.14 -Name: %{name} -Version: %{version} -Release: 1%{?dist} -Summary: VPD/hardware inventory utilities for Linux +Name: lsvpd +Version: 1.7.14 +Release: 2%{?dist} +Summary: VPD/hardware inventory utilities for Linux -License: GPLv2+ -URL: https://github.com/power-ras/%{name}/releases +License: GPLv2+ +URL: https://github.com/power-ras/%{name}/releases Source: https://github.com/power-ras/%{name}/archive/v%{version}/%{name}-%{version}.tar.gz +Patch0: lsvpd-git1ca39c.patch +Patch1: lsvpd-git6ff86f.patch + BuildRequires: gcc-c++ BuildRequires: libvpd-devel >= 2.2.9 BuildRequires: sg3_utils-devel @@ -72,6 +75,9 @@ exit 0 %dir %{_sysconfdir}/lsvpd %changelog +* Sun Feb 05 2023 Than Ngo - 1.7.14-2 +- Resolves: #2164975, add NVME f1h log page VPD information + * Fri May 06 2022 Than Ngo - 1.7.14-1 - Resolves: #2051289, rebase to 1.7.14