Compare commits

...

No commits in common. "c9" and "c8" have entirely different histories.
c9 ... c8

5 changed files with 63 additions and 266 deletions

View File

@ -0,0 +1,11 @@
diff -up pciutils-3.5.6/lspci.c.freefix pciutils-3.5.6/lspci.c
--- pciutils-3.5.6/lspci.c.freefix 2018-08-21 16:52:35.087706662 +0200
+++ pciutils-3.5.6/lspci.c 2018-08-21 16:52:35.124706469 +0200
@@ -128,6 +128,7 @@ scan_device(struct pci_dev *p)
fprintf(stderr, "lspci: Unable to read the standard configuration space header of device %04x:%02x:%02x.%d\n",
p->domain, p->bus, p->dev, p->func);
seen_errors++;
+ free(d);
return NULL;
}
if ((d->config[PCI_HEADER_TYPE] & 0x7f) == PCI_HEADER_TYPE_CARDBUS)

View File

@ -1,146 +0,0 @@
diff -up pciutils-3.7.0/lib/pci.h.cxxsup pciutils-3.7.0/lib/pci.h
--- pciutils-3.7.0/lib/pci.h.cxxsup 2024-11-02 17:31:00.588568039 +0100
+++ pciutils-3.7.0/lib/pci.h 2024-11-02 17:31:21.090755810 +0100
@@ -142,6 +142,9 @@ struct pci_dev {
pciaddr_t flags[6]; /* PCI_IORESOURCE_* flags for regions */
pciaddr_t rom_flags; /* PCI_IORESOURCE_* flags for expansion ROM */
int domain; /* PCI domain (host bridge) */
+ u32 rcd_link_cap; /* Link Capabilities register for RCD */
+ u16 rcd_link_status; /* Link Status register for RCD */
+ u16 rcd_link_ctrl; /* Link Control register for RCD */
/* Fields used internally */
struct pci_access *access;
@@ -206,6 +209,7 @@ char *pci_get_string_property(struct pci
#define PCI_FILL_DT_NODE 0x2000 /* Device tree node */
#define PCI_FILL_IOMMU_GROUP 0x4000
#define PCI_FILL_RESCAN 0x00010000
+#define PCI_FILL_RCD_LNK 0x00200000 /* CXL RCD Link status properties */
void pci_setup_cache(struct pci_dev *, u8 *cache, int len) PCI_ABI;
diff -up pciutils-3.7.0/lib/sysfs.c.cxxsup pciutils-3.7.0/lib/sysfs.c
--- pciutils-3.7.0/lib/sysfs.c.cxxsup 2024-11-02 17:31:00.588568039 +0100
+++ pciutils-3.7.0/lib/sysfs.c 2024-11-02 17:31:15.374703459 +0100
@@ -376,6 +376,18 @@ sysfs_fill_info(struct pci_dev *d, unsig
done |= PCI_FILL_DT_NODE;
}
+ if (flags & PCI_FILL_RCD_LNK)
+ {
+ char buf[OBJBUFSIZE];
+ if (sysfs_get_string(d, "rcd_link_cap", buf, 0))
+ d->rcd_link_cap = strtoul(buf, NULL, 16);
+ if (sysfs_get_string(d, "rcd_link_ctrl", buf, 0))
+ d->rcd_link_ctrl = strtoul(buf, NULL, 16);
+ if (sysfs_get_string(d, "rcd_link_status", buf, 0))
+ d->rcd_link_status = strtoul(buf, NULL, 16);
+ done |= PCI_FILL_RCD_LNK;
+ }
+
return done | pci_generic_fill_info(d, flags & ~done);
}
diff -up pciutils-3.7.0/ls-caps.c.cxxsup pciutils-3.7.0/ls-caps.c
--- pciutils-3.7.0/ls-caps.c.cxxsup 2024-11-02 17:31:00.587568030 +0100
+++ pciutils-3.7.0/ls-caps.c 2024-11-02 17:31:00.589568049 +0100
@@ -8,6 +8,7 @@
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
#include "lspci.h"
@@ -1336,6 +1337,68 @@ static void cap_express_slot2(struct dev
/* No capabilities that require this field in PCIe rev2.0 spec. */
}
+static void cap_express_link_rcd(struct device *d)
+{
+ u32 t, aspm, cap_speed, cap_width, sta_speed, sta_width;
+ u16 w;
+ struct pci_dev *pdev = d->dev;
+
+ if (!pdev->rcd_link_cap)
+ return;
+ t = pdev->rcd_link_cap;
+ aspm = (t & PCI_EXP_LNKCAP_ASPM) >> 10;
+ cap_speed = t & PCI_EXP_LNKCAP_SPEED;
+ cap_width = (t & PCI_EXP_LNKCAP_WIDTH) >> 4;
+ printf("\t\tLnkCap:\tPort #%d, Speed %s, Width x%d, ASPM %s",
+ t >> 24,
+ link_speed(cap_speed), cap_width,
+ aspm_support(aspm));
+ if (aspm) {
+ printf(", Exit Latency ");
+ if (aspm & 1)
+ printf("L0s %s", latency_l0s((t & PCI_EXP_LNKCAP_L0S) >> 12));
+ if (aspm & 2)
+ printf("%sL1 %s", (aspm & 1) ? ", " : "",
+ latency_l1((t & PCI_EXP_LNKCAP_L1) >> 15));
+ }
+ printf("\n");
+ printf("\t\t\tClockPM%c Surprise%c LLActRep%c BwNot%c ASPMOptComp%c\n",
+ FLAG(t, PCI_EXP_LNKCAP_CLOCKPM),
+ FLAG(t, PCI_EXP_LNKCAP_SURPRISE),
+ FLAG(t, PCI_EXP_LNKCAP_DLLA),
+ FLAG(t, PCI_EXP_LNKCAP_LBNC),
+ FLAG(t, PCI_EXP_LNKCAP_AOC));
+
+ w = pdev->rcd_link_ctrl;
+ printf("\t\tLnkCtl:\tASPM %s;", aspm_enabled(w & PCI_EXP_LNKCTL_ASPM));
+ printf(" Disabled%c CommClk%c\n\t\t\tExtSynch%c ClockPM%c AutWidDis%c BWInt%c AutBWInt%c\n",
+ FLAG(w, PCI_EXP_LNKCTL_DISABLE),
+ FLAG(w, PCI_EXP_LNKCTL_CLOCK),
+ FLAG(w, PCI_EXP_LNKCTL_XSYNCH),
+ FLAG(w, PCI_EXP_LNKCTL_CLOCKPM),
+ FLAG(w, PCI_EXP_LNKCTL_HWAUTWD),
+ FLAG(w, PCI_EXP_LNKCTL_BWMIE),
+ FLAG(w, PCI_EXP_LNKCTL_AUTBWIE));
+
+ w = pdev->rcd_link_status;
+ sta_speed = w & PCI_EXP_LNKSTA_SPEED;
+ sta_width = (w & PCI_EXP_LNKSTA_WIDTH) >> 4;
+ printf("\t\tLnkSta:\tSpeed %s%s, Width x%d%s\n",
+ link_speed(sta_speed),
+ link_compare(sta_speed, cap_speed),
+ sta_width,
+ link_compare(sta_width, cap_width));
+ printf("\t\t\tTrErr%c Train%c SlotClk%c DLActive%c BWMgmt%c ABWMgmt%c\n",
+ FLAG(w, PCI_EXP_LNKSTA_TR_ERR),
+ FLAG(w, PCI_EXP_LNKSTA_TRAIN),
+ FLAG(w, PCI_EXP_LNKSTA_SL_CLK),
+ FLAG(w, PCI_EXP_LNKSTA_DL_ACT),
+ FLAG(w, PCI_EXP_LNKSTA_BWMGMT),
+ FLAG(w, PCI_EXP_LNKSTA_AUTBW));
+
+ return;
+}
+
static int
cap_express(struct device *d, int where, int cap)
{
@@ -1400,6 +1463,9 @@ cap_express(struct device *d, int where,
cap_express_dev(d, where, type);
if (link)
cap_express_link(d, where, type);
+ else if (d->dev->rcd_link_cap)
+ cap_express_link_rcd(d);
+
if (slot)
cap_express_slot(d, where);
if (type == PCI_EXP_TYPE_ROOT_PORT || type == PCI_EXP_TYPE_ROOT_EC)
diff -up pciutils-3.7.0/lspci.c.cxxsup pciutils-3.7.0/lspci.c
--- pciutils-3.7.0/lspci.c.cxxsup 2024-11-02 17:31:00.589568049 +0100
+++ pciutils-3.7.0/lspci.c 2024-11-02 17:31:25.268794076 +0100
@@ -730,7 +730,8 @@ show_verbose(struct device *d)
show_terse(d);
pci_fill_info(p, PCI_FILL_IRQ | PCI_FILL_BASES | PCI_FILL_ROM_BASE | PCI_FILL_SIZES |
- PCI_FILL_PHYS_SLOT | PCI_FILL_NUMA_NODE | PCI_FILL_DT_NODE | PCI_FILL_IOMMU_GROUP);
+ PCI_FILL_PHYS_SLOT | PCI_FILL_NUMA_NODE | PCI_FILL_DT_NODE | PCI_FILL_IOMMU_GROUP |
+ PCI_FILL_RCD_LNK);
irq = p->irq;
switch (htype)

View File

@ -1,22 +0,0 @@
diff --git a/ls-caps.c b/ls-caps.c
index b616a4be..db565569 100644
--- a/ls-caps.c
+++ b/ls-caps.c
@@ -751,6 +751,8 @@ static char *link_speed(int speed)
return "16GT/s";
case 5:
return "32GT/s";
+ case 6:
+ return "64GT/s";
default:
return "unknown";
}
@@ -1197,6 +1199,8 @@ static const char *cap_express_link2_speed(int type)
return "16GT/s";
case 5:
return "32GT/s";
+ case 6:
+ return "64GT/s";
default:
return "Unknown";
}

View File

@ -1,16 +0,0 @@
diff --git a/ls-caps.c b/ls-caps.c
index fce9502b..2c99812c 100644
--- a/ls-caps.c
+++ b/ls-caps.c
@@ -1191,8 +1191,10 @@ static const char *cap_express_link2_speed_cap(int vector)
* permitted to skip support for any data rates between 2.5GT/s and the
* highest supported rate.
*/
- if (vector & 0x60)
+ if (vector & 0x40)
return "RsvdP";
+ if (vector & 0x20)
+ return "2.5-64GT/s";
if (vector & 0x10)
return "2.5-32GT/s";
if (vector & 0x08)

View File

@ -1,11 +1,7 @@
Name: pciutils Name: pciutils
Version: 3.7.0 Version: 3.7.0
Release: 7%{?dist} Release: 3%{?dist}
Summary: PCI bus related utilities Source: https://mirrors.edge.kernel.org/pub/software/utils/pciutils/%{name}-%{version}.tar.xz
License: GPLv2+
URL: https://mj.ucw.cz/sw/pciutils/
Source0: https://www.kernel.org/pub/software/utils/pciutils/%{name}-%{version}.tar.xz
Source1: multilibconfigh Source1: multilibconfigh
#change pci.ids directory to hwdata, fedora/rhel specific #change pci.ids directory to hwdata, fedora/rhel specific
@ -13,20 +9,19 @@ Patch1: pciutils-2.2.1-idpath.patch
#add support for directory with another pci.ids, rejected by upstream, rhbz#195327 #add support for directory with another pci.ids, rejected by upstream, rhbz#195327
Patch2: pciutils-dir-d.patch Patch2: pciutils-dir-d.patch
Patch3: pciutils-3.7.0-decodercec.patch Patch4: pciutils-3.5.6-freefix.patch
# pcie6 data rate support, from upstream, for <= 3.11, #RHEL-61959 # from upstream, for pciutils <= 3.7.0
# https://github.com/pciutils/pciutils/commit/5bdf63b6b1bc35b59c4b3f47f7ca83ca1868155b Patch5: pciutils-3.7.0-decodercec.patch
# https://github.com/pciutils/pciutils/commit/90d270fa720862ee357735b494a0b58643a27061
Patch4: pciutils-3.7.0-pcie6datarate1of2.patch
Patch5: pciutils-3.7.0-pcie6datarate2of2.patch
#cxl1.1 device link status, from upstream, for < 3.13, #RHEL-29162
Patch6: pciutils-3.7.0-cxllinkstatus.patch
License: GPLv2+
URL: http://atrey.karlin.mff.cuni.cz/~mj/pciutils.shtml
ExclusiveOS: Linux
Requires: hwdata Requires: hwdata
Requires: %{name}-libs = %{version}-%{release} Requires: %{name}-libs = %{version}-%{release}
BuildRequires: gcc make sed kmod-devel BuildRequires: sed kmod-devel
Summary: PCI bus related utilities
Group: Applications/System
Provides: /sbin/lspci /sbin/setpci Provides: /sbin/lspci /sbin/setpci
%description %description
@ -35,7 +30,8 @@ setting devices connected to the PCI bus.
%package devel %package devel
Summary: Linux PCI development library Summary: Linux PCI development library
Requires: zlib-devel pkgconfig %{name}%{?_isa} = %{version}-%{release} Group: Development/Libraries
Requires: zlib-devel pkgconfig %{name}-libs%{?_isa} = %{version}-%{release}
%description devel %description devel
This package contains a library for inspecting and setting This package contains a library for inspecting and setting
@ -43,6 +39,7 @@ devices connected to the PCI bus.
%package libs %package libs
Summary: Linux PCI library Summary: Linux PCI library
Group: System Environment/Libraries
%description libs %description libs
This package contains a library for inspecting and setting This package contains a library for inspecting and setting
@ -50,6 +47,7 @@ devices connected to the PCI bus.
%package devel-static %package devel-static
Summary: Linux PCI static library Summary: Linux PCI static library
Group: System Environment/Libraries
Requires: %{name}-devel%{?_isa} = %{version}-%{release} Requires: %{name}-devel%{?_isa} = %{version}-%{release}
%description devel-static %description devel-static
@ -57,42 +55,47 @@ This package contains a static library for inspecting and setting
devices connected to the PCI bus. devices connected to the PCI bus.
%prep %prep
%autosetup -p1 -N %setup -q -n pciutils-%{version}
%patch -P 1 -p 1 %patch1 -p1 -b .idpath
%patch -P 2 -p 1 %patch2 -p1 -b .dird
%patch -P 3 -p 1 %patch4 -p1 -b .freefix
%patch -P 4 -p 1 %patch5 -p1 -b .decodercec
%patch -P 5 -p 1
%patch -P 6 -p 1 -b .cxxsup
%build %build
%make_build SHARED="no" ZLIB="no" LIBKMOD=yes STRIP="" OPT="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" PREFIX="/usr" LIBDIR="%{_libdir}" IDSDIR="/usr/share/hwdata" PCI_IDS="pci.ids" make SHARED="no" ZLIB="no" LIBKMOD=yes STRIP="" OPT="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" PREFIX="/usr" LIBDIR="%{_libdir}" IDSDIR="/usr/share/hwdata" PCI_IDS="pci.ids" %{?_smp_mflags}
mv lib/libpci.a lib/libpci.a.toinstall mv lib/libpci.a lib/libpci.a.toinstall
make clean make clean
%make_build SHARED="yes" ZLIB="no" LIBKMOD=yes STRIP="" OPT="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" PREFIX="/usr" LIBDIR="%{_libdir}" IDSDIR="/usr/share/hwdata" PCI_IDS="pci.ids" make SHARED="yes" ZLIB="no" LIBKMOD=yes STRIP="" OPT="$RPM_OPT_FLAGS" LDFLAGS="$RPM_LD_FLAGS" PREFIX="/usr" LIBDIR="%{_libdir}" IDSDIR="/usr/share/hwdata" PCI_IDS="pci.ids" %{?_smp_mflags}
#fix lib vs. lib64 in libpci.pc (static Makefile is used)
sed -i "s|^libdir=.*$|libdir=/%{_libdir}|" lib/libpci.pc
%install %install
install -d $RPM_BUILD_ROOT{%{_sbindir},%{_mandir}/man{7,8},%{_libdir},%{_libdir}/pkgconfig,%{_includedir}/pci} rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT{%{_sbindir},%{_mandir}/man8,%{_libdir},%{_libdir}/pkgconfig,%{_includedir}/pci}
install -p lspci setpci update-pciids $RPM_BUILD_ROOT%{_sbindir} install -p lspci setpci update-pciids $RPM_BUILD_ROOT%{_sbindir}
install -p -m 644 lspci.8 setpci.8 update-pciids.8 $RPM_BUILD_ROOT%{_mandir}/man8 install -p -m 644 lspci.8 setpci.8 update-pciids.8 $RPM_BUILD_ROOT%{_mandir}/man8
install -p -m 644 pcilib.7 $RPM_BUILD_ROOT%{_mandir}/man7
install -p lib/libpci.so.* $RPM_BUILD_ROOT%{_libdir}/ install -p lib/libpci.so.* $RPM_BUILD_ROOT%{_libdir}/
ln -s $(basename $RPM_BUILD_ROOT%{_libdir}/*.so.*.*.*) $RPM_BUILD_ROOT%{_libdir}/libpci.so ln -s $(basename $RPM_BUILD_ROOT%{_libdir}/*.so.*.*.*) $RPM_BUILD_ROOT%{_libdir}/libpci.so
mv lib/libpci.a.toinstall lib/libpci.a mv lib/libpci.a.toinstall lib/libpci.a
install -p -m 644 lib/libpci.a $RPM_BUILD_ROOT%{_libdir} install -p -m 644 lib/libpci.a $RPM_BUILD_ROOT%{_libdir}
install -p -m 644 lib/pci.h $RPM_BUILD_ROOT%{_includedir}/pci /sbin/ldconfig -N $RPM_BUILD_ROOT/%{_libdir}
install -p -m 644 lib/header.h $RPM_BUILD_ROOT%{_includedir}/pci install -p lib/pci.h $RPM_BUILD_ROOT%{_includedir}/pci
install -p -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_includedir}/pci/config.h install -p lib/header.h $RPM_BUILD_ROOT%{_includedir}/pci
install -p -m 644 lib/config.h $RPM_BUILD_ROOT%{_includedir}/pci/config.%{_lib}.h install -p %{SOURCE1} $RPM_BUILD_ROOT%{_includedir}/pci/config.h
install -p -m 644 lib/types.h $RPM_BUILD_ROOT%{_includedir}/pci install -p lib/config.h $RPM_BUILD_ROOT%{_includedir}/pci/config.%{_lib}.h
install -p -m 644 lib/libpci.pc $RPM_BUILD_ROOT%{_libdir}/pkgconfig install -p lib/types.h $RPM_BUILD_ROOT%{_includedir}/pci
install -p lib/libpci.pc $RPM_BUILD_ROOT%{_libdir}/pkgconfig
%ldconfig_scriptlets libs %post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%files %files
%doc README ChangeLog pciutils.lsm %doc README ChangeLog pciutils.lsm
@ -109,64 +112,31 @@ install -p -m 644 lib/libpci.pc $RPM_BUILD_ROOT%{_libdir}/pkgconfig
%{_libdir}/libpci.a %{_libdir}/libpci.a
%files devel %files devel
%defattr(0644, root, root, 0755)
%{_libdir}/pkgconfig/libpci.pc %{_libdir}/pkgconfig/libpci.pc
%{_libdir}/libpci.so %{_libdir}/libpci.so
%{_includedir}/pci %{_includedir}/pci
%{_mandir}/man7/*
%changelog %changelog
* Sat Nov 02 2024 Michal Hlavinka <mhlavink@redhat.com> - 3.7.0-7 * Tue Sep 06 2022 Michal Hlavinka <mhlavink@redhat.com> - 3.7.0-3
- add support for cxl1.1 device link status information (#RHEL-29162) - fix dependency of devel subpkg on libs (#2111644)
* Thu Oct 31 2024 Michal Hlavinka <mhlavink@redhat.com> - 3.7.0-6 * Tue Sep 06 2022 Michal Hlavinka <mhlavink@redhat.com> - 3.7.0-2
- add PCIe 6.0 data rate (64 GT/s) support (#RHEL-61959) - fix locations wrt UsrMove(#2111644)
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 3.7.0-5
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 3.7.0-4
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Tue Feb 02 2021 Michal Hlavinka <mhlavink@redhat.com> - 3.7.0-3
- spec file cleanup
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 3.7.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Fri Oct 30 2020 Michal Hlavinka <mhlavink@redhat.com> - 3.7.0-1 * Fri Oct 30 2020 Michal Hlavinka <mhlavink@redhat.com> - 3.7.0-1
- updated to 3.7.0 - pciutils updated to 3.7.0, add support for basic DVSEC and CXL DVSEC (#1856436)
- add support for RCEC Associated Endpoint (#1856440)
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.4-2 * Wed May 06 2020 Michal Hlavinka <mhlavink@redhat.com> - 3.6.4-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - rebuild package
* Fri Feb 28 2020 Michal Hlavinka <mhlavink@redhat.com> - 3.6.4-1 * Mon May 04 2020 Michal Hlavinka <mhlavink@redhat.com> - 3.6.4-1
- pciutils updated to 3.6.4 - pciutils updated to 3.6.4
- some of the VPD data fields were displayed as unknown (#1828741)
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.3-2 * Tue Oct 16 2018 Michal Hlavinka <mhlavink@redhat.com> - 3.5.6-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - fix covscan found issues (#1607017)
* Wed Jan 22 2020 Peter Robinson <pbrobinson@fedoraproject.org> 3.6.3-1
- pciutils updated to 3.6.3
- spec cleanups, use %%license, use kernel.org download
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.6.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Aug 13 2018 Michal Hlavinka <mhlavink@redhat.com> - 3.6.2-1
- pciutils updated to 3.6.2
* Fri Jul 13 2018 Michal Hlavinka <mhlavink@redhat.com> - 3.6.1-1
- pciutils updated to 3.6.1
* Mon Jul 09 2018 Michal Hlavinka <mhlavink@redhat.com> - 3.6.0-1
- pciutils updated to 3.6.0
* Wed Mar 07 2018 Michal Hlavinka <mhlavink@redhat.com> - 3.5.6-4
- add gcc buildrequire
* Sat Feb 24 2018 Florian Weimer <fweimer@redhat.com> - 3.5.6-3 * Sat Feb 24 2018 Florian Weimer <fweimer@redhat.com> - 3.5.6-3
- Use LDFLAGS from redhat-rpm-config - Use LDFLAGS from redhat-rpm-config