Fix, Vendor and Device information mismatch for usb-xhci

This commit is contained in:
Than Ngo 2021-02-09 11:15:49 +01:00
parent d5e1ceec41
commit 482a8d7a0a
4 changed files with 125 additions and 2 deletions

View File

@ -0,0 +1,43 @@
commit 0359436fdd467acd70c9fefa471570681d31e619
Author: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Date: Sun Jan 24 22:37:38 2021 +0530
sysfs: Fix PCI device manufacturer parsing logic
If we fail to get manufacturer name using subsystem vendor ID
then use vendor ID to get manufacturer name.
Sample output diff with the this fix:
------------------------------------
*AX 0032:00
*YL 0032:00
*FC
-*DS usb-xhci (00008241)
+*DS usb-xhci (104c8241)
*AX 0005:01:00.0
*AX wakeup0
*AX usbmon1
*AX usbmon2
*AX usb-xhci
-*MF Unknown
+*MF Texas Instruments
*TM TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller
-*CD 00008241
+*CD 104c8241
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
diff --git a/src/internal/sys_interface/sysfstreecollector.cpp b/src/internal/sys_interface/sysfstreecollector.cpp
index 70fcc1b..9e808de 100644
--- a/src/internal/sys_interface/sysfstreecollector.cpp
+++ b/src/internal/sys_interface/sysfstreecollector.cpp
@@ -1434,7 +1434,8 @@ ERROR:
if( mPciTable != NULL )
{
// Fill Manufacturer Name
- if( subMan == UNKNOWN_ID )
+ if( subMan == UNKNOWN_ID ||
+ (mPciTable->getName( subMan ) == "Unknown") )
{
if( manID != UNKNOWN_ID )
{

View File

@ -0,0 +1,26 @@
commit cc99870797f732129b4d2703a37461dac7c27098
Author: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Date: Fri Jan 22 18:41:44 2021 +0530
nvme: Populate NVMe firmware version
Looks like NVMe firmware version is added as `firmware_rev`
property in sysfs. Also its not available in `vpd` blob.
Hence add explicit logic to parse sysfs property.
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
diff --git a/src/internal/sys_interface/sysfstreecollector.cpp b/src/internal/sys_interface/sysfstreecollector.cpp
index 4404013..70fcc1b 100644
--- a/src/internal/sys_interface/sysfstreecollector.cpp
+++ b/src/internal/sys_interface/sysfstreecollector.cpp
@@ -1794,6 +1794,9 @@ ERROR:
fillMe->mFirmwareLevel.setValue( getAttrValue( classNode,
"fwrev" ), 30, __FILE__, __LINE__ );
+
+ fillMe->mFirmwareVersion.setValue( getAttrValue( classNode,
+ "firmware_rev" ), 30, __FILE__, __LINE__ );
}
}

View File

@ -0,0 +1,47 @@
commit fa1638452b8299f1a7f8e9a94259b25218a92acc
Author: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
Date: Wed Jan 20 12:30:51 2021 +0530
sysvpd: Add UUID property
Recent LPARs contains "ibm,partition-uuid" device tree property.. which
is unique UUID for each LPAR. This is represented by `MU` keyword.
Lets add support to parse this property and populate vpddb.
Ideally we should enhance libvpd to support new keyword. But that will
add depedency on libvpd version. Hence adding this new keyword (MU)
as DeviceSpecific keyword.
Signed-off-by: Vasant Hegde <hegdevasant@linux.vnet.ibm.com>
diff --git a/src/internal/sys_interface/devicetreecollector.cpp b/src/internal/sys_interface/devicetreecollector.cpp
index 6afbe85..db4e8b5 100644
--- a/src/internal/sys_interface/devicetreecollector.cpp
+++ b/src/internal/sys_interface/devicetreecollector.cpp
@@ -1215,6 +1215,12 @@ ERROR:
sys->mSerialNum2.setValue( val, 80 , __FILE__, __LINE__ );
}
+ val = getAttrValue("/proc/device-tree", "ibm,partition-uuid" );
+ if( val != "" )
+ {
+ setVPDField( sys, string("MU"), val, __FILE__, __LINE__ );
+ }
+
getSystemVPD(sys);
}
diff --git a/src/internal/sys_interface/icollector.cpp b/src/internal/sys_interface/icollector.cpp
index ffa2466..5c4dccc 100644
--- a/src/internal/sys_interface/icollector.cpp
+++ b/src/internal/sys_interface/icollector.cpp
@@ -313,6 +313,8 @@ namespace lsvpd
else if( key == "SE" ) {
sys->mSerialNum1.setValue( val, 70, file, lineNum );
sys->mProcessorID.setValue( val, 70, file, lineNum );
+ } else if ( key == "MU" ) {
+ sys->addDeviceSpecific( key, "UUID", val, 90 );
} else
/* XXX: Un-recognized key */
sys->addDeviceSpecific( key, "System Specific", val, 90 );

View File

@ -3,13 +3,17 @@
Name: %{name}
Version: %{version}
Release: 4%{?dist}
Release: 5%{?dist}
Summary: VPD/hardware inventory utilities for Linux
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-1.7.11-fa1638452b8299f1a7f8e9a94259b25218a92acc.patch
Patch1: lsvpd-1.7.11-cc99870797f732129b4d2703a37461dac7c27098.patch
Patch2: lsvpd-1.7.11-0359436fdd467acd70c9fefa471570681d31e619.patch
BuildRequires: gcc-c++
BuildRequires: libvpd-devel >= 2.2.5
BuildRequires: sg3_utils-devel
@ -35,7 +39,7 @@ firmware levels. lsvio lists virtual devices, usually only found
on POWER PC based systems.
%prep
%autosetup
%autosetup -p1
%build
export CXXFLAGS="-std=c++14 $RPM_OPT_FLAGS"
@ -72,6 +76,9 @@ exit 0
%dir %{_sysconfdir}/lsvpd
%changelog
* Tue Feb 09 2021 Than Ngo <than@redhat.com> - 1.7.11-5
- Fix, Vendor and Device information mismatch for usb-xhci
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.11-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild