Accepting request 873708 from home:NMoreyChaisemartin:branches:science:HPC

- Update to rdma-core v33.1
  - No release notes available
  - Drop support for libnes
- Drop support for libnes by removing patch:
  - Revert-libnes-Remove-libnes-from-rdma-core.patch
- Refresh patches against latest sources:
  - Revert-libcxgb3-Remove-libcxgb3-from-rdma-core.patch
  - cxgb3-nes-fix-declaration-of-free_context.patch has been replaced by
    cxgb3-fix-declaration-of-free_context.patch
- Add patches for cxgb3 support against newest API
  - cxgb3-fix-support-for-new-uquery-API.patch
- Enable LTO support
- Trigger udevadm in rdma-ndd %post (bsc#1182391)

OBS-URL: https://build.opensuse.org/request/show/873708
OBS-URL: https://build.opensuse.org/package/show/science:HPC/rdma-core?expand=0&rev=145
This commit is contained in:
Nicolas Morey-Chaisemartin 2021-02-24 07:55:00 +00:00 committed by Git OBS Bridge
parent 0edae3384a
commit bc91c41ab1
11 changed files with 1030 additions and 2471 deletions

View File

@ -1,4 +1,4 @@
commit 46e6822db968a7749dd20269afd30e1793936498
commit 2f56b7b7737d603c408117b88c60be29019818e4
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Fri Jan 10 09:07:51 2020 +0100
@ -7,10 +7,10 @@ Date: Fri Jan 10 09:07:51 2020 +0100
This reverts commit 36588f5844af4ef1e5b0d6ad002fa1adf9032653.
diff --git CMakeLists.txt CMakeLists.txt
index b3ff156956a0..5adddc0160d3 100644
index 5579b5a187c0..66eb0b2fbc4b 100644
--- CMakeLists.txt
+++ CMakeLists.txt
@@ -615,6 +615,7 @@ add_subdirectory(librdmacm/man)
@@ -648,6 +648,7 @@ add_subdirectory(librdmacm/man)
# Providers
if (HAVE_COHERENT_DMA)
add_subdirectory(providers/bnxt_re)
@ -19,7 +19,7 @@ index b3ff156956a0..5adddc0160d3 100644
add_subdirectory(providers/efa)
add_subdirectory(providers/efa/man)
diff --git MAINTAINERS MAINTAINERS
index 8030891d96a4..e47b97b2ff70 100644
index 948c3a7fb53f..050113e1f60a 100644
--- MAINTAINERS
+++ MAINTAINERS
@@ -51,6 +51,11 @@ M: Devesh Sharma <Devesh.sharma@broadcom.com>
@ -35,7 +35,7 @@ index 8030891d96a4..e47b97b2ff70 100644
M: Steve Wise <swise@opengridcomputing.com>
S: Supported
diff --git README.md README.md
index 24eee90cb8b7..565b97a908dd 100644
index b649c6f2bc0f..b31d448264e5 100644
--- README.md
+++ README.md
@@ -15,6 +15,7 @@ under the providers/ directory. Support for the following Kernel RDMA drivers
@ -47,10 +47,10 @@ index 24eee90cb8b7..565b97a908dd 100644
- hfi1.ko
- hns-roce.ko
diff --git debian/control debian/control
index 738b2d6da39d..1e002808cc40 100644
index a423e4f8a4d2..33677170a22a 100644
--- debian/control
+++ debian/control
@@ -93,6 +93,7 @@ Description: User space provider drivers for libibverbs
@@ -91,6 +91,7 @@ Description: User space provider drivers for libibverbs
This package contains the user space verbs drivers:
.
- bnxt_re: Broadcom NetXtreme-E RoCE HCAs
@ -59,7 +59,7 @@ index 738b2d6da39d..1e002808cc40 100644
- efa: Amazon Elastic Fabric Adapter
- hfi1verbs: Intel Omni-Path HFI
diff --git debian/copyright debian/copyright
index db4951993bd8..c6d798d4c30e 100644
index 3bf582b46e06..5c90b2550cf0 100644
--- debian/copyright
+++ debian/copyright
@@ -148,7 +148,8 @@ Files: providers/bnxt_re/*
@ -73,7 +73,7 @@ index db4951993bd8..c6d798d4c30e 100644
License: BSD-MIT or GPL-2
diff --git kernel-boot/rdma-description.rules kernel-boot/rdma-description.rules
index 4ea59ba1977b..bb33dce40bd6 100644
index 48a7cede9bc8..57bb8f1273cd 100644
--- kernel-boot/rdma-description.rules
+++ kernel-boot/rdma-description.rules
@@ -22,6 +22,7 @@ DRIVERS=="ib_qib", ENV{ID_RDMA_INFINIBAND}="1"
@ -83,13 +83,13 @@ index 4ea59ba1977b..bb33dce40bd6 100644
+DRIVERS=="cxgb3", ENV{ID_RDMA_IWARP}="1"
DRIVERS=="cxgb4", ENV{ID_RDMA_IWARP}="1"
DRIVERS=="i40e", ENV{ID_RDMA_IWARP}="1"
DRIVERS=="nes", ENV{ID_RDMA_IWARP}="1"
diff --git kernel-boot/rdma-hw-modules.rules kernel-boot/rdma-hw-modules.rules
index da4bbe363ac4..dde0ab8dacac 100644
index 95eaf7206702..a9b5350aa79c 100644
--- kernel-boot/rdma-hw-modules.rules
+++ kernel-boot/rdma-hw-modules.rules
@@ -8,6 +8,7 @@ SUBSYSTEM!="net", GOTO="rdma_hw_modules_end"
# RDMA.
@@ -9,6 +9,7 @@ SUBSYSTEM!="net", GOTO="rdma_hw_modules_net_end"
ENV{ID_NET_DRIVER}=="be2net", RUN{builtin}+="kmod load ocrdma"
ENV{ID_NET_DRIVER}=="bnxt_en", RUN{builtin}+="kmod load bnxt_re"
+ENV{ID_NET_DRIVER}=="cxgb3", RUN{builtin}+="kmod load iw_cxgb3"
@ -97,10 +97,10 @@ index da4bbe363ac4..dde0ab8dacac 100644
ENV{ID_NET_DRIVER}=="hns", RUN{builtin}+="kmod load hns_roce"
ENV{ID_NET_DRIVER}=="i40e", RUN{builtin}+="kmod load i40iw"
diff --git libibverbs/verbs.h libibverbs/verbs.h
index d873f6d07327..8b580d101ce2 100644
index da782f2ad2f2..a528b49a4fea 100644
--- libibverbs/verbs.h
+++ libibverbs/verbs.h
@@ -2156,6 +2156,7 @@ struct ibv_device **ibv_get_device_list(int *num_devices);
@@ -2190,6 +2190,7 @@ struct ibv_device **ibv_get_device_list(int *num_devices);
struct verbs_devices_ops;
extern const struct verbs_device_ops verbs_provider_bnxt_re;
@ -3091,10 +3091,10 @@ index 000000000000..39a44192e29c
+ }
+}
diff --git redhat/rdma-core.spec redhat/rdma-core.spec
index e0b143364991..8909ae2a86b4 100644
index 1bdc4872a233..af0a2e69e3ea 100644
--- redhat/rdma-core.spec
+++ redhat/rdma-core.spec
@@ -128,6 +128,8 @@ Summary: A library and drivers for direct userspace use of RDMA (InfiniBand/iWAR
@@ -147,6 +147,8 @@ Summary: A library and drivers for direct userspace use of RDMA (InfiniBand/iWAR
Requires(post): /sbin/ldconfig
Requires(postun): /sbin/ldconfig
Requires: %{name}%{?_isa} = %{version}-%{release}
@ -3103,7 +3103,7 @@ index e0b143364991..8909ae2a86b4 100644
Provides: libcxgb4 = %{version}-%{release}
Obsoletes: libcxgb4 < %{version}-%{release}
Provides: libefa = %{version}-%{release}
@@ -160,6 +162,7 @@ fast path operations.
@@ -177,6 +179,7 @@ fast path operations.
Device-specific plug-in ibverbs userspace drivers are included:
@ -3111,23 +3111,8 @@ index e0b143364991..8909ae2a86b4 100644
- libcxgb4: Chelsio T4 iWARP HCA
- libefa: Amazon Elastic Fabric Adapter
- libhfi1: Intel Omni-Path HFI
diff --git redhat/rdma.kernel-init redhat/rdma.kernel-init
index c7444a1c8d77..6f50e72fcc3b 100644
--- redhat/rdma.kernel-init
+++ redhat/rdma.kernel-init
@@ -125,6 +125,10 @@ load_hardware_modules()
load_modules mlx5_ib
RC+=$?
fi
+ if is_loaded cxgb3 -a ! is_loaded iw_cxgb3; then
+ load_modules iw_cxgb3
+ RC+=$?
+ fi
if is_loaded cxgb4 -a ! is_loaded iw_cxgb4; then
load_modules iw_cxgb4
RC+=$?
diff --git suse/rdma-core.spec suse/rdma-core.spec
index a32d8f9cb966..4113f2f6a390 100644
index 63f8699ade18..082515dc11c3 100644
--- suse/rdma-core.spec
+++ suse/rdma-core.spec
@@ -182,6 +182,7 @@ RDMA core development libraries and headers.
@ -3138,7 +3123,7 @@ index a32d8f9cb966..4113f2f6a390 100644
Obsoletes: libcxgb4-rdmav2 < %{version}-%{release}
Obsoletes: libefa-rdmav2 < %{version}-%{release}
Obsoletes: libhfi1verbs-rdmav2 < %{version}-%{release}
@@ -211,6 +212,7 @@ fast path operations.
@@ -209,6 +210,7 @@ fast path operations.
Device-specific plug-in ibverbs userspace drivers are included:

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@
<param name="versionformat">@PARENT_TAG@.@TAG_OFFSET@.%h</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="versionrewrite-replacement">\1</param>
<param name="revision">b7b09d2010465a3747a26468be178efee617bcda</param>
<param name="revision">2504c0bab0a807455bfd0e7f516c86a07656e934</param>
<param name="extract">suse/rdma-core.spec</param>
</service>
<service name="recompress" mode="disabled">

View File

@ -1,8 +1,8 @@
commit 3eb8e71b19b62fa13cfc01db34e33914b1949ea8
commit 439bc8d0af866af6dd0face356bf6074c9ac51f1
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Fri Jul 24 10:44:05 2020 +0200
cxgb3,nes: fix declaration of free_context
cxgb3: fix declaration of free_context
free_context got moved to another struct by
a4c102dd6b05 (verbs: Move free_context from verbs_device_ops to verbs_context_ops)
@ -39,34 +39,3 @@ index 6f3c8b9f1439..2bfca4f58f21 100644
- .free_context = iwch_free_context,
};
PROVIDER_DRIVER(cxgb3, iwch_dev_ops);
diff --git providers/nes/nes_umain.c providers/nes/nes_umain.c
index 07aa7ddd112a..86f0f5c55db0 100644
--- providers/nes/nes_umain.c
+++ providers/nes/nes_umain.c
@@ -63,6 +63,8 @@ static const struct verbs_match_ent hca_table[] = {
{},
};
+static void nes_ufree_context(struct ibv_context *ibctx);
+
static const struct verbs_context_ops nes_uctx_ops = {
.query_device = nes_uquery_device,
.query_port = nes_uquery_port,
@@ -86,7 +88,9 @@ static const struct verbs_context_ops nes_uctx_ops = {
.destroy_ah = nes_udestroy_ah,
.attach_mcast = nes_uattach_mcast,
.detach_mcast = nes_udetach_mcast,
- .async_event = nes_async_event
+ .async_event = nes_async_event,
+ .free_context = nes_ufree_context,
+
};
static const struct verbs_context_ops nes_uctx_no_db_ops = {
@@ -215,6 +219,5 @@ static const struct verbs_device_ops nes_udev_ops = {
.alloc_device = nes_device_alloc,
.uninit_device = nes_uninit_device,
.alloc_context = nes_ualloc_context,
- .free_context = nes_ufree_context,
};
PROVIDER_DRIVER(nes, nes_udev_ops);

View File

@ -0,0 +1,101 @@
commit e8b7609a257e2fd31bc5909913205f88ae9b458c
Author: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
Date: Fri Feb 19 09:10:10 2021 +0100
cxgb3: fix support for new uquery API
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
diff --git providers/cxgb3/iwch.c providers/cxgb3/iwch.c
index 2bfca4f58f21..25ce55461a5d 100644
--- providers/cxgb3/iwch.c
+++ providers/cxgb3/iwch.c
@@ -78,7 +78,7 @@ static const struct verbs_match_ent hca_table[] = {
static void iwch_free_context(struct ibv_context *ibctx);
static const struct verbs_context_ops iwch_ctx_common_ops = {
- .query_device = iwch_query_device,
+ .query_device_ex = iwch_query_device,
.query_port = iwch_query_port,
.alloc_pd = iwch_alloc_pd,
.dealloc_pd = iwch_free_pd,
@@ -178,6 +178,19 @@ static void iwch_uninit_device(struct verbs_device *verbs_device)
free(dev);
}
+static int _ibv_get_fw_ver(char *value, size_t len, struct verbs_sysfs_dev *sysfs_dev)
+{
+
+ /*
+ * NOTE: This can only be called by a driver inside the dev_list_lock,
+ * ie during context setup or otherwise.
+ */
+ assert(pthread_mutex_trylock(&dev_list_lock) != 0);
+
+ return (ibv_read_ibdev_sysfs_file(value, len, sysfs_dev, "fw_ver") <= 0);
+}
+
+
static bool iwch_device_match(struct verbs_sysfs_dev *sysfs_dev)
{
char value[32], *cp;
@@ -191,7 +204,7 @@ static bool iwch_device_match(struct verbs_sysfs_dev *sysfs_dev)
* Verify that the firmware major number matches. Major number
* mismatches are fatal. Minor number mismatches are tolerated.
*/
- if (ibv_get_fw_ver(value, sizeof(value), sysfs_dev))
+ if (_ibv_get_fw_ver(value, sizeof(value), sysfs_dev))
return false;
cp = strtok(value+1, ".");
diff --git providers/cxgb3/iwch.h providers/cxgb3/iwch.h
index c7d85d3aab2e..c228197bd483 100644
--- providers/cxgb3/iwch.h
+++ providers/cxgb3/iwch.h
@@ -143,7 +143,8 @@ static inline unsigned long long_log2(unsigned long x)
}
extern int iwch_query_device(struct ibv_context *context,
- struct ibv_device_attr *attr);
+ const struct ibv_query_device_ex_input *input,
+ struct ibv_device_attr_ex *attr, size_t attr_size);
extern int iwch_query_port(struct ibv_context *context, uint8_t port,
struct ibv_port_attr *attr);
diff --git providers/cxgb3/verbs.c providers/cxgb3/verbs.c
index 39a44192e29c..35cde9199279 100644
--- providers/cxgb3/verbs.c
+++ providers/cxgb3/verbs.c
@@ -42,23 +42,27 @@
#include "iwch.h"
#include "iwch-abi.h"
-int iwch_query_device(struct ibv_context *context, struct ibv_device_attr *attr)
+int iwch_query_device(struct ibv_context *context,
+ const struct ibv_query_device_ex_input *input,
+ struct ibv_device_attr_ex *attr, size_t attr_size)
{
- struct ibv_query_device cmd;
+ struct ib_uverbs_ex_query_device_resp resp;
+ size_t resp_size = sizeof(resp);
uint64_t raw_fw_ver;
unsigned major, minor, sub_minor;
int ret;
- ret = ibv_cmd_query_device(context, attr, &raw_fw_ver, &cmd,
- sizeof cmd);
+ ret = ibv_cmd_query_device_any(context, input, attr, attr_size, &resp,
+ &resp_size);
if (ret)
return ret;
+ raw_fw_ver = resp.base.fw_ver;
major = (raw_fw_ver >> 32) & 0xffff;
minor = (raw_fw_ver >> 16) & 0xffff;
sub_minor = raw_fw_ver & 0xffff;
- snprintf(attr->fw_ver, sizeof attr->fw_ver,
+ snprintf(attr->orig_attr.fw_ver, sizeof(attr->orig_attr.fw_ver),
"%d.%d.%d", major, minor, sub_minor);
return 0;

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9873ae9fe9b92754b4edc1c800a14f5f80d3fd5979adacef43c3ee1328c39129
size 83873
oid sha256:6f706683797c1210a19c1937be45e2696e4bfd0c1b83881069c9d7dd255ae0e4
size 91175

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b8ef6f8f42e6f69d94a882057569d97a44fcc5d6ec04fb8cd58ba79656b4be24
size 1705584

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2ea36422773a93931713293d8d2a0a31a764b5b64f41ca8c93d7cb8c9528fe4b
size 1763449

View File

@ -1,3 +1,20 @@
-------------------------------------------------------------------
Fri Feb 19 08:23:46 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
- Update to rdma-core v33.1
- No release notes available
- Drop support for libnes
- Drop support for libnes by removing patch:
- Revert-libnes-Remove-libnes-from-rdma-core.patch
- Refresh patches against latest sources:
- Revert-libcxgb3-Remove-libcxgb3-from-rdma-core.patch
- cxgb3-nes-fix-declaration-of-free_context.patch has been replaced by
cxgb3-fix-declaration-of-free_context.patch
- Add patches for cxgb3 support against newest API
- cxgb3-fix-support-for-new-uquery-API.patch
- Enable LTO support
- Trigger udevadm in rdma-ndd %post (bsc#1182391)
-------------------------------------------------------------------
Wed Feb 10 12:58:56 UTC 2021 - Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>

View File

@ -25,9 +25,9 @@
%define with_pyverbs 0
%endif
%define git_ver .0.b7b09d201046
%define git_ver .0.2504c0bab0a8
Name: rdma-core
Version: 31.3
Version: 33.1
Release: 0
Summary: RDMA core userspace libraries and daemons
License: BSD-2-Clause OR GPL-2.0-only
@ -65,11 +65,11 @@ Source3: prebuilt-pandoc.tgz
Source4: rdma-core-rpmlintrc
Source5: gen-pandoc.sh
Source6: get_build.py
Patch0: Revert-libnes-Remove-libnes-from-rdma-core.patch
Patch1: Revert-libcxgb3-Remove-libcxgb3-from-rdma-core.patch
Patch2: Revert-Update-kernel-headers.patch
Patch3: disable-rdma-interface-renaming.patch
Patch4: cxgb3-nes-fix-declaration-of-free_context.patch
Patch0: Revert-libcxgb3-Remove-libcxgb3-from-rdma-core.patch
Patch1: Revert-Update-kernel-headers.patch
Patch2: disable-rdma-interface-renaming.patch
Patch3: cxgb3-fix-declaration-of-free_context.patch
Patch4: cxgb3-fix-support-for-new-uquery-API.patch
BuildRequires: binutils
BuildRequires: cmake >= 2.8.11
BuildRequires: gcc
@ -203,7 +203,6 @@ Obsoletes: libipathverbs-rdmav2 < %{version}-%{release}
Obsoletes: libmlx4-rdmav2 < %{version}-%{release}
Obsoletes: libmlx5-rdmav2 < %{version}-%{release}
Obsoletes: libmthca-rdmav2 < %{version}-%{release}
Obsoletes: libnes-rdmav2 < %{version}-%{release}
Obsoletes: libocrdma-rdmav2 < %{version}-%{release}
Obsoletes: librxe-rdmav2 < %{version}-%{release}
%if 0%{?dma_coherent}
@ -233,7 +232,6 @@ Device-specific plug-in ibverbs userspace drivers are included:
- libmlx4: Mellanox ConnectX-3 InfiniBand HCA
- libmlx5: Mellanox Connect-IB/X-4+ InfiniBand HCA
- libmthca: Mellanox InfiniBand HCA
- libnes: NetEffect RNIC
- libocrdma: Emulex OneConnect RDMA/RoCE Device
- libqedr: QLogic QL4xxx RoCE HCA
- librxe: A software implementation of the RoCE protocol
@ -405,8 +403,6 @@ Pyverbs is a Cython-based Python API over libibverbs, providing an
easy, object-oriented access to IB verbs.
%prep
# Make sure LTO is disable as rdma-core fails to compile with LTO enabled
%define _lto_cflags %{nil}
%setup -q -n %{name}-%{version}%{git_ver}
#Extract prebuilt pandoc file in the buildlib directory
(cd buildlib && tar xf %{S:3})
@ -476,12 +472,6 @@ mkdir -p %{buildroot}%{dracutlibdir}/modules.d/05rdma
mkdir -p %{buildroot}%{sysmodprobedir}
mkdir -p %{buildroot}%{_unitdir}
# SRIOV service
install -D -m0644 redhat/rdma.sriov-vfs %{buildroot}/%{_sysconfdir}/rdma/sriov-vfs
install -D -m0755 redhat/rdma.sriov-init %{buildroot}%{_libexecdir}/rdma-set-sriov-vf
install -D -m0644 suse/rdma.sriov-rules %{buildroot}%{_udevrulesdir}/98-rdma-sriov.rules
install -D -m0644 suse/rdma.sriov-service %{buildroot}%{_unitdir}/rdma-sriov.service
# Port type setup for mlx4 dual port cards
install -D -m0644 redhat/rdma.mlx4.conf %{buildroot}/%{_sysconfdir}/rdma/mlx4.conf
sed 's%/usr/libexec%/usr/lib%g' redhat/rdma.mlx4.sys.modprobe > %{buildroot}%{sysmodprobedir}/50-libmlx4.conf
@ -589,6 +579,8 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
%post -n rdma-ndd
%service_add_post rdma-ndd.service
# we ship udev rules, so trigger an update.
%{_bindir}/udevadm trigger --subsystem-match=infiniband --action=change || true
%postun -n rdma-ndd
%service_del_postun rdma-ndd.service
@ -610,7 +602,6 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
%config(noreplace) %{_sysconfdir}/rdma/modules/opa.conf
%config(noreplace) %{_sysconfdir}/rdma/modules/rdma.conf
%config(noreplace) %{_sysconfdir}/rdma/modules/roce.conf
%config(noreplace) %{_sysconfdir}/rdma/sriov-vfs
%if 0%{?dma_coherent}
%config(noreplace) %{_sysconfdir}/modprobe.d/mlx4.conf
%endif
@ -618,7 +609,6 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
%config(noreplace) %{_sysconfdir}/udev/rules.d/70-persistent-ipoib.rules
%{_unitdir}/rdma-hw.target
%{_unitdir}/rdma-load-modules@.service
%{_unitdir}/rdma-sriov.service
%dir %{dracutlibdir}
%dir %{dracutlibdir}/modules.d
%dir %{dracutlibdir}/modules.d/05rdma
@ -629,9 +619,7 @@ rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
%{_udevrulesdir}/90-rdma-hw-modules.rules
%{_udevrulesdir}/90-rdma-ulp-modules.rules
%{_udevrulesdir}/90-rdma-umad.rules
%{_udevrulesdir}/98-rdma-sriov.rules
%{sysmodprobedir}/50-libmlx4.conf
%{_libexecdir}/rdma-set-sriov-vf
%{_libexecdir}/mlx4-setup.sh
%{_libexecdir}/truescale-serdes.cmds
%license COPYING.*

875
rdma-core.spec.old Normal file
View File

@ -0,0 +1,875 @@
#
# spec file for package rdma-core
#
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
%bcond_without systemd
# Do not build static libs by default.
%define with_static 0
%if 0%{?sle_version} > 120400
%define with_pyverbs 1
%else
%define with_pyverbs 0
%endif
%define git_ver .0.b7b09d201046
Name: rdma-core
Version: 31.3
Release: 0
Summary: RDMA core userspace libraries and daemons
License: BSD-2-Clause OR GPL-2.0-only
Group: Productivity/Networking/Other
%define efa_so_major 1
%define verbs_so_major 1
%define rdmacm_so_major 1
%define umad_so_major 3
%define mlx4_so_major 1
%define mlx5_so_major 1
%define ibnetdisc_major 5
%define mad_major 5
%define efa_lname libefa%{efa_so_major}
%define verbs_lname libibverbs%{verbs_so_major}
%define rdmacm_lname librdmacm%{rdmacm_so_major}
%define umad_lname libibumad%{umad_so_major}
%define mlx4_lname libmlx4-%{mlx4_so_major}
%define mlx5_lname libmlx5-%{mlx5_so_major}
%ifnarch s390 %arm
%define dma_coherent 1
%endif
# Almost everything is licensed under the OFA dual GPLv2, 2 Clause BSD license
# providers/ipathverbs/ Dual licensed using a BSD license with an extra patent clause
# providers/rxe/ Incorporates code from ipathverbs and contains the patent clause
# providers/hfi1verbs Uses the 3 Clause BSD license
URL: https://github.com/linux-rdma/rdma-core
Source: rdma-core-%{version}%{git_ver}.tar.gz
Source1: baselibs.conf
Source2: post_download.sh
Source3: prebuilt-pandoc.tgz
Source4: rdma-core-rpmlintrc
Source5: gen-pandoc.sh
Source6: get_build.py
Patch0: Revert-libnes-Remove-libnes-from-rdma-core.patch
Patch1: Revert-libcxgb3-Remove-libcxgb3-from-rdma-core.patch
Patch2: Revert-Update-kernel-headers.patch
Patch3: disable-rdma-interface-renaming.patch
Patch4: cxgb3-nes-fix-declaration-of-free_context.patch
BuildRequires: binutils
BuildRequires: cmake >= 2.8.11
BuildRequires: gcc
BuildRequires: pkgconfig
BuildRequires: python3-base
BuildRequires: pkgconfig(libsystemd)
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(udev)
%if %{with_pyverbs}
BuildRequires: python3-Cython
BuildRequires: python3-devel
%endif
%ifnarch s390 s390x
%if 0%{?suse_version} >= 1550
BuildRequires: valgrind-client-headers
%else
BuildRequires: valgrind-devel
%endif
%endif
BuildRequires: systemd-rpm-macros
BuildRequires: pkgconfig(libnl-3.0)
BuildRequires: pkgconfig(libnl-route-3.0)
BuildRequires: pkgconfig(systemd)
Requires: kmod
Requires: systemd
Requires: udev
# SUSE previously shipped rdma as a stand-alone
# package which we're supplanting here.
Provides: rdma = %{version}
Obsoletes: rdma < %{version}
Provides: ofed = %{version}
Obsoletes: ofed < %{version}
# Trickery to handle both SUSE OpenBuild System and Manual build
# In OBS, rdma-core must use curl-mini instead of curl to avoid
# a build dependency loop:
# rdma-core -> cmake -> curl -> ... -> boost -> rdma-core
# Thus we force a BuildRequires to curl-mini which as no impact
# as it is not used during the build.
# However curl-mini is not a published RPM. This would prevent any build
# outside of OBS. Thus we add a bcond to allow manual build.
# To force build without the use of curl-mini, --without=curlmini
# should be passed to rpmbuild
%bcond_without curlmini
%if 0%{?suse_version} >= 1330 && 0%{?suse_version} < 1550
%if %{with curlmini}
BuildRequires: curl-mini
%endif
%endif
# Tumbleweed's cmake RPM macro adds -Wl,--no-undefined to the module flags
# which is totally inappropriate and breaks building 'ENABLE_EXPORTS' style
# module libraries (eg ibacmp).
#%%define CMAKE_FLAGS -DCMAKE_MODULE_LINKER_FLAGS=""
# Since we recommend developers use Ninja, so should packagers, for consistency.
%define CMAKE_FLAGS %{nil}
%if 0%{?suse_version} >= 1300
BuildRequires: ninja
%define CMAKE_FLAGS -GNinja
%define make_jobs ninja -v %{?_smp_mflags}
%define cmake_install DESTDIR=%{buildroot} ninja install
%else
# Fallback to make otherwise
BuildRequires: make
%define make_jobs make VERBOSE=1 %{?_smp_mflags}
%define cmake_install DESTDIR=%{buildroot} make install
%endif
%description
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
Group: Development/Libraries/C and C++
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{rdmacm_lname} = %{version}-%{release}
Requires: %{umad_lname} = %{version}-%{release}
Requires: %{verbs_lname} = %{version}-%{release}
%if 0%{?dma_coherent}
Requires: %{efa_lname} = %{version}-%{release}
Requires: %{mlx4_lname} = %{version}-%{release}
Requires: %{mlx5_lname} = %{version}-%{release}
%endif
Requires: rsocket = %{version}-%{release}
Provides: libibverbs-devel = %{version}-%{release}
Obsoletes: libibverbs-devel < %{version}-%{release}
Provides: libibumad-devel = %{version}-%{release}
Obsoletes: libibumad-devel < %{version}-%{release}
Provides: librdmacm-devel = %{version}-%{release}
Obsoletes: librdmacm-devel < %{version}-%{release}
#Requires: ibacm = %%{version}-%%{release}
Provides: ibacm-devel = %{version}-%{release}
Obsoletes: ibacm-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
Requires: infiniband-diags = %{version}-%{release}
Provides: infiniband-diags-devel = %{version}-%{release}
Obsoletes: infiniband-diags-devel < %{version}-%{release}
Provides: libibmad-devel = %{version}-%{release}
Obsoletes: libibmad-devel < %{version}
%description devel
RDMA core development libraries and headers.
%package -n libibverbs
Summary: Library & drivers for direct userspace use of InfiniBand/iWARP/RoCE hardware
Group: System/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
Obsoletes: libcxgb3-rdmav2 < %{version}-%{release}
Obsoletes: libcxgb4-rdmav2 < %{version}-%{release}
Obsoletes: libefa-rdmav2 < %{version}-%{release}
Obsoletes: libhfi1verbs-rdmav2 < %{version}-%{release}
Obsoletes: libi40iw-rdmav2 < %{version}-%{release}
Obsoletes: libipathverbs-rdmav2 < %{version}-%{release}
Obsoletes: libmlx4-rdmav2 < %{version}-%{release}
Obsoletes: libmlx5-rdmav2 < %{version}-%{release}
Obsoletes: libmthca-rdmav2 < %{version}-%{release}
Obsoletes: libnes-rdmav2 < %{version}-%{release}
Obsoletes: libocrdma-rdmav2 < %{version}-%{release}
Obsoletes: librxe-rdmav2 < %{version}-%{release}
%if 0%{?dma_coherent}
Requires: %{efa_lname} = %{version}-%{release}
Requires: %{mlx4_lname} = %{version}-%{release}
Requires: %{mlx5_lname} = %{version}-%{release}
%endif
# Recommended packages for rxe
Recommends: iproute2
%description -n libibverbs
libibverbs is a library that allows userspace processes to use RDMA
"verbs" as described in the InfiniBand Architecture Specification and
the RDMA Protocol Verbs Specification. This includes direct hardware
access from userspace to InfiniBand/iWARP adapters (kernel bypass) for
fast path operations.
Device-specific plug-in ibverbs userspace drivers are included:
- libcxgb3: Chelsio T3 iWARP HCA
- libcxgb4: Chelsio T4 iWARP HCA
- libefa: Amazon Elastic Fabric Adapter
- libhfi1: Intel Omni-Path HFI
- libhns: HiSilicon Hip06 SoC
- libi40iw: Intel Ethernet Connection X722 RDMA
- libipathverbs: QLogic InfiniPath HCA
- libmlx4: Mellanox ConnectX-3 InfiniBand HCA
- libmlx5: Mellanox Connect-IB/X-4+ InfiniBand HCA
- libmthca: Mellanox InfiniBand HCA
- libnes: NetEffect RNIC
- libocrdma: Emulex OneConnect RDMA/RoCE Device
- libqedr: QLogic QL4xxx RoCE HCA
- librxe: A software implementation of the RoCE protocol
- libsiw: A software implementation of the iWarp protocol
- libvmw_pvrdma: VMware paravirtual RDMA device
%package -n %verbs_lname
Summary: Ibverbs runtime library
Group: System/Libraries
Requires: libibverbs = %{version}
%description -n %verbs_lname
This package contains the ibverbs runtime library.
%package -n %efa_lname
Summary: EFA runtime library
Group: System/Libraries
%description -n %efa_lname
This package contains the efa runtime library.
%package -n %mlx4_lname
Summary: MLX4 runtime library
Group: System/Libraries
%description -n %mlx4_lname
This package contains the mlx4 runtime library.
%package -n %mlx5_lname
Summary: MLX5 runtime library
Group: System/Libraries
%description -n %mlx5_lname
This package contains the mlx5 runtime library.
%package -n libibnetdisc%{ibnetdisc_major}
Summary: Infiniband Net Discovery runtime library
Group: System/Libraries
%description -n libibnetdisc%{ibnetdisc_major}
This package contains the Infiniband Net Discovery runtime library needed
mainly by infiniband-diags.
%package -n libibverbs-utils
Summary: Examples for the libibverbs library
Group: Productivity/Networking/Other
Requires: libibverbs%{?_isa} = %{version}
%description -n libibverbs-utils
Useful libibverbs example programs such as ibv_devinfo, which
displays information about RDMA devices.
%package -n ibacm
Summary: InfiniBand Communication Manager Assistant
Group: Productivity/Networking/Other
%{?systemd_requires}
Requires: %{name}%{?_isa} = %{version}
Obsoletes: libibacmp1 < %{version}
Provides: libibacmp1 = %{version}
%description -n ibacm
The ibacm daemon helps reduce the load of managing path record lookups on
large InfiniBand fabrics by providing a user space implementation of what
is functionally similar to an ARP cache. The use of ibacm, when properly
configured, can reduce the SA packet load of a large IB cluster from O(n^2)
to O(n). The ibacm daemon is started and normally runs in the background,
user applications need not know about this daemon as long as their app
uses librdmacm to handle connection bring up/tear down. The librdmacm
library knows how to talk directly to the ibacm daemon to retrieve data.
%package -n infiniband-diags
Summary: InfiniBand Diagnostic Tools
Group: Productivity/Networking/Diagnostic
Requires: perl = %{perl_version}
%description -n infiniband-diags
diags provides IB diagnostic programs and scripts needed to diagnose an
IB subnet.
%package -n libibmad%{mad_major}
Summary: Libibmad runtime library
Group: System/Libraries
%description -n libibmad%{mad_major}
Libibmad provides low layer IB functions for use by the IB diagnostic
and management programs. These include MAD, SA, SMP, and other basic IB
functions. This package contains the runtime library.
%package -n iwpmd
Summary: Userspace iWarp Port Mapper daemon
Group: Development/Libraries/C and C++
Requires: %{name}%{?_isa} = %{version}
%{?systemd_requires}
%description -n iwpmd
iwpmd provides a userspace service for iWarp drivers to claim
tcp ports through the standard socket interface.
%package -n %umad_lname
Summary: OpenFabrics Alliance InfiniBand Userspace Management Datagram library
Group: System/Libraries
%description -n %umad_lname
libibumad provides the userspace management datagram (umad) library
functions, which sit on top of the umad modules in the kernel. These
are used by the IB diagnostic and management tools, including OpenSM.
%package -n %rdmacm_lname
Summary: Userspace RDMA Connection Manager
Group: System/Libraries
Requires: %{name} = %{version}
Provides: librdmacm = %{version}
Obsoletes: librdmacm < %{version}
%description -n %rdmacm_lname
librdmacm provides a userspace RDMA Communication Management API.
%package -n rsocket
Summary: Preloadable library to turn the socket API RDMA-aware
# Older librdmacm-tools used to provide rsocket
Group: System/Libraries
Conflicts: librdmacm-tools < 2
%description -n rsocket
Existing applications can make use of rsockets through the use this
preloadable library. See the documentation in the packaged rsocket(7)
manpage for details.
%package -n librdmacm-utils
Summary: Examples for the librdmacm library
Group: Productivity/Networking/Other
Obsoletes: librdmacm-tools < %{version}
Provides: librdmacm-tools = %{version}
%description -n librdmacm-utils
Example test programs for the librdmacm library.
%package -n srp_daemon
Summary: Tools for using the InfiniBand SRP protocol devices
Group: Development/Libraries/C and C++
Requires: %{name} = %{version}
Obsoletes: srptools <= 1.0.3
Provides: srptools = %{version}
%{?systemd_requires}
%description -n srp_daemon
In conjunction with the kernel ib_srp driver, srp_daemon allows you to
discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand.
%package -n rdma-ndd
Summary: Daemon to manage RDMA Node Description
Group: System/Daemons
Requires: %{name} = %{version}
# The udev rules in rdma need to be aware of rdma-ndd:
Conflicts: rdma < 2.1
%{?systemd_requires}
%description -n rdma-ndd
rdma-ndd is a system daemon which watches for rdma device changes and/or
hostname changes and updates the Node Description of the rdma devices based
on those changes.
%package -n python3-pyverbs
Summary: Python3 API over IB verbs
Group: Development/Languages/Python
%description -n python3-pyverbs
Pyverbs is a Cython-based Python API over libibverbs, providing an
easy, object-oriented access to IB verbs.
%prep
# Make sure LTO is disable as rdma-core fails to compile with LTO enabled
%define _lto_cflags %{nil}
%setup -q -n %{name}-%{version}%{git_ver}
#Extract prebuilt pandoc file in the buildlib directory
(cd buildlib && tar xf %{S:3})
%patch0
%patch1
%patch2
%patch3
%patch4
%build
# New RPM defines _rundir, usually as /run
%if 0%{?_rundir:1}
%else
%define _rundir /var/run
%endif
%{!?EXTRA_CMAKE_FLAGS: %define EXTRA_CMAKE_FLAGS %{nil}}
# Pass all of the rpm paths directly to GNUInstallDirs and our other defines.
%cmake %{CMAKE_FLAGS} \
-DCMAKE_MODULE_LINKER_FLAGS="-Wl,--as-needed -Wl,-z,now" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_BINDIR:PATH=%{_bindir} \
-DCMAKE_INSTALL_SBINDIR:PATH=%{_sbindir} \
-DCMAKE_INSTALL_LIBDIR:PATH=%{_libdir} \
-DCMAKE_INSTALL_LIBEXECDIR:PATH=%{_libexecdir} \
-DCMAKE_INSTALL_LOCALSTATEDIR:PATH=%{_localstatedir} \
-DCMAKE_INSTALL_SHAREDSTATEDIR:PATH=%{_sharedstatedir} \
-DCMAKE_INSTALL_INCLUDEDIR:PATH=%{_includedir} \
-DCMAKE_INSTALL_INFODIR:PATH=%{_infodir} \
-DCMAKE_INSTALL_MANDIR:PATH=%{_mandir} \
-DCMAKE_INSTALL_SYSCONFDIR:PATH=%{_sysconfdir} \
-DCMAKE_INSTALL_SYSTEMD_SERVICEDIR:PATH=%{_unitdir} \
-DCMAKE_INSTALL_SYSTEMD_BINDIR:PATH=%{_prefix}/lib/systemd \
-DCMAKE_INSTALL_INITDDIR:PATH=%{_initddir} \
-DCMAKE_INSTALL_RUNDIR:PATH=%{_rundir} \
-DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name}-%{version} \
-DCMAKE_INSTALL_UDEV_RULESDIR:PATH=%{_udevrulesdir} \
-DCMAKE_INSTALL_PERLDIR:PATH=%{perl_vendorlib} \
%if %{with_static}
-DENABLE_STATIC=1 \
%endif
%{EXTRA_CMAKE_FLAGS} \
%if %{defined __python3}
-DPYTHON_EXECUTABLE:PATH=%{__python3} \
-DCMAKE_INSTALL_PYTHON_ARCH_LIB:PATH=%{python3_sitearch} \
%endif
%if %{with_pyverbs}
-DNO_PYVERBS=0
%else
-DNO_PYVERBS=1
%endif
%make_jobs
%install
cd build
%cmake_install
cd ..
mkdir -p %{buildroot}/%{_sysconfdir}/rdma
%global dracutlibdir %%{_libexecdir}/dracut/
%global sysmodprobedir %%{_sysconfdir}/modprobe.d
mkdir -p %{buildroot}%{_udevrulesdir}
mkdir -p %{buildroot}%{dracutlibdir}/modules.d/05rdma
mkdir -p %{buildroot}%{sysmodprobedir}
mkdir -p %{buildroot}%{_unitdir}
# Port type setup for mlx4 dual port cards
install -D -m0644 redhat/rdma.mlx4.conf %{buildroot}/%{_sysconfdir}/rdma/mlx4.conf
sed 's%/usr/libexec%/usr/lib%g' redhat/rdma.mlx4.sys.modprobe > %{buildroot}%{sysmodprobedir}/50-libmlx4.conf
chmod 0644 %{buildroot}%{sysmodprobedir}/50-libmlx4.conf
install -D -m0755 redhat/rdma.mlx4-setup.sh %{buildroot}%{_libexecdir}/mlx4-setup.sh
# Dracut file for IB support during boot
install -D -m0644 suse/module-setup.sh %{buildroot}%{dracutlibdir}/modules.d/05rdma/module-setup.sh
# ibacm
cd build
LD_LIBRARY_PATH=./lib bin/ib_acme -D . -O
install -D -m0644 ibacm_opts.cfg %{buildroot}%{_sysconfdir}/rdma/
for service in rdma rdma-ndd ibacm iwpmd srp_daemon; do ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rc${service}; done
# Delete the package's init.d scripts
rm -rf %{buildroot}/%{_initddir}/
rm -rf %{buildroot}/%{_sbindir}/srp_daemon.sh
%post -n %verbs_lname -p /sbin/ldconfig
%postun -n %verbs_lname -p /sbin/ldconfig
%post -n %efa_lname -p /sbin/ldconfig
%postun -n %efa_lname -p /sbin/ldconfig
%post -n %mlx4_lname -p /sbin/ldconfig
%postun -n %mlx4_lname -p /sbin/ldconfig
%post -n %mlx5_lname -p /sbin/ldconfig
%postun -n %mlx5_lname -p /sbin/ldconfig
%post -n %umad_lname -p /sbin/ldconfig
%postun -n %umad_lname -p /sbin/ldconfig
%post -n %rdmacm_lname -p /sbin/ldconfig
%postun -n %rdmacm_lname -p /sbin/ldconfig
%post -n libibnetdisc%{ibnetdisc_major} -p /sbin/ldconfig
%postun -n libibnetdisc%{ibnetdisc_major} -p /sbin/ldconfig
%post -n libibmad%{mad_major} -p /sbin/ldconfig
%postun -n libibmad%{mad_major} -p /sbin/ldconfig
%post
# we ship udev rules, so trigger an update.
%{_bindir}/udevadm trigger --subsystem-match=infiniband --action=change || true
%{_bindir}/udevadm trigger --subsystem-match=infiniband_mad --action=change || true
#
# ibacm
#
%pre -n ibacm
%service_add_pre ibacm.service ibacm.socket
%post -n ibacm
%service_add_post ibacm.service ibacm.socket
%preun -n ibacm
%service_del_preun ibacm.service ibacm.socket
%postun -n ibacm
%service_del_postun ibacm.service ibacm.socket
#
# srp daemon
#
%pre -n srp_daemon
%service_add_pre srp_daemon.service
%post -n srp_daemon
%service_add_post srp_daemon.service
# we ship udev rules, so trigger an update.
%{_bindir}/udevadm trigger --subsystem-match=infiniband_mad --action=change
%preun -n srp_daemon
%service_del_preun srp_daemon.service
%postun -n srp_daemon
%service_del_postun srp_daemon.service
#
# iwpmd
#
%pre -n iwpmd
%service_add_pre ibiwpmd.service
%post -n iwpmd
%service_add_post iwpmd.service
%preun -n iwpmd
%service_del_preun iwpmd.service
%postun -n iwpmd
%service_del_postun iwpmd.service
#
# rdma-ndd
#
%pre -n rdma-ndd
%service_add_pre rdma-ndd.service
%preun -n rdma-ndd
%service_del_preun rdma-ndd.service
%post -n rdma-ndd
%service_add_post rdma-ndd.service
%postun -n rdma-ndd
%service_del_postun rdma-ndd.service
%files
%defattr(-,root,root)
%dir %{_sysconfdir}/rdma
%dir %{_sysconfdir}/rdma/modules
%dir %{_docdir}/%{name}-%{version}
%dir %{_udevrulesdir}
%dir %{_sysconfdir}/udev
%dir %{_sysconfdir}/udev/rules.d
%dir %{_sysconfdir}/modprobe.d
%doc %{_docdir}/%{name}-%{version}/README.md
%doc %{_docdir}/%{name}-%{version}/udev.md
%config(noreplace) %{_sysconfdir}/rdma/mlx4.conf
%config(noreplace) %{_sysconfdir}/rdma/modules/infiniband.conf
%config(noreplace) %{_sysconfdir}/rdma/modules/iwarp.conf
%config(noreplace) %{_sysconfdir}/rdma/modules/opa.conf
%config(noreplace) %{_sysconfdir}/rdma/modules/rdma.conf
%config(noreplace) %{_sysconfdir}/rdma/modules/roce.conf
%if 0%{?dma_coherent}
%config(noreplace) %{_sysconfdir}/modprobe.d/mlx4.conf
%endif
%config(noreplace) %{_sysconfdir}/modprobe.d/truescale.conf
%config(noreplace) %{_sysconfdir}/udev/rules.d/70-persistent-ipoib.rules
%{_unitdir}/rdma-hw.target
%{_unitdir}/rdma-load-modules@.service
%dir %{dracutlibdir}
%dir %{dracutlibdir}/modules.d
%dir %{dracutlibdir}/modules.d/05rdma
%{dracutlibdir}/modules.d/05rdma/module-setup.sh
%{_udevrulesdir}/../rdma_rename
%{_udevrulesdir}/60-rdma-persistent-naming.rules
%{_udevrulesdir}/75-rdma-description.rules
%{_udevrulesdir}/90-rdma-hw-modules.rules
%{_udevrulesdir}/90-rdma-ulp-modules.rules
%{_udevrulesdir}/90-rdma-umad.rules
%{sysmodprobedir}/50-libmlx4.conf
%{_libexecdir}/mlx4-setup.sh
%{_libexecdir}/truescale-serdes.cmds
%license COPYING.*
%{_sbindir}/rcrdma
%files devel
%defattr(-,root,root)
%doc %{_docdir}/%{name}-%{version}/MAINTAINERS
%dir %{_includedir}/infiniband
%dir %{_includedir}/rdma
%{_includedir}/infiniband/*
%{_includedir}/rdma/*
%if %{with_static}
%{_libdir}/lib*.a
%endif
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/*.pc
%{_mandir}/man3/ibnd_*
%{_mandir}/man3/ibv_*
%{_mandir}/man3/rdma*
%{_mandir}/man3/umad*
%{_mandir}/man3/*_to_ibv_rate.*
%{_mandir}/man7/rdma_cm.*
%if 0%{?dma_coherent}
%{_mandir}/man3/efadv*
%{_mandir}/man3/mlx5dv*
%{_mandir}/man3/mlx4dv*
%{_mandir}/man7/efadv*
%{_mandir}/man7/mlx5dv*
%{_mandir}/man7/mlx4dv*
%endif
%files -n libibverbs
%defattr(-,root,root)
%dir %{_sysconfdir}/libibverbs.d
%dir %{_libdir}/libibverbs
%{_libdir}/libibverbs/*.so
%config(noreplace) %{_sysconfdir}/libibverbs.d/*.driver
%doc %{_docdir}/%{name}-%{version}/libibverbs.md
%doc %{_docdir}/%{name}-%{version}/rxe.md
%doc %{_docdir}/%{name}-%{version}/tag_matching.md
%{_mandir}/man7/rxe*
%files -n libibnetdisc%{ibnetdisc_major}
%defattr(-, root, root)
%{_libdir}/libibnetdisc.so.*
%files -n libibmad%{mad_major}
%defattr(-, root, root)
%{_libdir}/libibmad.so.*
%files -n %verbs_lname
%defattr(-,root,root)
%{_libdir}/libibverbs*.so.*
%if 0%{?dma_coherent}
%files -n %efa_lname
%defattr(-,root,root)
%{_libdir}/libefa*.so.*
%files -n %mlx4_lname
%defattr(-,root,root)
%{_libdir}/libmlx4*.so.*
%files -n %mlx5_lname
%defattr(-,root,root)
%{_libdir}/libmlx5*.so.*
%endif
%files -n libibverbs-utils
%defattr(-,root,root)
%{_bindir}/ibv_*
%{_mandir}/man1/ibv_*
%files -n ibacm
%defattr(-,root,root)
%config(noreplace) %{_sysconfdir}/rdma/ibacm_opts.cfg
%{_bindir}/ib_acme
%{_sbindir}/ibacm
%{_mandir}/man1/ib_acme.*
%{_mandir}/man7/ibacm.*
%{_mandir}/man7/ibacm_prov.*
%{_mandir}/man8/ibacm.*
%{_unitdir}/ibacm.service
%{_unitdir}/ibacm.socket
%dir %{_libdir}/ibacm
%{_libdir}/ibacm/*
%{_sbindir}/rcibacm
%doc %{_docdir}/%{name}-%{version}/ibacm.md
%files -n infiniband-diags
%defattr(-, root, root)
%dir %{_sysconfdir}/infiniband-diags
%config(noreplace) %{_sysconfdir}/infiniband-diags/*
%{_sbindir}/ibaddr
%{_mandir}/man8/ibaddr*
%{_sbindir}/ibnetdiscover
%{_mandir}/man8/ibnetdiscover*
%{_sbindir}/ibping
%{_mandir}/man8/ibping*
%{_sbindir}/ibportstate
%{_mandir}/man8/ibportstate*
%{_sbindir}/ibroute
%{_mandir}/man8/ibroute.*
%{_sbindir}/ibstat
%{_mandir}/man8/ibstat.*
%{_sbindir}/ibsysstat
%{_mandir}/man8/ibsysstat*
%{_sbindir}/ibtracert
%{_mandir}/man8/ibtracert*
%{_sbindir}/perfquery
%{_mandir}/man8/perfquery*
%{_sbindir}/sminfo
%{_mandir}/man8/sminfo*
%{_sbindir}/smpdump
%{_mandir}/man8/smpdump*
%{_sbindir}/smpquery
%{_mandir}/man8/smpquery*
%{_sbindir}/saquery
%{_mandir}/man8/saquery*
%{_sbindir}/vendstat
%{_mandir}/man8/vendstat*
%{_sbindir}/iblinkinfo
%{_mandir}/man8/iblinkinfo*
%{_sbindir}/ibqueryerrors
%{_mandir}/man8/ibqueryerrors*
%{_sbindir}/ibcacheedit
%{_mandir}/man8/ibcacheedit*
%{_sbindir}/ibccquery
%{_mandir}/man8/ibccquery*
%{_sbindir}/ibccconfig
%{_mandir}/man8/ibccconfig*
%{_sbindir}/dump_fts
%{_mandir}/man8/dump_fts*
%{_sbindir}/ibhosts
%{_mandir}/man8/ibhosts*
%{_sbindir}/ibswitches
%{_mandir}/man8/ibswitches*
%{_sbindir}/ibnodes
%{_mandir}/man8/ibnodes*
%{_sbindir}/ibrouters
%{_mandir}/man8/ibrouters*
%{_sbindir}/ibfindnodesusing.pl
%{_mandir}/man8/ibfindnodesusing*
%{_sbindir}/ibidsverify.pl
%{_mandir}/man8/ibidsverify*
%{_sbindir}/check_lft_balance.pl
%{_mandir}/man8/check_lft_balance*
%{_sbindir}/dump_lfts.sh
%{_mandir}/man8/dump_lfts*
%{_sbindir}/dump_mfts.sh
%{_mandir}/man8/dump_mfts*
%{_sbindir}/ibstatus
%{_mandir}/man8/ibstatus*
%{_mandir}/man8/infiniband-diags*
%{perl_vendorlib}/IBswcountlimits.pm
%files -n iwpmd
%defattr(-,root,root)
%dir %{_sysconfdir}/rdma
%dir %{_sysconfdir}/rdma/modules
%{_sbindir}/iwpmd
%{_sbindir}/rciwpmd
%{_unitdir}/iwpmd.service
%config(noreplace) %{_sysconfdir}/rdma/modules/iwpmd.conf
%config(noreplace) %{_sysconfdir}/iwpmd.conf
%{_udevrulesdir}/90-iwpmd.rules
%{_mandir}/man8/iwpmd.*
%{_mandir}/man5/iwpmd.*
%files -n %umad_lname
%defattr(-,root,root)
%{_libdir}/libibumad*.so.*
%files -n %rdmacm_lname
%defattr(-,root,root)
%{_libdir}/librdmacm*.so.*
%doc %{_docdir}/%{name}-%{version}/librdmacm.md
%files -n rsocket
%defattr(-,root,root)
%dir %{_libdir}/rsocket
%{_libdir}/rsocket/*.so*
%{_mandir}/man7/rsocket.*
%files -n librdmacm-utils
%defattr(-,root,root)
%{_bindir}/cmtime
%{_bindir}/mckey
%{_bindir}/rcopy
%{_bindir}/rdma_client
%{_bindir}/rdma_server
%{_bindir}/rdma_xclient
%{_bindir}/rdma_xserver
%{_bindir}/riostream
%{_bindir}/rping
%{_bindir}/rstream
%{_bindir}/ucmatose
%{_bindir}/udaddy
%{_bindir}/udpong
%{_mandir}/man1/cmtime.*
%{_mandir}/man1/mckey.*
%{_mandir}/man1/rcopy.*
%{_mandir}/man1/rdma_client.*
%{_mandir}/man1/rdma_server.*
%{_mandir}/man1/rdma_xclient.*
%{_mandir}/man1/rdma_xserver.*
%{_mandir}/man1/riostream.*
%{_mandir}/man1/rping.*
%{_mandir}/man1/rstream.*
%{_mandir}/man1/ucmatose.*
%{_mandir}/man1/udaddy.*
%{_mandir}/man1/udpong.*
%files -n srp_daemon
%defattr(-,root,root)
%dir %{_libexecdir}/srp_daemon
%dir %{_sysconfdir}/rdma
%dir %{_sysconfdir}/rdma/modules
%config(noreplace) %{_sysconfdir}/srp_daemon.conf
%config(noreplace) %{_sysconfdir}/rdma/modules/srp_daemon.conf
%{_udevrulesdir}/60-srp_daemon.rules
%{_libexecdir}/srp_daemon/start_on_all_ports
%{_unitdir}/srp_daemon.service
%{_unitdir}/srp_daemon_port@.service
%{_sbindir}/ibsrpdm
%{_sbindir}/srp_daemon
%{_sbindir}/run_srp_daemon
%{_sbindir}/rcsrp_daemon
%{_mandir}/man5/srp_daemon.service.5*
%{_mandir}/man5/srp_daemon_port@.service.5*
%{_mandir}/man8/ibsrpdm.8*
%{_mandir}/man8/srp_daemon.8*
%doc %{_docdir}/%{name}-%{version}/ibsrpdm.md
%files -n rdma-ndd
%defattr(-, root, root)
%{_sbindir}/rdma-ndd
%{_sbindir}/rcrdma-ndd
%{_unitdir}/rdma-ndd.service
%{_mandir}/man8/rdma-ndd.8*
%{_udevrulesdir}/60-rdma-ndd.rules
%if %{with_pyverbs}
%files -n python3-pyverbs
%{python3_sitearch}/pyverbs
%dir %{_docdir}/%{name}-%{version}/tests/
%{_docdir}/%{name}-%{version}/tests/*.py
%endif
%changelog