diff --git a/0001-ibacm-acm.c-load-plugin-while-it-is-soft-link.patch b/0001-ibacm-acm.c-load-plugin-while-it-is-soft-link.patch deleted file mode 100644 index 105319858bd8202383136c2161a897ce99481a25..0000000000000000000000000000000000000000 --- a/0001-ibacm-acm.c-load-plugin-while-it-is-soft-link.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 91b414f645b0fdca914151280bb14a12258a56e7 Mon Sep 17 00:00:00 2001 -From: Honggang Li -Date: Wed, 13 Jan 2021 11:51:04 +0800 -Subject: [PATCH] ibacm: acm.c load plugin while it is soft link - -NOTE: THIS ONE IS RHEL SPECIFIC WORKAROUND COMMIT. -https://github.com/linux-rdma/rdma-core/pull/923 - -Because of commit ad5d934d688911149d795aee1d3b9fa06bf171a9, -the provider libdsap.so.1.0.0 was not opened/used for address resolution -for OPA device. - -As discussed in this closed PR: -https://github.com/linux-rdma/rdma-core/pull/848 - -I create a soft link for libdsap.so => libdsap.so.1.0.0 . The soft link -was ignored because it is a not regular file. - -Signed-off-by: Honggang Li ---- - ibacm/src/acm.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ibacm/src/acm.c b/ibacm/src/acm.c -index f1c8a2fabfb4..77ffda316b0c 100644 ---- a/ibacm/src/acm.c -+++ b/ibacm/src/acm.c -@@ -2878,7 +2878,7 @@ static int acm_open_providers(void) - acm_log(0, "Error - could not stat: %s\n", file_name); - continue; - } -- if (!S_ISREG(buf.st_mode)) -+ if (!(S_ISREG(buf.st_mode) || S_ISLNK(buf.st_mode))) - continue; - - acm_log(2, "Loading provider %s...\n", file_name); --- -2.25.4 - diff --git a/0001-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch b/0001-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch new file mode 100644 index 0000000000000000000000000000000000000000..7ee61e6bd91230787f908449d7026de3556a6f9d --- /dev/null +++ b/0001-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch @@ -0,0 +1,42 @@ +From 1c63f25b55ca4f5317e1c85b548469bbc747e147 Mon Sep 17 00:00:00 2001 +From: "Goldman, Adam" +Date: Tue, 4 Feb 2020 08:55:20 -0500 +Subject: [PATCH] kernel-boot: Do not perform device rename on OPA devices + +PSM2 will not run with recent rdma-core releases. Several tools and +libraries like PSM2, require the hfi1 name to be present. + +Recent rdma-core releases added a new feature to rename kernel devices, +but the default configuration will not work with hfi1 fabrics. + +Related opa-psm2 github issue: + https://github.com/intel/opa-psm2/issues/43 + +Fixes: 5b4099d47be3 ("kernel-boot: Perform device rename to make stable names") +Reviewed-by: Mike Marciniszyn +Signed-off-by: Goldman, Adam +--- + kernel-boot/rdma-persistent-naming.rules | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/kernel-boot/rdma-persistent-naming.rules b/kernel-boot/rdma-persistent-naming.rules +index 6f9c53a5..3ce34ea9 100644 +--- a/kernel-boot/rdma-persistent-naming.rules ++++ b/kernel-boot/rdma-persistent-naming.rules +@@ -26,10 +26,10 @@ + # Device type = RoCE + # mlx5_0 -> rocex525400c0fe123455 + # +-ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK" ++ACTION=="add", SUBSYSTEM=="infiniband", KERNEL!="hfi1*", PROGRAM="rdma_rename %k NAME_FALLBACK" + + # Example: + # * NAME_FIXED + # fixed name for specific board_id + # +-#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib" +\ No newline at end of file ++#ACTION=="add", ATTR{board_id}=="MSF0010110035", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FIXED myib" +-- +2.30.1 + diff --git a/0001-tests-Fix-comparing-qp_state-for-iWARP-providers.patch b/0001-tests-Fix-comparing-qp_state-for-iWARP-providers.patch deleted file mode 100644 index 686531e744b7241ac548f72a737697f0c1d55e14..0000000000000000000000000000000000000000 --- a/0001-tests-Fix-comparing-qp_state-for-iWARP-providers.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 698f2ae804767635342694d31d9590fe6ad2217e Mon Sep 17 00:00:00 2001 -From: Kamal Heib -Date: Wed, 8 Dec 2021 16:12:11 +0200 -Subject: [PATCH] tests: Fix comparing qp_state for iWARP providers. - -The initial QP state for iWARP providers is IBV_QPS_INIT (not -IBV_QPS_RESET), Change the test to handle this case. - -Signed-off-by: Kamal Heib ---- - tests/test_qp.py | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) - -diff --git a/tests/test_qp.py b/tests/test_qp.py -index b952c95e..a66f724f 100644 ---- a/tests/test_qp.py -+++ b/tests/test_qp.py -@@ -14,6 +14,7 @@ from pyverbs.pyverbs_error import PyverbsRDMAError - from pyverbs.qp import QPInitAttr, QPAttr, QP - from tests.base import PyverbsAPITestCase - import pyverbs.utils as pu -+import pyverbs.device as d - import pyverbs.enums as e - from pyverbs.pd import PD - from pyverbs.cq import CQ -@@ -177,6 +178,11 @@ class QPTest(PyverbsAPITestCase): - self.assertLessEqual(orig_cap.max_recv_sge, init_attr.cap.max_recv_sge) - self.assertLessEqual(orig_cap.max_inline_data, init_attr.cap.max_inline_data) - -+ def get_node_type(self): -+ for dev in d.get_device_list(): -+ if dev.name.decode() == self.ctx.name: -+ return dev.node_type -+ - def query_qp_common_test(self, qp_type): - with PD(self.ctx) as pd: - with CQ(self.ctx, 100, None, None, 0) as cq: -@@ -190,14 +196,20 @@ class QPTest(PyverbsAPITestCase): - caps = qia.cap - qp = self.create_qp(pd, qia, False, False, self.ib_port) - qp_attr, qp_init_attr = qp.query(e.IBV_QP_STATE | e.IBV_QP_CAP) -- self.verify_qp_attrs(caps, e.IBV_QPS_RESET, qp_init_attr, qp_attr) -+ if self.get_node_type() == e.IBV_NODE_RNIC: -+ self.verify_qp_attrs(caps, e.IBV_QPS_INIT, qp_init_attr, qp_attr) -+ else: -+ self.verify_qp_attrs(caps, e.IBV_QPS_RESET, qp_init_attr, qp_attr) - - # Extended QP - qia = get_qp_init_attr_ex(cq, pd, self.attr, self.attr_ex, qp_type) - caps = qia.cap # Save them to verify values later - qp = self.create_qp(self.ctx, qia, True, False, self.ib_port) - qp_attr, qp_init_attr = qp.query(e.IBV_QP_STATE | e.IBV_QP_CAP) -- self.verify_qp_attrs(caps, e.IBV_QPS_RESET, qp_init_attr, qp_attr) -+ if self.get_node_type() == e.IBV_NODE_RNIC: -+ self.verify_qp_attrs(caps, e.IBV_QPS_INIT, qp_init_attr, qp_attr) -+ else: -+ self.verify_qp_attrs(caps, e.IBV_QPS_RESET, qp_init_attr, qp_attr) - - def test_query_rc_qp(self): - """ --- -2.33.1 - diff --git a/download b/download deleted file mode 100644 index 91ee9dc2894f930fa5c69c1a08bbd1a72ccbefdf..0000000000000000000000000000000000000000 --- a/download +++ /dev/null @@ -1 +0,0 @@ -efc96cfed2ee6898c7a6f234c185f87a rdma-core-37.2.tar.gz diff --git a/ibdev2netdev b/ibdev2netdev deleted file mode 100644 index b9f6714f648495e57ad1bcb0bced8e35e39c40f7..0000000000000000000000000000000000000000 --- a/ibdev2netdev +++ /dev/null @@ -1,203 +0,0 @@ -#! /bin/bash - -usage() -{ - echo "$(basename $0) " - echo "-h, --help print help message" - echo "-v, --verbose print more info" -} - -case $1 in - "-h" | "--help") - usage - exit 0 - ;; -esac - -if (( $# > 1 )); then - usage - exit -1 -fi - -if (( $# == 1 )) && [ "$1" != "-v" ]; then - usage - exit -1 -fi - -ibdevs=$(ls /sys/class/infiniband/) - -devs='' -for netdev in $(/bin/ls /sys/class/net/); do - if [ -e /sys/class/net/${netdev}/device/infiniband ]; then - devs="${devs} ${netdev}" - fi -done - -if [ "x$devs" == "x" ]; then - # no relevant devices - quit immediately - exit -fi - -for d in $devs; do - if [ -f /sys/class/net/$d/dev_id ]; then - oldstyle=n - break - fi -done - -function print_line() -{ - echo "$1 port $2 <===> $3" -} - -function find_guid() -{ - ibdevs=$(ls /sys/class/infiniband/) - for ibdev in $ibdevs; do - ports=$(ls /sys/class/infiniband/$ibdev/ports/) - for port in $ports; do - gids=$(ls /sys/class/infiniband/$ibdev/ports/$port/gids) - for gid in $gids; do - pguid=$(cat /sys/class/infiniband/$ibdev/ports/$port/gids/$gid | cut -b 21- | sed -e 's/://g') - if [ x$pguid == x$1 ]; then - print_line $ibdev $port $2 - fi - done - done - done -} - -function find_mac() -{ - ibdevs=$(ls /sys/class/infiniband/) - for ibdev in $ibdevs; do - type=$(cat /sys/class/infiniband/$ibdev/node_type|cut -d ' ' -f 2) - ports=$(ls /sys/class/infiniband/$ibdev/ports/) - for port in $ports; do - gids=$(ls /sys/class/infiniband/$ibdev/ports/$port/gids) - for gid in $gids; do - if [[ "$type" = "RNIC" ]]; then - pmac=$(cat /sys/class/infiniband/$ibdev/ports/$port/gids/$gid | cut -b 1-14|sed -e 's/://g') - else - first=$(cat /sys/class/infiniband/$ibdev/ports/$port/gids/$gid | cut -b 21-22) - first=$(( first ^ 2 )) - first=$(printf "%02x" $first) - second=$(cat /sys/class/infiniband/$ibdev/ports/$port/gids/$gid | cut -b 21- | sed -e 's/://g' | cut -b 3-6) - third=$(cat /sys/class/infiniband/$ibdev/ports/$port/gids/$gid | cut -b 21- | sed -e 's/://g' | cut -b 11-) - pmac=$first$second$third - fi - if [ x$pmac == x$1 ]; then - print_line $ibdev $port $2 - fi - done - done - done -} - -if [ "x$oldstyle" == "xn" ]; then - for d in $ibdevs; do - ibrsc=$(cat /sys/class/infiniband/$d/device/resource) - eths=$(ls /sys/class/net/) - for eth in $eths; do - filepath_resource=/sys/class/net/$eth/device/resource - - if [ -f $filepath_resource ]; then - ethrsc=$(cat $filepath_resource) - if [ "x$ethrsc" == "x$ibrsc" ]; then - filepath_devid=/sys/class/net/$eth/dev_id - filepath_devport=/sys/class/net/$eth/dev_port - if [ -f $filepath_devid ]; then - port1=0 - if [ -f $filepath_devport ]; then - port1=$(cat $filepath_devport) - port1=$(printf "%d" $port1) - fi - - port=$(cat $filepath_devid) - port=$(printf "%d" $port) - if [ $port1 -gt $port ]; then - port=$port1 - fi - - port=$(( port + 1 )) - - filepath_carrier=/sys/class/net/$eth/carrier - - if [ -f $filepath_carrier ]; then - link_state=$(cat $filepath_carrier 2> /dev/null) - if (( link_state == 1 )); then - link_state="Up" - else - link_state="Down" - fi - else - link_state="NA" - fi - - if [ "$1" == "-v" ]; then - filepath_portstate=/sys/class/infiniband/$d/ports/$port/state - filepath_deviceid=/sys/class/infiniband/$d/device/device - filepath_fwver=/sys/class/infiniband/$d/fw_ver - filepath_vpd=/sys/class/infiniband/$d/device/vpd - - # read port state - if [ -f $filepath_portstate ]; then - ibstate=$(printf "%-6s" "$(cat $filepath_portstate | gawk '{print $2}')") - else - ibstate="na" - fi - - # read device - if [ -f $filepath_deviceid ]; then - devid=$(printf "mt%d" "$(cat $filepath_deviceid)") - else - devid="na" - fi - - # read fw version - if [ -f $filepath_fwver ]; then - fwver=$(cat $filepath_fwver) - else - fwver="na" - fi - - # read device description and part id from the vpd - if [ -f $filepath_vpd ]; then - tmp=$ifs - ifs=":" - vpd_content=`cat $filepath_vpd | tr -d '\0'` - devdesc=$(printf "%-15s" "$(echo $vpd_content | strings | head -1)") - partid=$(printf "%-11s" "$(echo $vpd_content | strings | head -4 | tail -1 | gawk '{print $1}')") - ifs=$tmp - else - devdesc="" - partid="na" - fi - - echo "$d ($devid - $partid) $devdesc fw $fwver port $port ($ibstate) ==> $eth ($link_state)" - else - echo "$d port $port ==> $eth ($link_state)" - fi - fi - fi - fi - done - done -else -########################## -### old style -########################## - ifcs=$(ifconfig -a | egrep '^eth|^ib' | gawk '{print $1}') - - for ifc in $ifcs; do - len=$(cat /sys/class/net/$ifc/addr_len) - if (( len == 20 )); then - guid=$(cat /sys/class/net/$ifc/address | cut -b 37- | sed -e 's/://g') - find_guid $guid $ifc - elif (( len == 6)); then - mac=$(cat /sys/class/net/$ifc/address | sed -e 's/://g') - find_mac $mac $ifc - fi - done -fi - diff --git a/rdma-core-41.0.tar.gz b/rdma-core-41.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..19fbd78398613efd77dfd570feb6c558a04666dc Binary files /dev/null and b/rdma-core-41.0.tar.gz differ diff --git a/rdma-core.spec b/rdma-core.spec index ecc8ed71e99220c118431f65fabad5f8cb5c00b2..b97b6a2bd4563ecee0ebbd8e269826298578100b 100644 --- a/rdma-core.spec +++ b/rdma-core.spec @@ -1,7 +1,6 @@ -%define anolis_release .0.2 Name: rdma-core -Version: 37.2 -Release: 1%{anolis_release}%{?dist} +Version: 41.0 +Release: 3%{?dist} Summary: RDMA core userspace libraries and daemons # Almost everything is licensed under the OFA dual GPLv2, 2 Clause BSD license @@ -11,17 +10,8 @@ Summary: RDMA core userspace libraries and daemons License: GPLv2 or BSD Url: https://github.com/linux-rdma/rdma-core Source: https://github.com/linux-rdma/rdma-core/releases/download/v%{version}/%{name}-%{version}.tar.gz -Source1: ibdev2netdev -# Upstream had removed rxe_cfg from upstream git repo. RHEL-8.X has -# to keep it for backward compatibility. 'rxe_cfg' and 'rxe_cfg.8.gz' -# are extracted from libibverbs-26.0-8.el8 . -Source2: rxe_cfg -Source3: rxe_cfg.8.gz -Patch3: udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch -# RHEL specific patch for OPA ibacm plugin -Patch300: 0001-ibacm-acm.c-load-plugin-while-it-is-soft-link.patch - -Patch301: 0001-tests-Fix-comparing-qp_state-for-iWARP-providers.patch +Patch1: 0001-kernel-boot-Do-not-perform-device-rename-on-OPA-devi.patch +Patch2: udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch # Do not build static libs by default. %define with_static %{?_with_static: 1} %{?!_with_static: 0} @@ -35,10 +25,8 @@ BuildRequires: libudev-devel BuildRequires: pkgconfig BuildRequires: pkgconfig(libnl-3.0) BuildRequires: pkgconfig(libnl-route-3.0) -BuildRequires: python3-docutils -%ifarch %{valgrind_arches} +BuildRequires: /usr/bin/rst2man BuildRequires: valgrind-devel -%endif BuildRequires: systemd BuildRequires: systemd-devel %if 0%{?fedora} >= 32 || 0%{?rhel} >= 8 @@ -57,17 +45,21 @@ BuildRequires: python %endif %endif -BuildRequires: sed +%if 0%{?rhel} >= 8 || 0%{?fedora} >= 30 || %{with_pyverbs} +BuildRequires: python3-docutils +%else +BuildRequires: python-docutils +%endif + +%if 0%{?fedora} >= 21 || 0%{?rhel} >= 8 BuildRequires: perl-generators +%endif Requires: pciutils # Red Hat/Fedora previously shipped redhat/ as a stand-alone # package called 'rdma', which we're supplanting here. Provides: rdma = %{version}-%{release} Obsoletes: rdma < %{version}-%{release} -Provides: rdma-ndd = %{version}-%{release} -Obsoletes: rdma-ndd < %{version}-%{release} -# the ndd utility moved from infiniband-diags to rdma-core Conflicts: infiniband-diags <= 1.6.7 # Since we recommend developers use Ninja, so should packagers, for consistency. @@ -76,8 +68,13 @@ Conflicts: infiniband-diags <= 1.6.7 # Ninja was introduced in FC23 BuildRequires: ninja-build %define CMAKE_FLAGS -GNinja +%if 0%{?fedora} >= 33 || 0%{?rhel} >= 9 +%define make_jobs ninja-build -C %{_vpath_builddir} -v %{?_smp_mflags} +%define cmake_install DESTDIR=%{buildroot} ninja-build -C %{_vpath_builddir} install +%else %define make_jobs ninja-build -v %{?_smp_mflags} %define cmake_install DESTDIR=%{buildroot} ninja-build install +%endif %else # Fallback to make otherwise BuildRequires: make @@ -85,14 +82,20 @@ BuildRequires: make %define cmake_install DESTDIR=%{buildroot} make install %endif -%ifnarch loongarch64 +%if 0%{?fedora} >= 25 || 0%{?rhel} == 8 +# pandoc was introduced in FC25, Centos8 BuildRequires: pandoc %endif +%if 0%{?fedora} >= 34 +# self obsoletes to remove i686 multilib package when updating to F34 +Obsoletes: rdma-core < 34.0-3 +%endif + %description -RDMA core userspace infrastructure and documentation, including kernel -driver-specific modprobe override configs, IPoIB network scripts, -dracut rules, and the rdma-ndd utility. +RDMA core userspace infrastructure and documentation, including initialization +scripts, kernel driver-specific modprobe override configs, IPoIB network +scripts, dracut rules, and the rdma-ndd utility. %package devel Summary: RDMA core development libraries and headers @@ -112,6 +115,13 @@ Provides: infiniband-diags-devel = %{version}-%{release} Obsoletes: infiniband-diags-devel < %{version}-%{release} Provides: libibmad-devel = %{version}-%{release} Obsoletes: libibmad-devel < %{version}-%{release} +%if %{with_static} +# Since our pkg-config files include private references to these packages they +# need to have their .pc files installed too, even for dynamic linking, or +# pkg-config breaks. +BuildRequires: pkgconfig(libnl-3.0) +BuildRequires: pkgconfig(libnl-route-3.0) +%endif %description devel RDMA core development libraries and headers. @@ -142,12 +152,13 @@ Provides: libirdma = %{version}-%{release} Obsoletes: libirdma < %{version}-%{release} Provides: libmlx4 = %{version}-%{release} Obsoletes: libmlx4 < %{version}-%{release} -%ifnarch s390 Provides: libmlx5 = %{version}-%{release} Obsoletes: libmlx5 < %{version}-%{release} -%endif Provides: librxe = %{version}-%{release} Obsoletes: librxe < %{version}-%{release} +%if 0%{?fedora} == 34 +Obsoletes: libibverbs-core < %{version}-%{release} +%endif %description -n libibverbs libibverbs is a library that allows userspace processes to use RDMA @@ -158,7 +169,6 @@ fast path operations. Device-specific plug-in ibverbs userspace drivers are included: -- libbxnt_re: Broadcom NetXtreme-E RoCE HCA - libcxgb4: Chelsio T4 iWARP HCA - libefa: Amazon Elastic Fabric Adapter - libhfi1: Intel Omni-Path HFI @@ -174,9 +184,6 @@ Device-specific plug-in ibverbs userspace drivers are included: %package -n libibverbs-utils Summary: Examples for the libibverbs library Requires: libibverbs%{?_isa} = %{version}-%{release} -# rxe_cfg uses commands provided by these packages -Requires: iproute -Requires: ethtool %description -n libibverbs-utils Useful libibverbs example programs such as ibv_devinfo, which @@ -256,9 +263,12 @@ easy, object-oriented access to IB verbs. %prep %setup -q -%patch3 -p1 -%patch300 -p1 -%patch301 -p1 +%if 0%{?fedora} +%patch1 -p1 +%endif +%if 0%{?rhel} +%patch2 -p1 +%endif %build @@ -301,7 +311,7 @@ easy, object-oriented access to IB verbs. %if %{with_pyverbs} -DNO_PYVERBS=0 %else - -DNO_PYVERBS=1 + -DNO_PYVERBS=1 %endif %make_jobs @@ -324,22 +334,15 @@ install -D -m0644 redhat/rdma.mlx4.sys.modprobe %{buildroot}%{sysmodprobedir}/li install -D -m0755 redhat/rdma.mlx4-setup.sh %{buildroot}%{_libexecdir}/mlx4-setup.sh rm -f %{buildroot}%{_sysconfdir}/rdma/modules/rdma.conf install -D -m0644 redhat/rdma.conf %{buildroot}%{_sysconfdir}/rdma/modules/rdma.conf -# ibdev2netdev helper script -install -D -m0755 %{SOURCE1} %{buildroot}%{_bindir}/ - -# rxe_cfg -install -D -m0755 %{SOURCE2} %{buildroot}%{_bindir}/ -install -D -m0644 %{SOURCE3} %{buildroot}%{_mandir}/man8/ # ibacm -bin/ib_acme -D . -O -# multi-lib conflict resolution hacks (bug 1429362) -sed -i -e 's|%{_libdir}|/usr/lib|' %{buildroot}%{_mandir}/man7/ibacm_prov.7 -sed -i -e 's|%{_libdir}|/usr/lib|' ibacm_opts.cfg -install -D -m0644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/ +(if [ -d %{__cmake_builddir} ]; then cd %{__cmake_builddir}; fi + ./bin/ib_acme -D . -O && + install -D -m0644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/) # Delete the package's init.d scripts rm -rf %{buildroot}/%{_initrddir}/ +rm -f %{buildroot}/%{_sbindir}/srp_daemon.sh # Remove ibverbs provider libs we don't support rm -f %{buildroot}/%{_libdir}/libibverbs/libcxgb3-rdmav*.so @@ -353,6 +356,12 @@ rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/mthca.driver rm -f %{buildroot}/%{_libdir}/libibverbs/libipathverbs-rdmav*.so rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ipathverbs.driver +%ldconfig_scriptlets -n libibverbs + +%ldconfig_scriptlets -n libibumad + +%ldconfig_scriptlets -n librdmacm + %post -n rdma-core if [ -x /sbin/udevadm ]; then /sbin/udevadm trigger --subsystem-match=infiniband --action=change || true @@ -360,22 +369,6 @@ if [ -x /sbin/udevadm ]; then /sbin/udevadm trigger --subsystem-match=infiniband_mad --action=change || true fi -%post -n infiniband-diags -p /sbin/ldconfig -%postun -n infiniband-diags -%ldconfig_postun - -%post -n libibverbs -p /sbin/ldconfig -%postun -n libibverbs -%ldconfig_postun - -%post -n libibumad -p /sbin/ldconfig -%postun -n libibumad -%ldconfig_postun - -%post -n librdmacm -p /sbin/ldconfig -%postun -n librdmacm -%ldconfig_postun - %post -n ibacm %systemd_post ibacm.service %preun -n ibacm @@ -401,7 +394,9 @@ fi %dir %{_sysconfdir}/rdma %dir %{_docdir}/%{name} %doc %{_docdir}/%{name}/README.md +%doc %{_docdir}/%{name}/rxe.md %doc %{_docdir}/%{name}/udev.md +%doc %{_docdir}/%{name}/tag_matching.md %config(noreplace) %{_sysconfdir}/rdma/mlx4.conf %config(noreplace) %{_sysconfdir}/rdma/modules/infiniband.conf %config(noreplace) %{_sysconfdir}/rdma/modules/iwarp.conf @@ -410,9 +405,7 @@ fi %config(noreplace) %{_sysconfdir}/rdma/modules/roce.conf %config(noreplace) %{_sysconfdir}/udev/rules.d/* %dir %{_sysconfdir}/modprobe.d -%ifnarch s390 %config(noreplace) %{_sysconfdir}/modprobe.d/mlx4.conf -%endif %config(noreplace) %{_sysconfdir}/modprobe.d/truescale.conf %{_unitdir}/rdma-hw.target %{_unitdir}/rdma-load-modules@.service @@ -433,7 +426,6 @@ fi %{_libexecdir}/mlx4-setup.sh %{_libexecdir}/truescale-serdes.cmds %{_sbindir}/rdma-ndd -%{_bindir}/ibdev2netdev %{_unitdir}/rdma-ndd.service %{_mandir}/man7/rxe* %{_mandir}/man8/rdma-ndd.* @@ -456,13 +448,11 @@ fi %{_mandir}/man3/umad* %{_mandir}/man3/*_to_ibv_rate.* %{_mandir}/man7/rdma_cm.* -%ifnarch s390 %{_mandir}/man3/mlx5dv* %{_mandir}/man3/mlx4dv* %{_mandir}/man7/efadv* %{_mandir}/man7/mlx5dv* %{_mandir}/man7/mlx4dv* -%endif %{_mandir}/man3/ibnd_* %files -n infiniband-diags @@ -539,25 +529,14 @@ fi %{_libdir}/libefa.so.* %{_libdir}/libibverbs*.so.* %{_libdir}/libibverbs/*.so -%ifnarch s390 %{_libdir}/libmlx5.so.* %{_libdir}/libmlx4.so.* -%endif %config(noreplace) %{_sysconfdir}/libibverbs.d/*.driver %doc %{_docdir}/%{name}/libibverbs.md -%doc %{_docdir}/%{name}/rxe.md -%doc %{_docdir}/%{name}/tag_matching.md -%{_mandir}/man7/rxe* -%ifnarch s390 -%{_mandir}/man7/mlx4dv* -%{_mandir}/man7/mlx5dv* -%endif %files -n libibverbs-utils %{_bindir}/ibv_* %{_mandir}/man1/ibv_* -%{_bindir}/rxe_cfg -%{_mandir}/man8/rxe* %files -n ibacm %config(noreplace) %{_sysconfdir}/rdma/ibacm_opts.cfg @@ -588,7 +567,7 @@ fi %files -n librdmacm %{_libdir}/librdmacm*.so.* %dir %{_libdir}/rsocket -%{_libdir}/rsocket/librspreload.so* +%{_libdir}/rsocket/*.so* %doc %{_docdir}/%{name}/librdmacm.md %{_mandir}/man7/rsocket.* @@ -628,7 +607,6 @@ fi %{_unitdir}/srp_daemon_port@.service %{_sbindir}/ibsrpdm %{_sbindir}/srp_daemon -%{_sbindir}/srp_daemon.sh %{_sbindir}/run_srp_daemon %{_udevrulesdir}/60-srp_daemon.rules %{_mandir}/man5/srp_daemon.service.5* @@ -644,252 +622,157 @@ fi %endif %changelog -* Wed Nov 16 2022 Liwei Ge - 37.2-1.0.2 -- Fix build error - -* Fri Apr 22 2022 Jacob Wang - 37.2-1.0.1 -- Support loongarch64 (Hang Zhao) - -* Thu Jan 06 2022 Honggang Li - 37.2-1 -- Update to upstream v37.2 release for fixes -- Resolves: bz2008509, bz2024865, bz1915555 - -* Tue Nov 09 2021 Honggang Li - 37.1-1 -- Update to upstream v37.1 release for features and fixes -- Resolves: bz1982200, bz1990120, bz1982131 - -* Fri May 14 2021 Honggang Li - 35.0-1 -- Update to upstream v35 release for features and fixes -- Resolves: bz1915311 - -* Thu Jan 28 2021 Honggang Li - 32.0-4 -- Update to upstream stable release v32.1 -- Fix mlx5 pyverbs CQ test -- Resolves: bz1915745, bz1907377 - -* Tue Dec 22 2020 Honggang Li - 32.0-3 -- libqedr: Set XRC functions only in RoCE mode -- Resolves: bz1894516 - -* Tue Dec 08 2020 Honggang Li - 32.0-2 -- Backport bug fixes applied after upstream v32.0 -- Resolves: bz1902613, bz1875265 - -* Tue Nov 03 2020 Honggang Li - 32.0-1 -- Update to upstream v32 release for features and fixes -- Support Amazon Elastic Fabric Adapter -- Enable pyverbs -- Add a check for udevadm in the specfile -- Resolves: bz1851721, bz1856076, bz1887396, bz1868804 - -* Tue Jun 09 2020 Honggang Li - 29.0-3 -- BuildRequires perl-generators -- Backport upstream stable-v29 commits -- Resolves: bz1845420 - -* Mon May 18 2020 Honggang Li - 29.0-2 -- Suppress ibdev2netdev warning messgae -- Unversioned documentation directory -- Resolves: bz1794904, bz1824853 - -* Tue Apr 14 2020 Honggang Li - 29.0-1 -- Update to upstream v29 release for features and fixes -- Resolves: bz1790624 - -* Fri Feb 07 2020 Honggang Li - 26.0-8 -- Fix an ibacm segfault issue for dual port HCA support IB and Ethernet -- Resolves: bz1793736 - -* Tue Dec 17 2019 Honggang Li - 26.0-7 -- Build with Ninja. -- Resolves: bz1783254 - -* Fri Dec 13 2019 Honggang Li - 26.0-6 -- Remove dangling symlink -- Resolves: bz1782828 - -* Wed Dec 11 2019 Honggang Li - 26.0-5 -- Remove EFA driver -- Fix rpm dependency issue -- Resolves: bz1781454, bz1781457 - -* Mon Dec 09 2019 Honggang Li - 26.0-4 -- libbnxt_re support for some new device ids and generation id -- Resolves: bz1779948 - -* Tue Nov 19 2019 Jarod Wilson - 26.0-3 -- Make rdma-core-devel Obsoletes infiniband-diags due to man3/ibnd_* -- Related: rhbz#1722257 - -* Thu Nov 14 2019 Jarod Wilson - 26.0-2 -- Add Obsoletes/Provides pair for infiniband-diags-devel -- Pull in upstream stable-v26 branch patches -- Fix %%postun scriptlet failures by removing superfluous -p options -- Add new BuildRequires: on pandoc -- Related: rhbz#1722257 - -* Thu Nov 14 2019 Jarod Wilson - 26.0-1 -- Update to upstream v26 release for features and fixes -- Resolves: rhbz#1722257 - -* Tue Jul 23 2019 Jarod Wilson - 24.0-1 -- Update to upstream v24 release for features and fixes - -* Mon Jun 24 2019 Jarod Wilson - 22.3-1 -- Update to upstream v22.3 stable release for fixes -- Enable support for Broadcom 57500 hardware -- Enable support for Mellanox ConnectX-6 DX hardware -- Resolves: rhbz#1678276 -- Resolves: rhbz#1687435 - -* Thu Jan 10 2019 Jarod Wilson - 22-2 -- Fix up covscan shellcheck warnings in ibdev2netdev -- Related: rhbz#1643904 - -* Thu Jan 10 2019 Jarod Wilson - 22-1 -- Update to upstream v22 release for features and fixes -- Include legacy ibdev2netdev helper script -- Resolves: rhbz#1643904 - -* Tue Nov 27 2018 Jarod Wilson - 19.1-1 -- Update to v19.1 stable branch release -- Fix SRQ support in libi40iw -- Backport libqedr support for SRQ -- Resolves: rhbz#1639692 -- Switch rxe_cfg from ifconfig to iproute2 -- Resolves: rhbz#1640637 - -* Thu Aug 30 2018 Jarod Wilson - 19-3 -- Drop R: initscripts, since we've removed initscripts -- Resolves: rhbz#1610284 - -* Fri Aug 3 2018 Florian Weimer - 19-2 -- Honor %%{valgrind_arches} - -* Thu Jul 19 2018 Jarod Wilson 19-1 -- Rebase to upstream rdma-core v19 release - -* Mon Jul 02 2018 Jarod Wilson 18.1-3 -- Adjust python deps for python3-only world - -* Thu Jun 21 2018 Jarod Wilson 18.1-2 -- Disable nes, mthca and ipath libibverbs providers, this - old hardware is no longer supported, and fix disabling - of cxgb3 and ocrdma - -* Fri Jun 15 2018 Jarod Wilson 18.1-1 -- Rebase to upstream rdma-core v18.1 stable release - -* Thu May 03 2018 Jarod Wilson 17.1-2 -- Match kernel ABI with kernel v4.17 for 32-on-64bit compatibility - -* Mon Apr 16 2018 Jarod Wilson 17.1-1 -- Rebase to upstream rdma-core v17.1 stable release -- No more libibcm or ib sysv initscripts -- Remove ibverbs provider for unsupported CXGB3 devices -- Remove ibverbs provider for unsupported OCRDMA devices -- Resolves: rhbz#1492324 -- Resolves: rhbz#1492924 -- Resolves: rhbz#1503621 -- Resolves: rhbz#1504528 -- Resolves: rhbz#1504581 -- Resolves: rhbz#1503723 - -* Tue Feb 27 2018 Jarod Wilson 15-7 -- i40iw: revoke systemd udev rules auto-load on i40e hardware, due to - causing problems with suspend and resume, and fall back to load via - systemd rdma initscript. -- Resolves: rhbz#1561566 - -* Mon Feb 19 2018 Jarod Wilson 15-6 -- libbnxt_re: fix lat test failure in event mode -- Resolves: rhbz#1545248 - -* Tue Feb 06 2018 Jarod Wilson 15-5 -- libmlx4: report RSS caps for improved DPDK support -- Fix double mutex unlock in iwpmd -- Resolves: rhbz#1527350 -- Resolves: rhbz#1542362 - -* Mon Jan 15 2018 Jarod Wilson 15-4 -- Add support for extended join multicast API in librdmacm -- Add support for striding RQ on mlx5 -- Resolves: rhbz#1515487, rhbz#1516571 - -* Tue Dec 26 2017 Honggang Li 15-3 -- srp_daemon: Don't create async_ev_thread if only run once -- srp_daemon: Remove unsupported systemd configurations -- srp_daemon: Start srp_daemon service after network target -- Resolves: bz1525193 -- Resolves: bz1528671 - -* Mon Nov 13 2017 Jarod Wilson 15-2 -- Fix ibacm segfault and improper multicast handling -- Resolves: rhbz#1502745 -- Resolves: rhbz#1502759 - -* Fri Sep 22 2017 Jarod Wilson 15-1 -- Update to upstream v15 release -- Resolves: rhbz#1494607 +* Tue Aug 02 2022 Michal Schmidt - 41.0-3 +- Rebase to upstream release v41.0 +- Resolves: rhbz#2049521 -* Wed Aug 09 2017 Jarod Wilson - 14-4 -- Make use of systemd_requires, own srp_daemon dir +* Tue Jan 18 2022 Honggang Li - 37.2-1 +- Rebase to upstream release v37.2 +- Resolves: rhbz#2035043, rhbz#2034948 -* Tue Aug 01 2017 Jarod Wilson - 14-3 -- Revert work-around for ppc64le library issues -- Add Obsoletes/Provides for libusnic_verbs +* Wed Oct 20 2021 Honggang Li - 37.1-1 +- Rebase to upstream release v37.1 +- Resolves: rhbz#1994803 -* Thu Jul 27 2017 Fedora Release Engineering - 14-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild +* Tue Aug 10 2021 Mohan Boddu - 35.0-3 +- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags + Related: rhbz#1991688 -* Tue Jul 25 2017 Jarod Wilson - 14-1 -- Update to upstream v14 release -- Sync packaging updates from RHEL and upstream +* Wed Jun 16 2021 Honggang Li - 35.0-2 +- Bump the version tag and rebuild because of brew system issue +- Related: rhbz#1858568 + +* Tue May 25 2021 Honggang Li - 35.0-1 +- Rebase to upstream release v35.0 +- Resolves: rhbz#1858568, rhbz#1877133, rhbz#1869457 + +* Fri Apr 16 2021 Mohan Boddu - 34.0-4 +- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937 + +* Tue Mar 30 2021 Pete Walter - 34.0-3 +- Add self obsoletes to remove i686 multilib package when updating to F34 + +* Mon Mar 08 2021 Honggang Li - 34.0-2 +- RHEL9 will use prebuild doc + +* Wed Mar 03 2021 Honggang Li - 34.0-1 +- Rebase to upstream release v34.0 + +* Mon Feb 01 2021 Honggang Li - 33.0-5 +- Disable HCA rename for ELN + +* Wed Jan 27 2021 Fedora Release Engineering - 33.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Jan 25 2021 Honggang Li - 33.0-3 +- Fix ELN build issue + +* Thu Jan 21 2021 Honggang Li - 33.0-2 +- libibverbs obsoletes libibverbs-core for fedora-34 + +* Mon Jan 18 2021 Honggang Li - 33.0-1 +- Rebase to upstream release v33.0 + +* Mon Jan 18 2021 Honggang Li - 32.0-2 +- Remove base package dependency from all sub-packages +- Resolves: bz1901086 + +* Thu Oct 29 2020 Honggang Li - 32.0-1 +- Rebase to upstream release v32.0 + +* Mon Sep 14 2020 Peter Robinson - 31.0-2 +- Split out libibverbs to sub package for libpcap + +* Wed Aug 19 2020 Honggang Li - 31.0-1 +- Rebase to upstream release v31.0 + +* Thu Jul 30 2020 Honggang Li - 30.0-6 +- Update cmake options + +* Wed Jul 29 2020 Fedora Release Engineering - 30.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jul 02 2020 Stephen Gallagher - 30.0-4 +- Don't throw script errors if udev is not installed + +* Wed Jul 1 2020 Jeff Law - 30.0-3 +- Disable LTO + +* Thu Jun 25 2020 Zbigniew Jędrzejewski-Szmek - 30.0-2 +- Drop dependencies on systemd (#1837812) -* Tue May 30 2017 Jarod Wilson 13-7 -- Add support for mlx5 Expand raw packet capabilities -- Resolves: rhbz#1456561 +* Mon Jun 15 2020 Honggang Li - 30.0-1 +- Rebase to upstream release v30.0 -* Mon May 22 2017 Jarod Wilson 13-6 -- Clean up htonll/ntohll handling for opa-ff/infiniband-diags compile -- Add necessary Provides/Obsoletes for old -static packages -- Remove ibverbs providers that we aren't currently able to support -- Resolves: rhbz#1453096, rhbz#1451607 +* Tue May 26 2020 Miro Hrončok - 29.0-2 +- Rebuilt for Python 3.9 -* Wed Apr 26 2017 Honggang Li 13-5 -- rdma-ndd: Fix a busy loop for aarch64 platform -- Resolves: bz1442789 +* Mon Apr 13 2020 Honggang Li - 29.0-1 +- Rebase to upstream release v29.0 -* Thu Apr 13 2017 Honggang Li 13-4 -- srp_daemon: Don't rely on attribute offset in get_shared_pkeys -- Resolves: bz1432964 +* Wed Feb 12 2020 Honggang Li - 28.0-1 +- Rebase to upstream release v28.0 -* Mon Apr 03 2017 Jarod Wilson - 13-3 -- Add necessary Provides/Obsoletes for rdma-ndd (rhbz 1437804) +* Thu Jan 30 2020 Fedora Release Engineering - 27.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild -* Mon Mar 27 2017 Jarod Wilson - 13-2 -- Build what we can on s390, don't exclude it entirely (rhbz 1434029) +* Sun Jan 19 2020 Orion Poplawski - 27.0-3 +- Fix typo in requires -* Tue Mar 21 2017 Jarod Wilson - 13-1 -- Update to rdma-core v13 release (rhbz 1404035) -- Mellanox mlx5 Direct Verbs support (rhbz 1426430) -- Get build working on s390x, less mlx5 (rhbz 1434029) +* Sun Jan 19 2020 Honggang Li - 27.0-2 +- Backport some spec improvement from upstream -* Mon Mar 20 2017 Jarod Wilson - 12-5 -- Fix up multi-lib conflicts in ibacm files (rhbz 1429362) +* Thu Dec 12 2019 Honggang Li - 27.0-1 +- Rebase to upstream release v27.0 -* Mon Mar 13 2017 Jarod Wilson - 12-4 -- Clean up devel files list -- Fix up a few dependencies rpmdiff complained about (rhbz 1404035) -- Add Requires: pciutils for dracut to behave in minimalist cases (rhbz 1429046) -- Adjust Conflicts: on infiniband-diags to match RHEL packaging (rhbz 1428785) +* Thu Nov 28 2019 Honggang Li - 26.1-1 +- Rebase to upstream release v26.1 -* Mon Mar 06 2017 Jarod Wilson - 12-3 -- Take libi40iw out of tech-preview state (rhbz 1428930) -- Add ibv_*_pingpong man pages (rhbz 1416541) +* Fri Jul 26 2019 Fedora Release Engineering - 20.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sat Feb 02 2019 Fedora Release Engineering - 20.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Wed Jan 23 2019 Björn Esser - 20.1-2 +- Append curdir to CMake invokation. (#1668512) + +* Fri Oct 19 2018 Jarod Wilson - 20.1-1 +- Long overdue update to upstream v20.1 stable release + +* Sat Jul 14 2018 Fedora Release Engineering - 16.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sun Mar 18 2018 Iryna Shcherbina - 16.2-4 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Tue Feb 06 2018 Orion Poplawski - 16.2-3 +- Build for s390/x + +* Tue Feb 06 2018 Patrick Uiterwijk - 16.2-2 +- Fix escaped macro + +* Sun Feb 04 2018 Doug Ledford - 16.2-1 +- Update to rdma-core-16.2 +- Drop the old sysv initscript files + +* Wed Aug 09 2017 Jarod Wilson - 14-4 +- Make use of systemd_requires, own srp_daemon dir + +* Tue Aug 01 2017 Jarod Wilson - 14-3 +- Revert work-around for ppc64le library issues +- Add Obsoletes/Provides for libusnic_verbs + +* Thu Jul 27 2017 Fedora Release Engineering - 14-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Tue Jul 25 2017 Jarod Wilson - 14-1 +- Update to upstream v14 release +- Sync packaging updates from RHEL and upstream -* Thu Feb 09 2017 Jarod Wilson - 12-2 -- Make sure ocrdma module is classified as tech-preview (rhbz 1418224) +* Sat Feb 11 2017 Fedora Release Engineering - 12-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Fri Jan 27 2017 Jarod Wilson - 12-1 - Update to upstream final v12 release diff --git a/rxe_cfg b/rxe_cfg deleted file mode 100755 index d74b2534b116970a2fc5ad8f7763d65e3f3667d8..0000000000000000000000000000000000000000 --- a/rxe_cfg +++ /dev/null @@ -1,677 +0,0 @@ -#!/usr/bin/perl - -# * Copyright (c) 2009-2011 Mellanox Technologies Ltd. All rights reserved. -# * Copyright (c) 2009-2011 System Fabric Works, Inc. All rights reserved. -# * -# * This software is available to you under a choice of one of two -# * licenses. You may choose to be licensed under the terms of the GNU -# * General Public License (GPL) Version 2, available from the file -# * COPYING in the main directory of this source tree, or the -# * OpenIB.org BSD license below: -# * -# * Redistribution and use in source and binary forms, with or -# * without modification, are permitted provided that the following -# * conditions are met: -# * -# * - Redistributions of source code must retain the above -# * copyright notice, this list of conditions and the following -# * disclaimer. -# * -# * - Redistributions in binary form must reproduce the above -# * copyright notice, this list of conditions and the following -# * disclaimer in the documentation and/or other materials -# * provided with the distribution. -# * -# * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# * SOFTWARE. -# - -use warnings; -use strict; - -use File::Basename; -use File::Path qw(make_path); -use Getopt::Long; - -my $help = 0; -my $no_persist = 0; -my $debug = 0; -my $force = 0; -my $linkonly = 0; -my $parms = "/sys/module/rdma_rxe/parameters"; -my $modprobe_opt = ""; -my $modprobe_checked = "0"; -my $persistence_path = "/var/lib/rxe"; -my $persistence_file = "${persistence_path}/rxe"; -my $num_persistent = 0; -my $sys = "/sys/module/rdma_rxe/parameters"; -my %rxe_names; -my @rxe_array; -my %eth_names; -my @eth_list; -my %eth_driver; -my %link_state; -my %link_speed; -my %eth_mtu; -my %ipv4_addr; -my %rxe_mtu; -my @persistence_array; -my %persistence_hash; -my @mlx4_port; -my @mlx4_ether; -my @roce_list; - -# Read a file and return its contents as a string. -sub read_file { - my $filename = shift; - my $result = ""; - - if (open(FILE, $filename)) { - $result = ; - close FILE; - } - return $result; -} - -#get mapping between rxe and eth devices -sub get_names { - my $i = 0; - - foreach my $rxe (glob("/sys/class/infiniband/rxe*")) { - $rxe = basename($rxe); - my $eth = read_file("/sys/class/infiniband/$rxe/parent"); - chomp($eth); - - if (($eth =~ /[\w]+[\d]/) - && ($rxe =~ /rxe[0123456789]/)) { - - # hash ethername to rxename - $rxe_names{$eth} = $rxe; - $rxe_array[$i++] = $rxe; - - # hash rxename to ethername - $eth_names{$rxe} = $eth; - } - } -} - -# get list of Mellanox RoCE ports -sub get_mlx4_list { - my $i = 0; - - foreach my $mlx4 (glob("/sys/class/infiniband/mlx4_*")) { - $mlx4 = basename($mlx4); - foreach my $port (glob("/sys/class/infiniband/$mlx4/ports/*")) { - $port = basename($port); - my $link = read_file("$port/link_layer"); - chomp($link); - - if ($link =~ "Ethernet") { - $roce_list[$i++] = "$mlx4:$port"; - } - } - } -} - -#collect per device information -sub get_dev_info { - my @list; - my @fields; - my @lines; - my $line; - my $eth; - my $drv; - my $np; - my $i = 0; - my $j = 0; - - get_mlx4_list(); - - my @my_eth_list = (); - foreach my $my_eth_dev (glob("/sys/class/net/*")) { - $my_eth_dev = basename($my_eth_dev); - if ($my_eth_dev ne "bonding_masters"){ - my $my_dev_type = read_file("/sys/class/net/${my_eth_dev}/type"); - chomp($my_dev_type); - if ($my_dev_type == "1") { - push(@my_eth_list, "$my_eth_dev"); - } - } - } - - @list = @my_eth_list; - foreach $eth (@list) { - chomp($eth); - - $eth_list[$i++] = $eth; - - @lines = `ethtool -i $eth`; - foreach $line (@lines) { - chomp($line); - - @fields = split(/\s+/, $line); - chomp($fields[0]); - - if ($fields[0] =~ /driver:/) { - $drv = $fields[1]; - $eth_driver{$eth} = $drv; - - if ($drv =~ /mlx4_en/ && scalar(@roce_list) > 0 ) { - $eth_names{$roce_list[$j++]} = $eth; - } - } - } - - # get link status - $link_state{$eth} = ""; - $link_speed{$eth} = ""; - - @lines = `ethtool $eth`; - foreach $line (@lines) { - chomp($line); - - @fields = split(/:/, $line); - if (defined($fields[1])) { - $fields[1] =~ s/^\s+//g; - if ($fields[0] =~ "Link detected") { - $link_state{$eth} = $fields[1]; - } - } - elsif ($line =~ "10000baseT") { - $link_speed{$eth} = "10GigE"; - } - } - - $ipv4_addr{$eth} = " "; - $eth_mtu{$eth} = ""; - - @lines = `ip addr show $eth`; - foreach $line (@lines) { - # get IP address - if ($line =~ /inet /) { - $line =~ s/^\s+inet ([0-9.]+)\//$1 /g; - @fields = split(/\s+/, $line); - $ipv4_addr{$eth} = $fields[0]; - } - - # get ethernet mtu - if ($line =~ /mtu /) { - $line =~ s/^.*mtu //g; - @fields = split(/\s+/, $line); - $eth_mtu{$eth} = $fields[0]; - } - } - } - - # get rxe mtu - foreach my $rxe (@rxe_array) { - - @lines = `ibv_devinfo -d $rxe`; - foreach $line (@lines) { - if ($line =~ "active_mtu") { - $line =~ s/^\s+active_mtu:\s+//g; - chomp($line); - - $rxe_mtu{$rxe} = $line; - } - } - $rxe_mtu{$rxe} = "(?)" if (!$rxe_mtu{$rxe}); - } -} - -# return string or the string "###" if string is all whitespace -sub set_field { - my $fld = $_[0]; - - if (defined($fld) && $fld =~ /\S/) { - return $fld; - } else { - return "###"; - } -} - -# format status output into fixed width columns -sub status_print { - my @fields; - my $field; - my @flen = (); - my $num_fields = 0; - my $i; - my $pad; - my $line; - - # one pass to size the columns - foreach $line (@_) { - @fields = split(/\s+/, $line); - $i = 0; - foreach $field (@fields) { - if (!defined($flen[$i])) { - $flen[$i] = length($field); - } - else { - $flen[$i] = max($flen[$i], length($field)); - } - $i++; - } - - if ($i > $num_fields) { - $num_fields = $i; - } - } - - # one pass to print - foreach $line (@_) { - print " "; - @fields = split(/\s+/, $line); - for ($i = 0; $i < $num_fields; $i++) { - if (defined($fields[$i])) { - $pad = $flen[$i] - length($fields[$i]) + 2; - } - else { - $pad = $flen[$i] + 2; - } - if (defined($fields[$i]) && ($fields[$i] ne "###")) { - print "$fields[$i]"; - } - else { - print " "; - } - printf("%*s", $pad, ""); - } - print "\n"; - } -} - -# check driver load status -sub check_module_status { - if (-e $sys) { - return 0; - } else { - return 1; - } -} - -# print driver load status and ethertype for rdma_rxe and rdma_rxe_net -sub show_module_status { - print "rdma_rxe module not loaded\n" if (!(-e $sys)); -} - -# print rxe status -sub do_status { - my $instance = $_[0]; - my $ln = 0; - my @outp; - my $rxe; - my $rmtu; - - get_names(); - get_dev_info(); - show_module_status(); - - $outp[$ln++] = "Name\tLink\tDriver\t\tSpeed\tNMTU\tIPv4_addr\tRDEV\tRMTU"; - - foreach my $eth (@eth_list) { - - # handle case where rxe_drivers are not loaded - if (defined($rxe_names{$eth})) { - $rxe = $rxe_names{$eth}; - $rmtu = $rxe_mtu{$rxe}; - } - else { - $rxe = ""; - $rmtu = ""; - } - - if ((!defined($instance) - && (($linkonly == 0) || ($link_state{$eth} =~ "yes"))) - || (defined($instance) && ($rxe =~ "$instance"))) { - $outp[$ln] = set_field("$eth"); - $outp[$ln] .= "\t"; - $outp[$ln] .= set_field("$link_state{$eth}"); - $outp[$ln] .= "\t"; - $outp[$ln] .= set_field(exists($eth_driver{$eth}) ? $eth_driver{$eth} : ""); - $outp[$ln] .= "\t"; - $outp[$ln] .= set_field("$link_speed{$eth}"); - $outp[$ln] .= "\t"; - $outp[$ln] .= set_field("$eth_mtu{$eth}"); - $outp[$ln] .= "\t"; - $outp[$ln] .= set_field("$ipv4_addr{$eth}"); - $outp[$ln] .= "\t"; - $outp[$ln] .= set_field("$rxe"); - $outp[$ln] .= "\t"; - $outp[$ln] .= set_field("$rmtu"); - $ln++; - } - } - - status_print(@outp); -} - -# read file containing list of ethernet devices into a list -sub populate_persistence { - my $i = 0; - - open FILE, $persistence_file; - while() { - my $line = $_; - chomp($line); - $line =~ s/^\s+//g; - if ($line =~ /[\w]+[\d]/) { - # in case we add fields later - my ($eth, $cruft) = split(/\s+/, $line, 2); - if ($eth =~ /^[\w]+[\d]/) { - $persistence_array[$i] = $eth; - $persistence_hash{$eth} = $i++; - } - } - } - close FILE; - - $num_persistent = $i; -} - -# print out list of ethernet devices to file -sub commit_persistent { - my $i; - my $eth; - - open(PF, ">$persistence_file"); - - for ($i = 0; $i < $num_persistent; $i++) { - $eth = $persistence_array[$i]; - if ($eth =~ /[\w]+[\d]/) { - print(PF "$persistence_array[$i]\n"); - } - } - - close(PF); -} - -sub delete_persistent { - my $eth = $_[0]; - - if (defined($persistence_hash{$eth})) { - $persistence_array[$persistence_hash{$eth}] = ""; - } -} - -sub add_persistent { - my $eth = $_[0]; - - # Is this one already in the persistence list? - if (!defined($persistence_hash{$eth})) { - $persistence_array[$num_persistent] = $eth; - $persistence_hash{$eth} = $num_persistent; - $num_persistent++; - } -} - -# add new rxe device to eth if not already up -sub rxe_add { - my $eth = $_[0]; - - if (!($eth =~ /[\w]+[\d]/)) { - print "eth_name ($eth) looks bogus\n"; - return; - } - - if (!defined($rxe_names{$eth})) { - system("echo '$eth' > $parms/add"); - } - if (!$no_persist) { - add_persistent($eth); - commit_persistent(); - } -} - -sub rxe_remove { - my $arg2 = $_[0]; - my $rxe; - my $eth; - - print "remove $arg2\n" if ($debug > 0); - - if ($arg2 =~ /[\w]+[\d]/) { - $eth = $arg2; - $rxe = $rxe_names{$eth}; - } - elsif ($arg2 =~ /rxe[0123456789]/) { - $rxe = $arg2; - $eth = $eth_names{$rxe}; - } - elsif ($arg2 eq "all") { - $rxe = "all"; - } - - if (($rxe eq "all") || ($rxe =~ /^rxe[0123456789]/)) { - my $cmd = "echo '$rxe' > $parms/remove"; - #print "$cmd\n"; - system($cmd); - if (!$no_persist) { - if ($rxe eq "all") { - unlink($persistence_file); - } - elsif ($eth =~/[\w]+[\d]/) { - delete_persistent($eth); - commit_persistent(); - } - else { - print "Warning: Unable to resolve ethname; " - . "instance may persist on restart\n"; - } - } - } - else { - print "rxe instance $rxe not found\n"; - } -} - -sub get_devinfo { - my $rxe = $_[0]; - - my $cmd = "ibv_devinfo -d $rxe"; - return `$cmd`; -} - -# allow unsupported modules to load in SLES11 if allowed -sub modprobe { - my $module = $_[0]; - my $opts = $_[1]; - my @lines; - my $line; - - if ($modprobe_checked == "0") { - @lines = `modprobe -c`; - foreach $line (@lines) { - if ($line =~ /^allow_unsupported_modules *0/) { - $modprobe_opt = " --allow-unsupported-modules "; - last; - } - } - $modprobe_checked = "1"; - } - - if (!defined($opts)) { - $opts = ""; - } - - system("modprobe $modprobe_opt $module $opts"); -} - -# bring up rxe -sub do_start { - my $proto_str = ""; - - system("mkdir -p $persistence_path"); - system("touch $persistence_file"); - - modprobe("ib_core"); - modprobe("ib_uverbs"); - modprobe("rdma_ucm"); - modprobe("rdma_rxe"); - - populate_persistence(); - system("udevadm control --reload"); - - foreach my $eth (@persistence_array) { - rxe_add($eth); - } - - get_names(); - - foreach my $rxe (@rxe_array) { - my $stat = get_devinfo($rxe); - if ($stat =~ "PORT_DOWN") { - my $cmd = "ip link set $eth_names{$rxe} up"; - system($cmd); - } - } - -} - -# check if argument is an integer -sub is_integer { - defined $_[0] && $_[0] =~ /^[+-]?\d+$/; -} - -# remove all rxe devices and unload drivers -sub do_stop { - my $rxe; - - foreach $rxe (@rxe_array) { - system("echo '$rxe' > $sys/remove"); - } - - if (-e $sys) { - system("rmmod rdma_rxe"); - } - - if (-e $sys) { - print "unable to unload drivers, reboot required\n"; - } -} - -sub do_debug { - my $arg2 = $_[0]; - my $debugfile = "$parms/debug"; - chomp($arg2); - - if (!(-e "$debugfile")) { - print "Error: debug is compiled out of this rxe driver\n"; - return; - } - - if ($arg2 eq "on") { system("echo '31' > $debugfile"); } - elsif ($arg2 eq "off") { system("echo '0' > $debugfile"); } - elsif ($arg2 eq "0") { system("echo '0' > $debugfile"); } - elsif ($arg2 eq "") { } - elsif ($arg2 ge "0" && $arg2 le "31") { - system("echo '$arg2' > $debugfile"); - } - else { - print "unrecognized debug cmd ($arg2)\n"; - } - - my $current = read_file($debugfile); - chomp($current); - if ($current > 0) { - print "Debug is ON ($current)\n"; - } - elsif ($current == 0) { - print "Debug is OFF\n"; - } - else { - print "Unrecognized debug value\n"; - } -} - -sub max { - my $a = $_[0]; - my $b = $_[1]; - return $a if ($a > $b); - return $b; -} - -# show usage for rxe_cfg -sub usage { - print " Usage:\n"; - print " rxe_cfg [options] start|stop|status|persistent\n"; - print " rxe_cfg debug on|off|\n"; - print " rxe_cfg [-n] add \n"; - print " rxe_cfg [-n] remove |\n"; - print "\n"; - print " = network device e.g. eth3\n"; - print " = rdma device e.g. rxe1\n"; - print "\n"; - print " Options:\n"; - print " -h: print this usage information\n"; - print " -n: do not make the configuration action persistent\n"; - print " -v: print additional debug output\n"; - print " -l: show status for interfaces with link up\n"; - print " -p : (start command only) - set ethertype\n"; -} - -sub main { - GetOptions( - "-h" => \$help, - "--help" => \$help, - "-n" => \$no_persist, - "-v:+" => \$debug, - "-f" => \$force, - "-l" => \$linkonly, - ); - - my $arg1 = $ARGV[0]; - my $arg2 = $ARGV[1]; - my $arg3 = $ARGV[2]; - - # status is the default - if (!defined($arg1) || ($arg1 =~ /status/)) { - do_status($arg2); - exit; - } - - if ($help) { - usage(); - exit; - } - - # stuff that does not require modules to be loaded - if ($arg1 eq "help") { usage(); exit; } - elsif ($arg1 eq "start") { do_start(); do_status(); exit; } - elsif ($arg1 eq "persistent") { system("cat $persistence_file"); exit; } - - - # can't do much else, bail if modules aren't loaded - if (check_module_status()) { - exit; - } - - # create persistence file if necessary - make_path($persistence_path); - if (!(-e $persistence_file)) { - `touch $persistence_file`; - } - - # Get full context of the configuration - populate_persistence(); - get_names(); - get_dev_info(); - - # Stuff that requires the rdma_rxe module to be loaded - if ($arg1 eq "stop") { do_stop(); exit; } - elsif ($arg1 eq "debug") { do_debug($arg2); exit; } - elsif ($arg1 eq "add") { rxe_add($arg2); exit; } - elsif ($arg1 eq "remove") { rxe_remove($arg2); exit; } - elsif ($arg1 eq "help") { usage(); exit; } -} - -main(); - -exit; diff --git a/rxe_cfg.8.gz b/rxe_cfg.8.gz deleted file mode 100644 index 499a25b9e3ac7f15747697a60fd96125eb880d34..0000000000000000000000000000000000000000 Binary files a/rxe_cfg.8.gz and /dev/null differ