import rdma-core-26.0-8.el8

This commit is contained in:
CentOS Sources 2020-04-28 05:35:35 -04:00 committed by Andrew Lukoshko
parent a6a1fe6c83
commit 6e3909bd72
22 changed files with 136188 additions and 542 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/rdma-core-22.3.tar.gz
SOURCES/rdma-core-26.0.tar.gz

View File

@ -1 +1 @@
94d0e32b8df096fb96f715439373abcadc4e5f4f SOURCES/rdma-core-22.3.tar.gz
5842fbf5833d01a0c3cd0ee8eff7b78436d83024 SOURCES/rdma-core-26.0.tar.gz

52531
SOURCES/0001-ABI-Files.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,211 +0,0 @@
From 27e4ca889803675fc73c5c8a72231bf21ec00f73 Mon Sep 17 00:00:00 2001
From: Yishai Hadas <yishaih@mellanox.com>
Date: Sun, 10 Feb 2019 10:43:12 +0200
Subject: [PATCH rdma-core 1/3] Update kernel headers
To commit 2c1619edef61 ("IB/cma: Define option to set ack timeout and
pack tos_set")
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
---
kernel-headers/rdma/bnxt_re-abi.h | 11 ++++++
kernel-headers/rdma/ib_user_verbs.h | 2 ++
kernel-headers/rdma/rdma_netlink.h | 54 +++++++++++++++++++++--------
kernel-headers/rdma/rdma_user_cm.h | 4 +++
kernel-headers/rdma/rdma_user_rxe.h | 3 +-
5 files changed, 58 insertions(+), 16 deletions(-)
diff --git a/kernel-headers/rdma/bnxt_re-abi.h b/kernel-headers/rdma/bnxt_re-abi.h
index a7a6111e..dc52e3cf 100644
--- a/kernel-headers/rdma/bnxt_re-abi.h
+++ b/kernel-headers/rdma/bnxt_re-abi.h
@@ -44,6 +44,14 @@
#define BNXT_RE_ABI_VERSION 1
+#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT 0x00
+#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT 0x10
+#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT 0x18
+
+enum {
+ BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL
+};
+
struct bnxt_re_uctx_resp {
__u32 dev_id;
__u32 max_qp;
@@ -51,6 +59,9 @@ struct bnxt_re_uctx_resp {
__u32 cqe_sz;
__u32 max_cqd;
__u32 rsvd;
+ __aligned_u64 comp_mask;
+ __u32 chip_id0;
+ __u32 chip_id1;
};
/*
diff --git a/kernel-headers/rdma/ib_user_verbs.h b/kernel-headers/rdma/ib_user_verbs.h
index 480d9a60..0474c740 100644
--- a/kernel-headers/rdma/ib_user_verbs.h
+++ b/kernel-headers/rdma/ib_user_verbs.h
@@ -270,6 +270,8 @@ struct ib_uverbs_ex_query_device_resp {
struct ib_uverbs_tm_caps tm_caps;
struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
__aligned_u64 max_dm_size;
+ __u32 xrc_odp_caps;
+ __u32 reserved;
};
struct ib_uverbs_query_port {
diff --git a/kernel-headers/rdma/rdma_netlink.h b/kernel-headers/rdma/rdma_netlink.h
index 2e18b77a..3a9e681e 100644
--- a/kernel-headers/rdma/rdma_netlink.h
+++ b/kernel-headers/rdma/rdma_netlink.h
@@ -5,8 +5,7 @@
#include <linux/types.h>
enum {
- RDMA_NL_RDMA_CM = 1,
- RDMA_NL_IWCM,
+ RDMA_NL_IWCM = 2,
RDMA_NL_RSVD,
RDMA_NL_LS, /* RDMA Local Services */
RDMA_NL_NLDEV, /* RDMA device interface */
@@ -14,8 +13,7 @@ enum {
};
enum {
- RDMA_NL_GROUP_CM = 1,
- RDMA_NL_GROUP_IWPM,
+ RDMA_NL_GROUP_IWPM = 2,
RDMA_NL_GROUP_LS,
RDMA_NL_NUM_GROUPS
};
@@ -24,15 +22,17 @@ enum {
#define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
#define RDMA_NL_GET_TYPE(client, op) ((client << 10) + op)
-enum {
- RDMA_NL_RDMA_CM_ID_STATS = 0,
- RDMA_NL_RDMA_CM_NUM_OPS
-};
+/* The minimum version that the iwpm kernel supports */
+#define IWPM_UABI_VERSION_MIN 3
+/* The latest version that the iwpm kernel supports */
+#define IWPM_UABI_VERSION 4
+
+/* iwarp port mapper message flags */
enum {
- RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1,
- RDMA_NL_RDMA_CM_ATTR_DST_ADDR,
- RDMA_NL_RDMA_CM_NUM_ATTR,
+
+ /* Do not map the port for this IWPM request */
+ IWPM_FLAGS_NO_PORT_MAP = (1 << 0),
};
/* iwarp port mapper op-codes */
@@ -45,6 +45,7 @@ enum {
RDMA_NL_IWPM_HANDLE_ERR,
RDMA_NL_IWPM_MAPINFO,
RDMA_NL_IWPM_MAPINFO_NUM,
+ RDMA_NL_IWPM_HELLO,
RDMA_NL_IWPM_NUM_OPS
};
@@ -83,20 +84,38 @@ enum {
IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
IWPM_NLA_MANAGE_MAPPING_SEQ,
IWPM_NLA_MANAGE_ADDR,
- IWPM_NLA_MANAGE_MAPPED_LOC_ADDR,
+ IWPM_NLA_MANAGE_FLAGS,
+ IWPM_NLA_MANAGE_MAPPING_MAX
+};
+
+enum {
+ IWPM_NLA_RMANAGE_MAPPING_UNSPEC = 0,
+ IWPM_NLA_RMANAGE_MAPPING_SEQ,
+ IWPM_NLA_RMANAGE_ADDR,
+ IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
+ /* The following maintains bisectability of rdma-core */
+ IWPM_NLA_MANAGE_MAPPED_LOC_ADDR = IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
IWPM_NLA_RMANAGE_MAPPING_ERR,
IWPM_NLA_RMANAGE_MAPPING_MAX
};
-#define IWPM_NLA_MANAGE_MAPPING_MAX 3
-#define IWPM_NLA_QUERY_MAPPING_MAX 4
#define IWPM_NLA_MAPINFO_SEND_MAX 3
+#define IWPM_NLA_REMOVE_MAPPING_MAX 3
enum {
IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
IWPM_NLA_QUERY_MAPPING_SEQ,
IWPM_NLA_QUERY_LOCAL_ADDR,
IWPM_NLA_QUERY_REMOTE_ADDR,
+ IWPM_NLA_QUERY_FLAGS,
+ IWPM_NLA_QUERY_MAPPING_MAX,
+};
+
+enum {
+ IWPM_NLA_RQUERY_MAPPING_UNSPEC = 0,
+ IWPM_NLA_RQUERY_MAPPING_SEQ,
+ IWPM_NLA_RQUERY_LOCAL_ADDR,
+ IWPM_NLA_RQUERY_REMOTE_ADDR,
IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
IWPM_NLA_RQUERY_MAPPING_ERR,
@@ -114,6 +133,7 @@ enum {
IWPM_NLA_MAPINFO_UNSPEC = 0,
IWPM_NLA_MAPINFO_LOCAL_ADDR,
IWPM_NLA_MAPINFO_MAPPED_ADDR,
+ IWPM_NLA_MAPINFO_FLAGS,
IWPM_NLA_MAPINFO_MAX
};
@@ -132,6 +152,12 @@ enum {
IWPM_NLA_ERR_MAX
};
+enum {
+ IWPM_NLA_HELLO_UNSPEC = 0,
+ IWPM_NLA_HELLO_ABI_VERSION,
+ IWPM_NLA_HELLO_MAX
+};
+
/*
* Local service operations:
* RESOLVE - The client requests the local service to resolve a path.
diff --git a/kernel-headers/rdma/rdma_user_cm.h b/kernel-headers/rdma/rdma_user_cm.h
index 0d1e78eb..e42940a2 100644
--- a/kernel-headers/rdma/rdma_user_cm.h
+++ b/kernel-headers/rdma/rdma_user_cm.h
@@ -300,6 +300,10 @@ enum {
RDMA_OPTION_ID_TOS = 0,
RDMA_OPTION_ID_REUSEADDR = 1,
RDMA_OPTION_ID_AFONLY = 2,
+ RDMA_OPTION_ID_ACK_TIMEOUT = 3
+};
+
+enum {
RDMA_OPTION_IB_PATH = 1
};
diff --git a/kernel-headers/rdma/rdma_user_rxe.h b/kernel-headers/rdma/rdma_user_rxe.h
index 44ef6a3b..aae2e696 100644
--- a/kernel-headers/rdma/rdma_user_rxe.h
+++ b/kernel-headers/rdma/rdma_user_rxe.h
@@ -58,8 +58,7 @@ struct rxe_global_route {
struct rxe_av {
__u8 port_num;
__u8 network_type;
- __u16 reserved1;
- __u32 reserved2;
+ __u8 dmac[6];
struct rxe_global_route grh;
union {
struct sockaddr_in _sockaddr_in;
--
2.20.1

View File

@ -0,0 +1,37 @@
From bb3c76ae13473a3002d57bc29d154542ce172419 Mon Sep 17 00:00:00 2001
From: Naresh Kumar PBS <nareshkumar.pbs@broadcom.com>
Date: Tue, 26 Nov 2019 04:05:21 -0500
Subject: [PATCH 1/2] bnxt_re/lib: Add remaining pci ids for gen P5 devices
Making a change to add pci ids for VF and NPAR devices.
Signed-off-by: Naresh Kumar PBS <nareshkumar.pbs@broadcom.com>
Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
---
providers/bnxt_re/main.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/providers/bnxt_re/main.c b/providers/bnxt_re/main.c
index b1194db7..e290a07b 100644
--- a/providers/bnxt_re/main.c
+++ b/providers/bnxt_re/main.c
@@ -76,9 +76,15 @@ static const struct verbs_match_ent cna_table[] = {
CNA(BROADCOM, 0x16F0), /* BCM58730 */
CNA(BROADCOM, 0x16F1), /* BCM57452 */
CNA(BROADCOM, 0x1750), /* BCM57500 */
+ CNA(BROADCOM, 0x1751), /* BCM57504 */
+ CNA(BROADCOM, 0x1752), /* BCM57502 */
+ CNA(BROADCOM, 0x1803), /* BCM57508 NPAR */
+ CNA(BROADCOM, 0x1804), /* BCM57504 NPAR */
+ CNA(BROADCOM, 0x1805), /* BCM57502 NPAR */
+ CNA(BROADCOM, 0x1807), /* BCM5750x VF */
CNA(BROADCOM, 0xD800), /* BCM880xx VF */
CNA(BROADCOM, 0xD802), /* BCM58802 */
- CNA(BROADCOM, 0xD804), /* BCM8804 SR */
+ CNA(BROADCOM, 0xD804), /* BCM8804 SR */
{}
};
--
2.21.0

View File

@ -0,0 +1,99 @@
From 2f6e9cb2087508d29bf525f652136ea23a007bc6 Mon Sep 17 00:00:00 2001
From: Honggang Li <honli@redhat.com>
Date: Fri, 7 Feb 2020 10:25:31 +0800
Subject: [PATCH] ibacm: Do not open non InfiniBand device
For dual port HCA, which has an InfiniBand port and an Ethernet port,
only open InfiniBand port will introduce segment fault issues.
Because the Ethernet port did not open yet, segment fault when active
the Ethernet port. The second segment fault issue happens when there
is asyn event on the Ethernet port.
We should skip pure iWARP or RoCE devices, but not device which has at
least one InfiniBand port.
Fixes: e9ffc0b3b940 ("ibacm: only open InfiniBand port")
Signed-off-by: Honggang Li <honli@redhat.com>
---
ibacm/src/acm.c | 47 ++++++++++++++++++++++++++---------------------
1 file changed, 26 insertions(+), 21 deletions(-)
diff --git a/ibacm/src/acm.c b/ibacm/src/acm.c
index ad313075c7bb..283620338c9d 100644
--- a/ibacm/src/acm.c
+++ b/ibacm/src/acm.c
@@ -2604,7 +2604,7 @@ static void acm_open_dev(struct ibv_device *ibdev)
struct ibv_context *verbs;
size_t size;
int i, ret;
- unsigned int opened_ib_port_cnt = 0;
+ bool has_ib_port = false;
acm_log(1, "%s\n", ibdev->name);
verbs = ibv_open_device(ibdev);
@@ -2619,6 +2619,27 @@ static void acm_open_dev(struct ibv_device *ibdev)
goto err1;
}
+ for (i = 0; i < attr.phys_port_cnt; i++) {
+ ret = ibv_query_port(verbs, i + 1, &port_attr);
+ if (ret) {
+ acm_log(0, "ERROR - ibv_query_port (%s, %d) return (%d)\n",
+ ibdev->name, i + 1, ret);
+ continue;
+ }
+
+ if (port_attr.link_layer == IBV_LINK_LAYER_INFINIBAND) {
+ acm_log(1, "%s port %d is an InfiniBand port\n", ibdev->name, i + 1);
+ has_ib_port = true;
+ } else {
+ acm_log(1, "%s port %d is not an InfiniBand port\n", ibdev->name, i + 1);
+ }
+ }
+
+ if (!has_ib_port) {
+ acm_log(1, "%s does not support InfiniBand.\n", ibdev->name);
+ goto err1;
+ }
+
size = sizeof(*dev) + sizeof(struct acmc_port) * attr.phys_port_cnt;
dev = (struct acmc_device *) calloc(1, size);
if (!dev)
@@ -2630,29 +2651,13 @@ static void acm_open_dev(struct ibv_device *ibdev)
list_head_init(&dev->prov_dev_context_list);
for (i = 0; i < dev->port_cnt; i++) {
- acm_log(1, "%s port %d\n", ibdev->name, i + 1);
- ret = ibv_query_port(dev->device.verbs, i + 1, &port_attr);
- if (ret) {
- acm_log(0, "ERROR - ibv_query_port (%d)\n", ret);
- continue;
- }
- if (port_attr.link_layer != IBV_LINK_LAYER_INFINIBAND) {
- acm_log(1, "not an InfiniBand port\n");
- continue;
- }
-
acm_open_port(&dev->port[i], dev, i + 1);
- opened_ib_port_cnt++;
}
- if (opened_ib_port_cnt) {
- list_add(&dev_list, &dev->entry);
- acm_log(1, "%d InfiniBand %s opened for %s\n",
- opened_ib_port_cnt,
- opened_ib_port_cnt == 1 ? "port" : "ports",
- ibdev->name);
- return;
- }
+ list_add(&dev_list, &dev->entry);
+
+ acm_log(1, "%s opened\n", ibdev->name);
+ return;
err1:
ibv_close_device(verbs);
--
2.24.1

View File

@ -1,287 +0,0 @@
From 8e527a2d5eb6ef506a14f38095a576b8b470ce56 Mon Sep 17 00:00:00 2001
From: Devesh Sharma <devesh.sharma@broadcom.com>
Date: Sun, 13 Jan 2019 14:36:13 -0500
Subject: [PATCH rdma-core 2/3] bnxt_re/lib: Enable Broadcom's 57500 RoCE
adapter
This is to add Broadcom's 57500 series of adapters support
to RoCE from libbnxt_re. Listing below the significant changes
done as part of the patch.
- Added the pci-id of the basic gen-p5 chip.
- Adjust psn search memory allocation to suite new search
psn structure.
- Added chip context structure to select the appropriate
execution flow in data-path and control path.
- Fill psn search area as per new or older chip execution
flow.
- removed duplicate declaration of BNXT_RE_ABI_VERSION macro
Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
---
providers/bnxt_re/bnxt_re-abi.h | 10 +++++--
providers/bnxt_re/main.c | 14 +++++++++
providers/bnxt_re/main.h | 15 +++++++++-
providers/bnxt_re/verbs.c | 50 +++++++++++++++++++++++----------
4 files changed, 71 insertions(+), 18 deletions(-)
diff --git a/providers/bnxt_re/bnxt_re-abi.h b/providers/bnxt_re/bnxt_re-abi.h
index 65d048d3..c6998e85 100644
--- a/providers/bnxt_re/bnxt_re-abi.h
+++ b/providers/bnxt_re/bnxt_re-abi.h
@@ -43,8 +43,6 @@
#include <rdma/bnxt_re-abi.h>
#include <kernel-abi/bnxt_re-abi.h>
-#define BNXT_RE_ABI_VERSION 1
-
#define BNXT_RE_FULL_FLAG_DELTA 0x80
DECLARE_DRV_CMD(ubnxt_re_pd, IB_USER_VERBS_CMD_ALLOC_PD,
@@ -246,6 +244,14 @@ struct bnxt_re_psns {
__le32 flg_npsn;
};
+struct bnxt_re_psns_ext {
+ __u32 opc_spsn;
+ __u32 flg_npsn;
+ __u16 st_slot_idx;
+ __u16 rsvd0;
+ __u32 rsvd1;
+};
+
struct bnxt_re_sge {
__le64 pa;
__le32 lkey;
diff --git a/providers/bnxt_re/main.c b/providers/bnxt_re/main.c
index 1cd4d880..d171748e 100644
--- a/providers/bnxt_re/main.c
+++ b/providers/bnxt_re/main.c
@@ -74,6 +74,7 @@ static const struct verbs_match_ent cna_table[] = {
CNA(BROADCOM, 0x16EF), /* BCM57416 NPAR */
CNA(BROADCOM, 0x16F0), /* BCM58730 */
CNA(BROADCOM, 0x16F1), /* BCM57452 */
+ CNA(BROADCOM, 0x1750), /* BCM57500 */
CNA(BROADCOM, 0xD800), /* BCM880xx VF */
CNA(BROADCOM, 0xD802), /* BCM58802 */
CNA(BROADCOM, 0xD804), /* BCM8804 SR */
@@ -108,6 +109,11 @@ static const struct verbs_context_ops bnxt_re_cntx_ops = {
.destroy_ah = bnxt_re_destroy_ah
};
+bool bnxt_re_is_chip_gen_p5(struct bnxt_re_chip_ctx *cctx)
+{
+ return cctx->chip_num == CHIP_NUM_57500;
+}
+
/* Context Init functions */
static struct verbs_context *bnxt_re_alloc_context(struct ibv_device *vdev,
int cmd_fd,
@@ -133,6 +139,14 @@ static struct verbs_context *bnxt_re_alloc_context(struct ibv_device *vdev,
dev->pg_size = resp.pg_size;
dev->cqe_size = resp.cqe_sz;
dev->max_cq_depth = resp.max_cqd;
+ if (resp.comp_mask & BNXT_RE_UCNTX_CMASK_HAVE_CCTX) {
+ cntx->cctx.chip_num = resp.chip_id0 & 0xFFFF;
+ cntx->cctx.chip_rev = (resp.chip_id0 >>
+ BNXT_RE_CHIP_ID0_CHIP_REV_SFT) & 0xFF;
+ cntx->cctx.chip_metal = (resp.chip_id0 >>
+ BNXT_RE_CHIP_ID0_CHIP_MET_SFT) &
+ 0xFF;
+ }
pthread_spin_init(&cntx->fqlock, PTHREAD_PROCESS_PRIVATE);
/* mmap shared page. */
cntx->shpg = mmap(NULL, dev->pg_size, PROT_READ | PROT_WRITE,
diff --git a/providers/bnxt_re/main.h b/providers/bnxt_re/main.h
index 0b5c749f..be573496 100644
--- a/providers/bnxt_re/main.h
+++ b/providers/bnxt_re/main.h
@@ -54,7 +54,14 @@
#define DEV "bnxt_re : "
-#define BNXT_RE_UD_QP_HW_STALL 0x400000
+#define BNXT_RE_UD_QP_HW_STALL 0x400000
+
+#define CHIP_NUM_57500 0x1750
+struct bnxt_re_chip_ctx {
+ __u16 chip_num;
+ __u8 chip_rev;
+ __u8 chip_metal;
+};
struct bnxt_re_dpi {
__u32 dpindx;
@@ -81,6 +88,7 @@ struct bnxt_re_cq {
};
struct bnxt_re_wrid {
+ struct bnxt_re_psns_ext *psns_ext;
struct bnxt_re_psns *psns;
uint64_t wrid;
uint32_t bytes;
@@ -111,6 +119,7 @@ struct bnxt_re_srq {
struct bnxt_re_qp {
struct ibv_qp ibvqp;
+ struct bnxt_re_chip_ctx *cctx;
struct bnxt_re_queue *sqq;
struct bnxt_re_wrid *swrid;
struct bnxt_re_queue *rqq;
@@ -155,6 +164,7 @@ struct bnxt_re_context {
struct verbs_context ibvctx;
uint32_t dev_id;
uint32_t max_qp;
+ struct bnxt_re_chip_ctx cctx;
uint32_t max_srq;
struct bnxt_re_dpi udpi;
void *shpg;
@@ -162,6 +172,9 @@ struct bnxt_re_context {
pthread_spinlock_t fqlock;
};
+/* Chip context related functions */
+bool bnxt_re_is_chip_gen_p5(struct bnxt_re_chip_ctx *cctx);
+
/* DB ring functions used internally*/
void bnxt_re_ring_rq_db(struct bnxt_re_qp *qp);
void bnxt_re_ring_sq_db(struct bnxt_re_qp *qp);
diff --git a/providers/bnxt_re/verbs.c b/providers/bnxt_re/verbs.c
index 7786d247..bec382b3 100644
--- a/providers/bnxt_re/verbs.c
+++ b/providers/bnxt_re/verbs.c
@@ -844,9 +844,11 @@ static void bnxt_re_free_queues(struct bnxt_re_qp *qp)
static int bnxt_re_alloc_queues(struct bnxt_re_qp *qp,
struct ibv_qp_init_attr *attr,
uint32_t pg_size) {
+ struct bnxt_re_psns_ext *psns_ext;
struct bnxt_re_queue *que;
struct bnxt_re_psns *psns;
uint32_t psn_depth;
+ uint32_t psn_size;
int ret, indx;
que = qp->sqq;
@@ -857,11 +859,12 @@ static int bnxt_re_alloc_queues(struct bnxt_re_qp *qp,
que->diff = que->depth - attr->cap.max_send_wr;
/* psn_depth extra entries of size que->stride */
- psn_depth = (que->depth * sizeof(struct bnxt_re_psns)) /
- que->stride;
- if ((que->depth * sizeof(struct bnxt_re_psns)) % que->stride)
+ psn_size = bnxt_re_is_chip_gen_p5(qp->cctx) ?
+ sizeof(struct bnxt_re_psns_ext) :
+ sizeof(struct bnxt_re_psns);
+ psn_depth = (que->depth * psn_size) / que->stride;
+ if ((que->depth * psn_size) % que->stride)
psn_depth++;
-
que->depth += psn_depth;
/* PSN-search memory is allocated without checking for
* QP-Type. Kenrel driver do not map this memory if it
@@ -875,6 +878,7 @@ static int bnxt_re_alloc_queues(struct bnxt_re_qp *qp,
que->depth -= psn_depth;
/* start of spsn space sizeof(struct bnxt_re_psns) each. */
psns = (que->va + que->stride * que->depth);
+ psns_ext = (struct bnxt_re_psns_ext *)psns;
pthread_spin_init(&que->qlock, PTHREAD_PROCESS_PRIVATE);
qp->swrid = calloc(que->depth, sizeof(struct bnxt_re_wrid));
if (!qp->swrid) {
@@ -884,6 +888,13 @@ static int bnxt_re_alloc_queues(struct bnxt_re_qp *qp,
for (indx = 0 ; indx < que->depth; indx++, psns++)
qp->swrid[indx].psns = psns;
+ if (bnxt_re_is_chip_gen_p5(qp->cctx)) {
+ for (indx = 0 ; indx < que->depth; indx++, psns_ext++) {
+ qp->swrid[indx].psns_ext = psns_ext;
+ qp->swrid[indx].psns = (struct bnxt_re_psns *)psns_ext;
+ }
+ }
+
qp->cap.max_swr = que->depth;
if (qp->rqq) {
@@ -931,6 +942,7 @@ struct ibv_qp *bnxt_re_create_qp(struct ibv_pd *ibvpd,
if (bnxt_re_alloc_queue_ptr(qp, attr))
goto fail;
/* alloc queues */
+ qp->cctx = &cntx->cctx;
if (bnxt_re_alloc_queues(qp, attr, dev->pg_size))
goto failq;
/* Fill ibv_cmd */
@@ -1094,26 +1106,36 @@ static int bnxt_re_build_sge(struct bnxt_re_sge *sge, struct ibv_sge *sg_list,
return length;
}
-static void bnxt_re_fill_psns(struct bnxt_re_qp *qp, struct bnxt_re_psns *psns,
+static void bnxt_re_fill_psns(struct bnxt_re_qp *qp, struct bnxt_re_wrid *wrid,
uint8_t opcode, uint32_t len)
{
- uint32_t pkt_cnt = 0, nxt_psn;
+ uint32_t opc_spsn = 0, flg_npsn = 0;
+ struct bnxt_re_psns_ext *psns_ext;
+ uint32_t pkt_cnt = 0, nxt_psn = 0;
+ struct bnxt_re_psns *psns;
+
+ psns = wrid->psns;
+ psns_ext = wrid->psns_ext;
- memset(psns, 0, sizeof(*psns));
if (qp->qptyp == IBV_QPT_RC) {
- psns->opc_spsn = htole32(qp->sq_psn & BNXT_RE_PSNS_SPSN_MASK);
+ opc_spsn = qp->sq_psn & BNXT_RE_PSNS_SPSN_MASK;
pkt_cnt = (len / qp->mtu);
if (len % qp->mtu)
pkt_cnt++;
if (len == 0)
pkt_cnt = 1;
nxt_psn = ((qp->sq_psn + pkt_cnt) & BNXT_RE_PSNS_NPSN_MASK);
- psns->flg_npsn = htole32(nxt_psn);
+ flg_npsn = nxt_psn;
qp->sq_psn = nxt_psn;
}
opcode = bnxt_re_ibv_wr_to_wc_opcd(opcode);
- psns->opc_spsn |= htole32(((opcode & BNXT_RE_PSNS_OPCD_MASK) <<
- BNXT_RE_PSNS_OPCD_SHIFT));
+ opc_spsn |= (((uint32_t)opcode & BNXT_RE_PSNS_OPCD_MASK) <<
+ BNXT_RE_PSNS_OPCD_SHIFT);
+ memset(psns, 0, sizeof(*psns));
+ psns->opc_spsn = htole32(opc_spsn);
+ psns->flg_npsn = htole32(flg_npsn);
+ if (bnxt_re_is_chip_gen_p5(qp->cctx))
+ psns_ext->st_slot_idx = 0;
}
static void bnxt_re_fill_wrid(struct bnxt_re_wrid *wrid, struct ibv_send_wr *wr,
@@ -1235,10 +1257,9 @@ int bnxt_re_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
{
struct bnxt_re_qp *qp = to_bnxt_re_qp(ibvqp);
struct bnxt_re_queue *sq = qp->sqq;
- struct bnxt_re_bsqe *hdr;
struct bnxt_re_wrid *wrid;
- struct bnxt_re_psns *psns;
uint8_t is_inline = false;
+ struct bnxt_re_bsqe *hdr;
int ret = 0, bytes = 0;
bool ring_db = false;
void *sqe;
@@ -1268,7 +1289,6 @@ int bnxt_re_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
sqe = (void *)(sq->va + (sq->tail * sq->stride));
wrid = &qp->swrid[sq->tail];
- psns = wrid->psns;
memset(sqe, 0, bnxt_re_get_sqe_sz());
hdr = sqe;
@@ -1318,7 +1338,7 @@ int bnxt_re_post_send(struct ibv_qp *ibvqp, struct ibv_send_wr *wr,
}
bnxt_re_fill_wrid(wrid, wr, bytes, qp->cap.sqsig);
- bnxt_re_fill_psns(qp, psns, wr->opcode, bytes);
+ bnxt_re_fill_psns(qp, wrid, wr->opcode, bytes);
bnxt_re_incr_tail(sq);
qp->wqe_cnt++;
wr = wr->next;
--
2.20.1

View File

@ -0,0 +1,60 @@
From 2d7c483d8a855e01e7bf2d945ab8720a10262bab Mon Sep 17 00:00:00 2001
From: Luke Starrett <luke.starrett@broadcom.com>
Date: Tue, 26 Nov 2019 04:11:28 -0500
Subject: [PATCH 2/2] bnxt_re/lib: Recognize additional 5750x device ID's
BCM5750x family includes 57504 and 57502. Until recently the chip_num
register always conveyed 0x1750 (57508). Recent devices properly
reflect the SKU in the chip_num register. Update Phase5 checks to
reflect this.
Signed-off-by: Luke Starrett <luke.starrett@broadcom.com>
Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
---
providers/bnxt_re/main.c | 6 ++++--
providers/bnxt_re/main.h | 5 ++++-
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/providers/bnxt_re/main.c b/providers/bnxt_re/main.c
index e290a07b..803eff79 100644
--- a/providers/bnxt_re/main.c
+++ b/providers/bnxt_re/main.c
@@ -75,7 +75,7 @@ static const struct verbs_match_ent cna_table[] = {
CNA(BROADCOM, 0x16EF), /* BCM57416 NPAR */
CNA(BROADCOM, 0x16F0), /* BCM58730 */
CNA(BROADCOM, 0x16F1), /* BCM57452 */
- CNA(BROADCOM, 0x1750), /* BCM57500 */
+ CNA(BROADCOM, 0x1750), /* BCM57508 */
CNA(BROADCOM, 0x1751), /* BCM57504 */
CNA(BROADCOM, 0x1752), /* BCM57502 */
CNA(BROADCOM, 0x1803), /* BCM57508 NPAR */
@@ -118,7 +118,9 @@ static const struct verbs_context_ops bnxt_re_cntx_ops = {
bool bnxt_re_is_chip_gen_p5(struct bnxt_re_chip_ctx *cctx)
{
- return cctx->chip_num == CHIP_NUM_57500;
+ return (cctx->chip_num == CHIP_NUM_57508 ||
+ cctx->chip_num == CHIP_NUM_57504 ||
+ cctx->chip_num == CHIP_NUM_57502);
}
/* Context Init functions */
diff --git a/providers/bnxt_re/main.h b/providers/bnxt_re/main.h
index be573496..368297e6 100644
--- a/providers/bnxt_re/main.h
+++ b/providers/bnxt_re/main.h
@@ -56,7 +56,10 @@
#define BNXT_RE_UD_QP_HW_STALL 0x400000
-#define CHIP_NUM_57500 0x1750
+#define CHIP_NUM_57508 0x1750
+#define CHIP_NUM_57504 0x1751
+#define CHIP_NUM_57502 0x1752
+
struct bnxt_re_chip_ctx {
__u16 chip_num;
__u8 chip_rev;
--
2.21.0

View File

@ -0,0 +1,32 @@
From 2e12d7ebf4a578d4b21b4432debf532503907aa5 Mon Sep 17 00:00:00 2001
From: Jason Gunthorpe <jgg@mellanox.com>
Date: Tue, 22 Oct 2019 11:04:29 -0300
Subject: [PATCH rdma-core 02/13] build: Do not enable -Wredundant-decls twice
[ Upstream commit 72918e16727c626717d327cc422654f2d211090d ]
It is already enabled later in cmake using a work around test for old
distros. Enabling it here breaks the work around.
Fixes: 819be5fb5469 ("build: Enable more warnings")
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
CMakeLists.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc17ef36..59ffdf83 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -216,7 +216,6 @@ RDMA_AddOptCFlag(CMAKE_C_FLAGS HAVE_C_WWRITE_STRINGS "-Wwrite-strings")
RDMA_AddOptCFlag(CMAKE_C_FLAGS HAVE_C_WFORMAT_2 "-Wformat=2")
RDMA_AddOptCFlag(CMAKE_C_FLAGS HAVE_C_WCAST_FUNCTION "-Wcast-function-type")
RDMA_AddOptCFlag(CMAKE_C_FLAGS HAVE_C_WFORMAT_NONLITERAL "-Wformat-nonliteral")
-RDMA_AddOptCFlag(CMAKE_C_FLAGS HAVE_C_WREDUNDANT_DECLS "-Wredundant-decls")
RDMA_AddOptCFlag(CMAKE_C_FLAGS HAVE_C_WDATE_TIME "-Wdate-time")
RDMA_AddOptCFlag(CMAKE_C_FLAGS HAVE_C_WNESTED_EXTERNS "-Wnested-externs")
--
2.20.1

View File

@ -0,0 +1,34 @@
From 382253d87dab98a7d082cd91e40eb59c8b70077b Mon Sep 17 00:00:00 2001
From: Noa Osherovich <noaos@mellanox.com>
Date: Mon, 28 Oct 2019 15:58:12 +0200
Subject: [PATCH rdma-core 03/13] man: Fix wrong field in ibv_wr_post's man
page
[ Upstream commit 5850789bb89df8f418d99b5dfb7f18bc3dd6cf58 ]
The example in the man page refers to a non-existing field.
Update to the correct field name.
Fixes: 58ef962809865 ('verbs: Introduce a new post send API')
Signed-off-by: Noa Osherovich <noaos@mellanox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
libibverbs/man/ibv_wr_post.3.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libibverbs/man/ibv_wr_post.3.md b/libibverbs/man/ibv_wr_post.3.md
index 4d5f80d6..ab7fc5f5 100644
--- a/libibverbs/man/ibv_wr_post.3.md
+++ b/libibverbs/man/ibv_wr_post.3.md
@@ -315,7 +315,7 @@ ibv_wr_set_sge(qpx, lkey, local_addr_1, length_1);
/* create 2nd WRITE_WITH_IMM WR entry */
qpx->wr_id = my_wr_id_2;
-qpx->send_flags = IBV_SEND_SIGNALED;
+qpx->wr_flags = IBV_SEND_SIGNALED;
ibv_wr_rdma_write_imm(qpx, rkey, remote_addr_2, htonl(0x1234));
ibv_set_wr_sge(qpx, lkey, local_addr_2, length_2);
--
2.20.1

View File

@ -1,31 +0,0 @@
From cfae5eb767be97f62999a450ae602c7215614408 Mon Sep 17 00:00:00 2001
From: Yishai Hadas <yishaih@mellanox.com>
Date: Sun, 10 Mar 2019 12:03:58 +0200
Subject: [PATCH rdma-core 3/3] mlx5: Add new device IDs
Add ConnectX-6 DX HCA ID.
In addition, add "ConnectX family mlx5Gen Virtual Function" device ID.
Every new HCA VF will be identified with this device ID.
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
---
providers/mlx5/mlx5.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/providers/mlx5/mlx5.c b/providers/mlx5/mlx5.c
index 08edfd85..1faae919 100644
--- a/providers/mlx5/mlx5.c
+++ b/providers/mlx5/mlx5.c
@@ -74,6 +74,8 @@ static const struct verbs_match_ent hca_table[] = {
HCA(MELLANOX, 0x101a), /* ConnectX-5 Ex VF */
HCA(MELLANOX, 0x101b), /* ConnectX-6 */
HCA(MELLANOX, 0x101c), /* ConnectX-6 VF */
+ HCA(MELLANOX, 0x101d), /* ConnectX-6 DX */
+ HCA(MELLANOX, 0x101e), /* ConnectX family mlx5Gen Virtual Function */
HCA(MELLANOX, 0xa2d2), /* BlueField integrated ConnectX-5 network controller */
HCA(MELLANOX, 0xa2d3), /* BlueField integrated ConnectX-5 network controller VF */
{}
--
2.20.1

View File

@ -0,0 +1,85 @@
From 252e5a0f63663da5128fe714a1e9ea8a35995696 Mon Sep 17 00:00:00 2001
From: Maxim Chicherin <maximc@mellanox.com>
Date: Mon, 19 Aug 2019 11:11:12 +0300
Subject: [PATCH rdma-core 04/13] pyverbs: Fix WC creation process
[ Upstream commit e83c7ff811544302ca3ecbcec23df0bb5b68d23f ]
In WC constructor, parameters assignment was incorrect and values
were not stored properly.
In addition, imm_data attribute was not initiated. imm_data represents
immediate data in network byte order if wc_flags & IBV_WC_WITH_IMM or
stores the invalidated rkey if wc_flags & IBV_WC_WITH_INV.
Fixes: 32165065ffbe ("pyverbs: Introducing completions related classes")
Signed-off-by: Maxim Chicherin <maximc@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
pyverbs/cq.pyx | 33 +++++++++++++++++++++------------
1 file changed, 21 insertions(+), 12 deletions(-)
mode change 100644 => 100755 pyverbs/cq.pyx
diff --git a/pyverbs/cq.pyx b/pyverbs/cq.pyx
old mode 100644
new mode 100755
index dc09924e..3ac5f704
--- a/pyverbs/cq.pyx
+++ b/pyverbs/cq.pyx
@@ -366,18 +366,19 @@ cdef class WC(PyverbsObject):
def __cinit__(self, wr_id=0, status=0, opcode=0, vendor_err=0, byte_len=0,
qp_num=0, src_qp=0, imm_data=0, wc_flags=0, pkey_index=0,
slid=0, sl=0, dlid_path_bits=0):
- self.wr_id = wr_id
- self.status = status
- self.opcode = opcode
- self.vendor_err = vendor_err
- self.byte_len = byte_len
- self.qp_num = qp_num
- self.src_qp = src_qp
- self.wc_flags = wc_flags
- self.pkey_index = pkey_index
- self.slid = slid
- self.sl = sl
- self.dlid_path_bits = dlid_path_bits
+ self.wc.wr_id = wr_id
+ self.wc.status = status
+ self.wc.opcode = opcode
+ self.wc.vendor_err = vendor_err
+ self.wc.byte_len = byte_len
+ self.wc.qp_num = qp_num
+ self.wc.src_qp = src_qp
+ self.wc.wc_flags = wc_flags
+ self.wc.pkey_index = pkey_index
+ self.wc.slid = slid
+ self.wc.imm_data = imm_data
+ self.wc.sl = sl
+ self.wc.dlid_path_bits = dlid_path_bits
@property
def wr_id(self):
@@ -456,6 +457,13 @@ cdef class WC(PyverbsObject):
def sl(self, val):
self.wc.sl = val
+ @property
+ def imm_data(self):
+ return self.wc.imm_data
+ @imm_data.setter
+ def imm_data(self, val):
+ self.wc.imm_data = val
+
@property
def dlid_path_bits(self):
return self.wc.dlid_path_bits
@@ -476,6 +484,7 @@ cdef class WC(PyverbsObject):
print_format.format('pkey index', self.pkey_index) +\
print_format.format('slid', self.slid) +\
print_format.format('sl', self.sl) +\
+ print_format.format('imm_data', self.imm_data) +\
print_format.format('dlid path bits', self.dlid_path_bits)
--
2.20.1

View File

@ -0,0 +1,87 @@
From 8720f4f288b12b8c89c6e237560986334c0949fa Mon Sep 17 00:00:00 2001
From: Maxim Chicherin <maximc@mellanox.com>
Date: Mon, 19 Aug 2019 13:59:56 +0300
Subject: [PATCH rdma-core 05/13] pyverbs: Fix CQ and PD assignment in QPAttr
[ Upstream commit d2c24c0d6514678cc8d56f8f2e28fcd6c2e68bbd ]
Fixed CQs assignment in QPInitAttr, QPInitAttrEx and QP objects:
Receive cq parameter was assigned to send_cq attribute in InitAttr
objects, and in QP rcq and scq attributes was not initialized properly.
Fixed PD assignment in QPInitAttrEx object:
In QPInitAttrEx pd pointer was not initialized with PD.pd pointer.
Fixes: 6d97a4af97b8 ("pyverbs: Avoid casting pointers to object type")
Signed-off-by: Maxim Chicherin <maximc@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
pyverbs/qp.pyx | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
mode change 100644 => 100755 pyverbs/qp.pyx
diff --git a/pyverbs/qp.pyx b/pyverbs/qp.pyx
old mode 100644
new mode 100755
index 576c0135..60973ca4
--- a/pyverbs/qp.pyx
+++ b/pyverbs/qp.pyx
@@ -104,9 +104,9 @@ cdef class QPInitAttr(PyverbsObject):
self.attr.qp_context = <void*>qp_context
if scq is not None:
if type(scq) is CQ:
- self.attr.send_cq = (<CQ>rcq).cq
+ self.attr.send_cq = (<CQ>scq).cq
elif type(scq) is CQEX:
- self.attr.send_cq = (<CQEX>rcq).ibv_cq
+ self.attr.send_cq = (<CQEX>scq).ibv_cq
else:
raise PyverbsUserError('Expected CQ/CQEX, got {t}'.\
format(t=type(scq)))
@@ -221,9 +221,9 @@ cdef class QPInitAttrEx(PyverbsObject):
_copy_caps(cap, self)
if scq is not None:
if type(scq) is CQ:
- self.attr.send_cq = (<CQ>rcq).cq
+ self.attr.send_cq = (<CQ>scq).cq
elif type(scq) is CQEX:
- self.attr.send_cq = (<CQEX>rcq).ibv_cq
+ self.attr.send_cq = (<CQEX>scq).ibv_cq
else:
raise PyverbsUserError('Expected CQ/CQEX, got {t}'.\
format(t=type(scq)))
@@ -251,7 +251,7 @@ cdef class QPInitAttrEx(PyverbsObject):
self.attr.comp_mask = comp_mask
if pd is not None:
self._pd = pd
- self.attr.pd = <v.ibv_pd*>pd.pd
+ self.attr.pd = pd.pd
self.attr.create_flags = create_flags
self.attr.max_tso_header = max_tso_header
self.attr.source_qpn = source_qpn
@@ -815,18 +815,20 @@ cdef class QP(PyverbsCM):
if type(init_attr.send_cq) == CQ:
cq = <CQ>init_attr.send_cq
cq.add_ref(self)
+ self.scq = cq
else:
cqex = <CQEX>init_attr.send_cq
cqex.add_ref(self)
- self.scq = cq
+ self.scq = cqex
if init_attr.send_cq != init_attr.recv_cq and init_attr.recv_cq is not None:
if type(init_attr.recv_cq) == CQ:
cq = <CQ>init_attr.recv_cq
cq.add_ref(self)
+ self.rcq = cq
else:
cqex = <CQEX>init_attr.recv_cq
cqex.add_ref(self)
- self.rcq = cq
+ self.rcq = cqex
def _create_qp(self, PD pd, QPInitAttr attr):
self.qp = v.ibv_create_qp(pd.pd, &attr.attr)
--
2.20.1

View File

@ -0,0 +1,37 @@
From 5639fce1322dd8ae1398f8a7f530197484fc1f9e Mon Sep 17 00:00:00 2001
From: Shay Drory <shayd@mellanox.com>
Date: Mon, 7 Oct 2019 12:09:05 +0300
Subject: [PATCH rdma-core 06/13] verbs: Set missing errno in ibv_cmd_reg_mr
[ Upstream commit f9e127a4bffa09ee72fc0ce92228296a4d1c1588 ]
Set missing errno in ibv_cmd_reg_mr() when implicit MR is used.
Fixes: d4021e743fda7 ("verbs: Fix implicit ODP MR support for 32 bit
systems")
Signed-off-by: Shay Drory <shayd@mellanox.com>
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
libibverbs/cmd.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libibverbs/cmd.c b/libibverbs/cmd.c
index 3936e69b..26eaa479 100644
--- a/libibverbs/cmd.c
+++ b/libibverbs/cmd.c
@@ -340,8 +340,10 @@ int ibv_cmd_reg_mr(struct ibv_pd *pd, void *addr, size_t length,
* In that case set the value in the command to what kernel expects.
*/
if (access & IBV_ACCESS_ON_DEMAND) {
- if (length == SIZE_MAX && addr)
+ if (length == SIZE_MAX && addr) {
+ errno = EINVAL;
return EINVAL;
+ }
if (length == SIZE_MAX)
cmd->length = UINT64_MAX;
}
--
2.20.1

View File

@ -0,0 +1,47 @@
From 981c7553f55c8200e00e845224b283059dc07c92 Mon Sep 17 00:00:00 2001
From: Alex Vesker <valex@mellanox.com>
Date: Sun, 6 Oct 2019 11:22:37 +0300
Subject: [PATCH rdma-core 07/13] mlx5: Allow insertion of duplicate rules
using DR API
[ Upstream commit b7c0d4d4611ac14f18024a6388d75f672aa7457a ]
Duplicate rules were not allowed to be configured with SW steering,
unlike when working over root, fix to allow that.
This functionality is useful for replacing rules without dropping
packets.
Fixes: a91e8c2bbedf ('mlx5: Expose steering rule functionality')
Signed-off-by: Alex Vesker <valex@mellanox.com>
Reviewed-by: Erez Shitrit <erezsh@mellanox.com>
Signed-off-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
providers/mlx5/dr_rule.c | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/providers/mlx5/dr_rule.c b/providers/mlx5/dr_rule.c
index 1b873744..1e2d1813 100644
--- a/providers/mlx5/dr_rule.c
+++ b/providers/mlx5/dr_rule.c
@@ -815,12 +815,10 @@ again:
* it means that all the previous stes are the same,
* if so, this rule is duplicated.
*/
- if (dr_ste_is_last_in_rule(nic_matcher, matched_ste->ste_chain_location)) {
- dr_dbg(dmn, "Duplicate rule inserted, aborting\n");
- errno = EINVAL;
- return NULL;
- }
- return matched_ste;
+ if (!dr_ste_is_last_in_rule(nic_matcher, ste_location))
+ return matched_ste;
+
+ dr_dbg(dmn, "Duplicate rule inserted\n");
}
if (!skip_rehash && dr_rule_need_enlarge_hash(cur_htbl, dmn, nic_dmn)) {
--
2.20.1

View File

@ -0,0 +1,39 @@
From 37079bbdb4c6b14f475a8910393e013e40247815 Mon Sep 17 00:00:00 2001
From: Potnuri Bharat Teja <bharat@chelsio.com>
Date: Thu, 31 Oct 2019 16:05:59 +0530
Subject: [PATCH rdma-core 08/13] cxgb4: free appropriate pointer in error case
[ Upstream commit 151068ef86cc28d75b4cd73906b79c52fe55ee9c ]
error unmap case wrongly frees only the cqid2ptr for qp/mmid2ptr.
This patch frees the appropriate pointer.
Fixes: 9b2d3af5735e ("Query device to get the max supported stags, qps, and cqs")
Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
---
v0 -> v1:
- add missing description
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
providers/cxgb4/dev.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/providers/cxgb4/dev.c b/providers/cxgb4/dev.c
index 7f595544..4d02c7a9 100644
--- a/providers/cxgb4/dev.c
+++ b/providers/cxgb4/dev.c
@@ -203,9 +203,9 @@ err_free:
if (rhp->cqid2ptr)
free(rhp->cqid2ptr);
if (rhp->qpid2ptr)
- free(rhp->cqid2ptr);
+ free(rhp->qpid2ptr);
if (rhp->mmid2ptr)
- free(rhp->cqid2ptr);
+ free(rhp->mmid2ptr);
verbs_uninit_context(&context->ibv_ctx);
free(context);
return NULL;
--
2.20.1

View File

@ -0,0 +1,45 @@
From 3146dd6503fbb87b311caae47eeac739dc59bfd3 Mon Sep 17 00:00:00 2001
From: Potnuri Bharat Teja <bharat@chelsio.com>
Date: Mon, 4 Nov 2019 17:18:25 +0530
Subject: [PATCH rdma-core 09/13] cxgb4: always query device before
initializing chip version
[ Upstream commit df720f3658ca49aea89cb6e8f11980f30574d10a ]
chip_version may be initialized wrongly if alloc_context() is
invoked multiple times. therefore always query device to derive the
correct chip_version.
Fixes: c7e71b250268 ("cxgb4: fix chipversion initialization")
Signed-off-by: Rahul Kundu <rahul.kundu@chelsio.com>
Signed-off-by: Potnuri Bharat Teja <bharat@chelsio.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
providers/cxgb4/dev.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/providers/cxgb4/dev.c b/providers/cxgb4/dev.c
index 4d02c7a9..ecd87e6c 100644
--- a/providers/cxgb4/dev.c
+++ b/providers/cxgb4/dev.c
@@ -143,14 +143,11 @@ static struct verbs_context *c4iw_alloc_context(struct ibv_device *ibdev,
}
verbs_set_ops(&context->ibv_ctx, &c4iw_ctx_common_ops);
+ if (ibv_cmd_query_device(&context->ibv_ctx.context, &attr,
+ &raw_fw_ver, &qcmd, sizeof(qcmd)))
+ goto err_unmap;
if (!rhp->mmid2ptr) {
- int ret;
-
- ret = ibv_cmd_query_device(&context->ibv_ctx.context, &attr,
- &raw_fw_ver, &qcmd, sizeof(qcmd));
- if (ret)
- goto err_unmap;
rhp->max_mr = attr.max_mr;
rhp->mmid2ptr = calloc(attr.max_mr, sizeof(void *));
if (!rhp->mmid2ptr) {
--
2.20.1

View File

@ -0,0 +1,469 @@
From 6ce72aaa5963b28a2a01b47f332fa20c02eeb0db Mon Sep 17 00:00:00 2001
From: Jason Gunthorpe <jgg@mellanox.com>
Date: Thu, 31 Oct 2019 13:17:11 -0300
Subject: [PATCH rdma-core 10/13] buildlib: Remove travis CI
[ Upstream commit ae029ac74d62b12ea69127c91f83ad5944130764 ]
Azure Pipelines replaces it completely now, remove the word 'travis' from
the source tree.
v26 was supposed to transition to azp for releases and it lacks the
ability for travis to make the offical github tar.gz, so this needs to be
back ported.
Cc: stable@linux-rdma.org #v26
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
Signed-off-by: Nicolas Morey-Chaisemartin <nmoreychaisemartin@suse.com>
---
.travis.yml | 45 -----------
CMakeLists.txt | 2 +-
Documentation/stable.md | 8 +-
README.md | 12 +--
buildlib/cbuild | 173 ++--------------------------------------
buildlib/check-build | 6 --
buildlib/travis-build | 58 --------------
7 files changed, 17 insertions(+), 287 deletions(-)
delete mode 100644 .travis.yml
delete mode 100755 buildlib/travis-build
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index e00b0165..00000000
--- a/.travis.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-language: c
-dist: xenial
-addons:
- # We run our builds sequentially in one VM rather than try and use the
- # matrix feature. This is because Travis is unreasonably inefficient
- # doing this APT setup pass.
- apt:
- sources:
- - ubuntu-toolchain-r-test
- packages:
- - debhelper
- - dh-systemd
- - fakeroot
- - gcc-8
- - git-core
- - libnl-3-dev
- - libnl-route-3-dev
- - libudev-dev
- - make
- - ninja-build
- - pandoc
- - python-docutils
- - pkg-config
- - python
- - valgrind
- - sparse
- - wget
- - abi-compliance-checker
- - abi-dumper
-
- # 32 bit support packages
- - gcc-multilib
- # xenial craziness, need to give specific version of multilib,
- # in addition to general multilib
- - gcc-8-multilib
- - lib32gcc-8-dev
-
- # pyverbs
- - python3-dev
- - python3-pip
-
-before_script:
- - http_proxy= pip3 install cython
-script:
- - buildlib/travis-build
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 59ffdf83..b5da62b1 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -44,7 +44,7 @@
# prefers python3 if available.
# -DNO_PYVERBS=1 (default, build pyverbs)
# Invoke cython to build pyverbs. Usually you will run with this option
-# is set, but it will be disabled for travis runs.
+# set
# -DENABLE_IBDIAGS_COMPAT=True (default False)
# Include obsolete scripts. These scripts are replaced by C programs with
# a different interface now.
diff --git a/Documentation/stable.md b/Documentation/stable.md
index 76f5cf32..c12b2768 100644
--- a/Documentation/stable.md
+++ b/Documentation/stable.md
@@ -10,7 +10,7 @@ Branched stable releases, off a mainline release, are on as-needed basis and lim
All bug fixes are to be backported from mainline and applied by stable branch maintainer.
-Branched stable releases will append an additional release number (e.g. 15.1) and will ensure that Travis CI reports a successful build.
+Branched stable releases will append an additional release number (e.g. 15.1) and will ensure that Azure Pipelines CI reports a successful build.
Regular stable releases will be generated at the same time as mainline releases.
Additional stable releases can be generated if the need arise (Needed by distributions or OFED).
@@ -73,17 +73,17 @@ so that latters patches/fixes can be checked against this reference.
To do that, the creator of the branch should run
```
-./buildlib/cbuild build-images travis
+./buildlib/cbuild build-images azp
mkdir ABI
touch ABI/.gitignore
git add ABI/.gitignore
git commit -m "ABI Files"
-./buildlib/cbuild pkg travis
+./buildlib/cbuild pkg azp
git add ABI/*
git commit --amend
```
-'cbuild pkg travis' will fail as the ABI verification step files, but it will
+'cbuild pkg azp' will fail as the ABI verification step files, but it will
produce the ABI reference files.
Note that the ABI directory must NOT be committed at any point in the master branch.
diff --git a/README.md b/README.md
index 451ff7fc..36273ad9 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-[![Build Status](https://travis-ci.org/linux-rdma/rdma-core.svg?branch=master)](https://travis-ci.org/linux-rdma/rdma-core)
+[![Build Status](https://dev.azure.com/ucfconsort/rdma-core/_apis/build/status/linux-rdma.rdma-core?branchName=master)](https://dev.azure.com/ucfconsort/rdma-core/_build/latest?definitionId=2&branchName=master)
# RDMA Core Userspace Libraries and Daemons
@@ -137,13 +137,13 @@ Make sure that your contribution can be licensed under the same
license as the original code you are patching, and that you have all
necessary permissions to release your work.
-## TravisCI
+## Azure Pipelines CI
-Submitted patches must pass the TravisCI automatic builds without warnings.
-A build similar to TravisCI can be run locally using docker and the
+Submitted patches must pass the Azure Pipelines CI automatic builds without
+warnings. A build similar to AZP can be run locally using docker and the
'buildlib/cbuild' script.
```sh
-$ buildlib/cbuild build-images travis
-$ buildlib/cbuild pkg travis
+$ buildlib/cbuild build-images azp
+$ buildlib/cbuild pkg azp
```
diff --git a/buildlib/cbuild b/buildlib/cbuild
index 742a9e22..9825e099 100755
--- a/buildlib/cbuild
+++ b/buildlib/cbuild
@@ -290,100 +290,6 @@ class debian_experimental(APTEnvironment):
" ".join(sorted(self.pkgs))));
return res;
-class travis(APTEnvironment):
- """This parses the .travis.yml "apt" add on and converts it to a dockerfile,
- basically creating a container that is similar to what travis would
- use. Note this does not use the base travis image, nor does it install the
- typical travis packages."""
- docker_parent = "ubuntu:16.04";
- name = "travis";
- is_deb = True;
- _yaml = None;
-
- def get_yaml(self):
- if self._yaml:
- return self._yaml;
-
- # Load the commands from the travis file
- with open(".travis.yml") as F:
- self._yaml = yaml.safe_load(F);
- return self._yaml;
- yaml = property(get_yaml);
-
- def get_repos(self):
- """Return a list of things to add with apt-add-repository"""
- Source = collections.namedtuple("Source",["sourceline","key_url"]);
-
- # See https://github.com/travis-ci/apt-source-whitelist/blob/master/ubuntu.json
- pre_defined = {
- "ubuntu-toolchain-r-test": Source("ppa:ubuntu-toolchain-r/test",None),
- };
-
- # Unique the sources
- res = set();
- for src in self.yaml["addons"]["apt"]["sources"]:
- if isinstance(src,dict):
- res.add(Source(sourceline=src["sourceline"],
- key_url=src.get("key_url",None)));
- else:
- res.add(pre_defined[src]);
-
- # Add the sources
- scmds = [];
- scmds.extend("apt-key add /etc/apt/trusted.gpg.d/%s"%(os.path.basename(I.key_url))
- for I in res if I.key_url is not None);
- scmds.extend("http_proxy= apt-add-repository -y %s"%(pipes.quote(I.sourceline))
- for I in res);
-
- # Download the keys
- cmds = ["ADD %s /etc/apt/trusted.gpg.d/"%(I.key_url)
- for I in res if I.key_url is not None];
-
- cmds.append("RUN " + " && ".join(scmds));
- return cmds;
-
- def get_before_script(self):
- """Return a list of commands to run from before_script"""
- cmds = ["RUN useradd -ms /bin/bash travis && \\"
- "su -l -c %s"%(pipes.quote(" && ".join(self.yaml["before_script"]))) + " travis"];
- return cmds
-
- def get_clang(self):
- """We are using the clang that comes in travis, which is not part of our base
- docker container, install something similar by hand."""
- llvm_tar = "clang+llvm-7.0.0-x86_64-linux-gnu-ubuntu-16.04.tar.xz"
- cmds = [
- """RUN wget -q http://releases.llvm.org/7.0.0/{0} -O /tmp/{0} && \\
- tar xf /tmp/{0} -C /usr/local/ && \\
- rm /tmp/{0} && \\
- (cd /usr/local/bin/ && ln -sf ../clang*/bin/clang-7 .)""".format(llvm_tar)];
- return cmds;
-
- def get_cython(self):
- return ["""RUN pip3 install cython"""]
-
- def get_docker_file(self,tmpdir):
- # First this to get apt-add-repository
- self.pkgs = {"software-properties-common"}
- res = APTEnvironment.get_docker_file(self,tmpdir);
-
- # Sources list from the travis.yml
- res.lines.extend(self.get_repos());
-
- # Package list from the travis.yml
- # Travis uses the new cmake built into the image, we need to get an
- # older version from ubuntu.
- res.lines.append("RUN apt-get update && apt-get install -y --no-install-recommends %s"%(
- " ".join(sorted(["cmake"] + self.yaml["addons"]["apt"]["packages"]))));
-
- # Adding before_script commands
- res.lines.extend(self.get_before_script())
-
- res.lines.extend(self.get_clang())
- res.lines.extend(self.get_cython())
-
- return res;
-
# -------------------------------------------------------------------------
class ZypperEnvironment(Environment):
@@ -521,7 +427,6 @@ deb [arch=arm64,ppc64el] http://ports.ubuntu.com/ bionic-updates main universe""
environments = [centos6(),
centos7(),
centos7_epel(),
- travis(),
xenial(),
bionic(),
jessie(),
@@ -572,7 +477,7 @@ def env_choices_pkg():
"""All the names that can be used with ToEnvAction"""
envs = set(("all",));
for I in environments:
- if I.name == "travis" or getattr(I,"is_deb",False) or getattr(I,"is_rpm",False):
+ if getattr(I,"is_deb",False) or getattr(I,"is_rpm",False):
envs.add(I.name);
envs.update(I.aliases);
return envs;
@@ -660,12 +565,12 @@ def get_tar_file(args,tarfn,pandoc_prebuilt=False):
return;
# When the OS does not support pandoc we got through the extra step to
- # build pandoc output in the travis container and include it in the
+ # build pandoc output in the azp container and include it in the
# tar.
if not args.use_prebuilt_pandoc:
- subprocess.check_call(["buildlib/cbuild","make","travis","docs"]);
+ subprocess.check_call(["buildlib/cbuild","make","azure_pipelines","docs"]);
- cmd_make_dist_tar(argparse.Namespace(BUILD="build-travis",tarfn=tarfn,
+ cmd_make_dist_tar(argparse.Namespace(BUILD="build-azure_pipelines",tarfn=tarfn,
script_pwd="",tag=None));
def run_rpm_build(args,spec_file,env):
@@ -839,70 +744,6 @@ def copy_abi_files(src):
print("Changed ABI File: ", ref_fn);
shutil.copy(cur_fn, ref_fn);
-def run_travis_build(args,env):
- with private_tmp(args) as tmpdir:
- os.mkdir(os.path.join(tmpdir,"src"));
- os.mkdir(os.path.join(tmpdir,"tmp"));
-
- opwd = os.getcwd();
- with inDirectory(os.path.join(tmpdir,"src")):
- subprocess.check_call(["git",
- "--git-dir",os.path.join(opwd,".git"),
- "reset","--hard","HEAD"]);
- subprocess.check_call(["git",
- "--git-dir",os.path.join(opwd,".git"),
- "fetch",
- "--no-tags",
- "https://github.com/linux-rdma/rdma-core.git","HEAD",
- "master"]);
- base = subprocess.check_output(["git",
- "--git-dir",os.path.join(opwd,".git"),
- "merge-base",
- "HEAD","FETCH_HEAD"]).decode().strip();
-
- home = os.path.join(os.path.sep,"home","travis");
- home_build = os.path.join(os.path.sep,home,"build");
-
- opts = [
- "run",
- "--read-only",
- "--rm=true",
- "-v","%s:%s"%(tmpdir, home_build),
- "-w",os.path.join(home_build,"src"),
- "-u",str(os.getuid()),
- "-e","TRAVIS_COMMIT_RANGE=%s..HEAD"%(base),
- "-e","TRAVIS_BRANCH=%s"%(base),
- "-e","TRAVIS_EVENT_TYPE=pull_request",
- "-e","HOME=%s"%(home),
- "-e","TMPDIR=%s"%(os.path.join(home_build,"tmp")),
- ] + map_git_args(opwd,os.path.join(home_build,"src"));
-
- # Load the commands from the travis file
- with open(os.path.join(opwd,".travis.yml")) as F:
- cmds = yaml.safe_load(F)["script"];
-
- with open(os.path.join(tmpdir,"go.sh"),"w") as F:
- print("#!/bin/bash", file=F);
- print("set -e", file=F);
- for I in cmds:
- print(I, file=F);
-
- if args.run_shell:
- opts.append("-ti");
- opts.append(env.image_name());
-
- if args.run_shell:
- opts.append("/bin/bash");
- else:
- opts.extend(["/bin/bash",os.path.join(home_build,"go.sh")]);
-
- try:
- docker_cmd(args,*opts);
- except subprocess.CalledProcessError as e:
- copy_abi_files(os.path.join(tmpdir, "src/ABI"));
- raise;
- copy_abi_files(os.path.join(tmpdir, "src/ABI"));
-
def run_azp_build(args,env):
# Load the commands from the pipelines file
with open("buildlib/azure-pipelines.yml") as F:
@@ -995,7 +836,7 @@ def args_pkg(parser):
parser.add_argument("--run-shell",default=False,action="store_true",
help="Instead of running the build, enter a shell");
parser.add_argument("--use-prebuilt-pandoc",default=False,action="store_true",
- help="Do not rebuild the pandoc cache in build-travis/pandoc-prebuilt/");
+ help="Do not rebuild the pandoc cache in build-azure_pipelines/pandoc-prebuilt/");
parser.add_argument("--with", default=[],action="append", dest="with_flags",
help="Enable specified feature in RPM builds");
parser.add_argument("--without", default=[],action="append", dest="without_flags",
@@ -1003,9 +844,7 @@ def args_pkg(parser):
def cmd_pkg(args):
"""Build a package in the given environment."""
for env in args.ENV:
- if env.name == "travis":
- run_travis_build(args,env);
- elif env.name == "azure_pipelines":
+ if env.name == "azure_pipelines":
run_azp_build(args,env);
elif getattr(env,"is_deb",False):
run_deb_build(args,env);
diff --git a/buildlib/check-build b/buildlib/check-build
index 46053527..ab8524e5 100755
--- a/buildlib/check-build
+++ b/buildlib/check-build
@@ -364,12 +364,6 @@ def get_cc_args_from_pkgconfig(args, name, static):
if not static:
return opts
- # The old pkg-config that travis uses incorrectly removes duplicated
- # flags, which breaks linking.
- if (name == "ibverbs" and
- subprocess.check_output(["pkg-config", "--version"]).decode().strip() == "0.26"):
- opts.insert(0, "-libverbs")
-
# Only static link the pkg-config stuff, otherwise we get warnings about
# static linking portions of glibc that need NSS.
opts.insert(0, "-Wl,-Bstatic")
diff --git a/buildlib/travis-build b/buildlib/travis-build
deleted file mode 100755
index 48c1c8f6..00000000
--- a/buildlib/travis-build
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/bash
-
-PATH=/home/`whoami`/.local/bin:$PATH
-
-# Stop on error
-set -e
-# Echo all commands to Travis log
-set -x
-
-mkdir build-travis build32 build-sparse
-
-# Build with latest clang first
-cd build-travis
-CC=clang-7 CFLAGS=-Werror cmake -GNinja .. -DIOCTL_MODE=both -DENABLE_STATIC=1
-ninja
-../buildlib/check-build --src .. --cc clang-7
-
-# 32 bit build to check format strings/etc
-cd ../build32
-# travis is not configured in a way that enables all 32 bit
-# packages. We could fix this with some sudo stuff.. For now turn off libnl
-CC=gcc-8 CFLAGS="-Werror -m32 -msse3" cmake -GNinja .. -DENABLE_RESOLVE_NEIGH=0 -DIOCTL_MODE=both -DNO_PYVERBS=1
-ninja
-
-# Run sparse on the subdirectories which are sparse clean
-cd ../build-sparse
-mv ../CMakeLists.txt ../CMakeLists-orig.txt
-grep -v "# NO SPARSE" ../CMakeLists-orig.txt > ../CMakeLists.txt
-CC=cgcc CFLAGS="-Werror" cmake -GNinja .. -DIOCTL_MODE=both -DNO_PYVERBS=1
-ninja | grep -v '^\[' | tee out
-# sparse does not fail gcc on messages
-if [ -s out ]; then
- false
-fi
-mv ../CMakeLists-orig.txt ../CMakeLists.txt
-
-# Test with coherent DMA mode disabled (ie as would be on ARM32, etc)
-cd ../build-travis
-cp ../util/udma_barrier.h ../util/udma_barrier.h.old
-echo "#error Fail" >> ../util/udma_barrier.h
-rm CMakeCache.txt
-CC=clang-7 CFLAGS=-Werror cmake -GNinja .. -DIOCTL_MODE=both
-ninja
-cp ../util/udma_barrier.h.old ../util/udma_barrier.h
-
-# Finally run through gcc-8 64 bit through the debian packaging This gives a
-# good clue if patches are changing packaging related things, the RPM stuff
-# will have to be audited by hand.
-
-# When running cmake through debian/rules it is hard to set -Werror,
-# instead force it on by changing the CMakeLists.txt
-cd ..
-echo 'set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")' >> buildlib/RDMA_EnableCStd.cmake
-sed -i -e 's/-DCMAKE_BUILD_TYPE=Release/-DCMAKE_BUILD_TYPE=Debug/g' debian/rules
-sed -i -e 's/ninja \(.*\)-v/ninja \1/g' debian/rules
-
-CC=gcc-8 debian/rules build
-fakeroot debian/rules binary
--
2.20.1

View File

@ -0,0 +1,37 @@
From 0f5201694034518656eb07f4ee2060c39c6255ce Mon Sep 17 00:00:00 2001
From: Jason Gunthorpe <jgg@mellanox.com>
Date: Thu, 7 Nov 2019 13:38:04 -0400
Subject: [PATCH rdma-core 11/13] build: Run CI builds on the stable branches
with azp support
[ Upstream commit 5770331de18e98449840238300a0bf4a436d2ee3 ]
v25 is the oldest stable branch that supports azp, before that travis is
required.
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
---
buildlib/azure-pipelines.yml | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/buildlib/azure-pipelines.yml b/buildlib/azure-pipelines.yml
index 4eef7408..031824b2 100644
--- a/buildlib/azure-pipelines.yml
+++ b/buildlib/azure-pipelines.yml
@@ -2,6 +2,13 @@
trigger:
- master
+ - stable-v4*
+ - stable-v3*
+ - stable-v29
+ - stable-v28
+ - stable-v27
+ - stable-v26
+ - stable-v25
pr:
- master
--
2.20.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,24 @@
From fd9b3596cb1a21e54ffb102392178b6bd5d14c78 Mon Sep 17 00:00:00 2001
From: Jarod Wilson <jarod@redhat.com>
Date: Wed, 21 Aug 2019 17:09:13 -0400
Subject: [PATCH rdma-core] udev: keep NAME_KERNEL as default interface
naming convention
Signed-off-by: Jarod Wilson <jarod@redhat.com>
---
kernel-boot/rdma-persistent-naming.rules | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel-boot/rdma-persistent-naming.rules b/kernel-boot/rdma-persistent-naming.rules
index 9b61e163..a561746b 100644
--- a/kernel-boot/rdma-persistent-naming.rules
+++ b/kernel-boot/rdma-persistent-naming.rules
@@ -25,4 +25,4 @@
# Device type = RoCE
# mlx5_0 -> rocex525400c0fe123455
#
-ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_FALLBACK"
+ACTION=="add", SUBSYSTEM=="infiniband", PROGRAM="rdma_rename %k NAME_KERNEL"
--
2.20.1

View File

@ -1,6 +1,6 @@
Name: rdma-core
Version: 22.3
Release: 1%{?dist}
Version: 26.0
Release: 8%{?dist}
Summary: RDMA core userspace libraries and daemons
# Almost everything is licensed under the OFA dual GPLv2, 2 Clause BSD license
@ -13,9 +13,25 @@ Source: https://github.com/linux-rdma/rdma-core/releases/download/v%{version}/%{
Source1: ibdev2netdev
Patch1: redhat-kernel-init-libi40iw-no-longer-tech-preview.patch
Patch2: i40iw-autoload-breaks-suspend.patch
Patch3: 0001-Update-kernel-headers.patch
Patch4: 0002-bnxt_re-lib-Enable-Broadcom-s-57500-RoCE-adapter.patch
Patch5: 0003-mlx5-Add-new-device-IDs.patch
Patch3: udev-keep-NAME_KERNEL-as-default-interface-naming-co.patch
# stable-vX patches
Patch101: 0001-ABI-Files.patch
Patch102: 0002-build-Do-not-enable-Wredundant-decls-twice.patch
Patch103: 0003-man-Fix-wrong-field-in-ibv_wr_post-s-man-page.patch
Patch104: 0004-pyverbs-Fix-WC-creation-process.patch
Patch105: 0005-pyverbs-Fix-CQ-and-PD-assignment-in-QPAttr.patch
Patch106: 0006-verbs-Set-missing-errno-in-ibv_cmd_reg_mr.patch
Patch107: 0007-mlx5-Allow-insertion-of-duplicate-rules-using-DR-API.patch
Patch108: 0008-cxgb4-free-appropriate-pointer-in-error-case.patch
Patch109: 0009-cxgb4-always-query-device-before-initializing-chip-v.patch
Patch110: 0010-buildlib-Remove-travis-CI.patch
Patch111: 0011-build-Run-CI-builds-on-the-stable-branches-with-azp-.patch
Patch112: 0012-build-Update-ABI-files.patch
# libbnxt_re support for some new device ids and generation id
Patch201: 0001-bnxt_re-lib-Add-remaining-pci-ids-for-gen-P5-devices.patch
Patch202: 0002-bnxt_re-lib-Recognize-additional-5750x-device-ID-s.patch
# Fix an ibacm segment fault issue
Patch301: 0001-ibacm-Do-not-open-non-InfiniBand-device.patch
# Do not build static libs by default.
%define with_static %{?_with_static: 1} %{?!_with_static: 0}
@ -26,6 +42,7 @@ BuildRequires: libudev-devel
BuildRequires: pkgconfig
BuildRequires: pkgconfig(libnl-3.0)
BuildRequires: pkgconfig(libnl-route-3.0)
BuildRequires: python3-docutils
%ifarch %{valgrind_arches}
BuildRequires: valgrind-devel
%endif
@ -51,7 +68,7 @@ ExcludeArch: %{arm}
# Since we recommend developers use Ninja, so should packagers, for consistency.
%define CMAKE_FLAGS %{nil}
%if 0%{?fedora} >= 23
%if 0%{?fedora} >= 23 || 0%{?rhel} >= 8
# Ninja was introduced in FC23
BuildRequires: ninja-build
%define CMAKE_FLAGS -GNinja
@ -64,6 +81,8 @@ BuildRequires: make
%define cmake_install DESTDIR=%{buildroot} make install
%endif
BuildRequires: pandoc
%description
RDMA core userspace infrastructure and documentation, including kernel
driver-specific modprobe override configs, IPoIB network scripts,
@ -90,6 +109,11 @@ Obsoletes: librdmacm-static < %{version}-%{release}
Requires: ibacm = %{version}-%{release}
Provides: ibacm-devel = %{version}-%{release}
Obsoletes: ibacm-devel < %{version}-%{release}
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}-%{release}
Provides: libcxgb4-static = %{version}-%{release}
Obsoletes: libcxgb4-static < %{version}-%{release}
Provides: libhfi1-static = %{version}-%{release}
@ -104,6 +128,20 @@ Obsoletes: libi40iw-devel-static < %{version}-%{release}
%description devel
RDMA core development libraries and headers.
%package -n infiniband-diags
Summary: InfiniBand Diagnostic Tools
Requires: libibumad = %{version}-%{release}
Provides: perl(IBswcountlimits)
Provides: libibmad = %{version}-%{release}
Obsoletes: libibmad < %{version}-%{release}
Obsoletes: openib-diags < 1.3
%description -n infiniband-diags
This package provides IB diagnostic programs and scripts needed to diagnose an
IB subnet. infiniband-diags now also provides libibmad. 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.
%package -n libibverbs
Summary: A library and drivers for direct userspace use of RDMA (InfiniBand/iWARP/RoCE) hardware
Requires: %{name}%{?_isa} = %{version}-%{release}
@ -222,8 +260,21 @@ discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand.
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch101 -p1
%patch102 -p1
%patch103 -p1
%patch104 -p1
%patch105 -p1
%patch106 -p1
%patch107 -p1
%patch108 -p1
%patch109 -p1
%patch110 -p1
%patch111 -p1
%patch112 -p1
%patch201 -p1
%patch202 -p1
%patch301 -p1
%build
@ -253,6 +304,8 @@ discover and use SCSI devices via the SCSI RDMA Protocol over InfiniBand.
-DCMAKE_INSTALL_RUNDIR:PATH=%{_rundir} \
-DCMAKE_INSTALL_DOCDIR:PATH=%{_docdir}/%{name}-%{version} \
-DCMAKE_INSTALL_UDEV_RULESDIR:PATH=%{_udevrulesdir} \
-DCMAKE_INSTALL_PERLDIR:PATH=%{perl_vendorlib} \
-DWITH_IBDIAGS_COMPAT:BOOL=False \
%if %{with_static}
-DENABLE_STATIC=1 \
%endif
@ -307,16 +360,29 @@ rm -f %{buildroot}/%{_libdir}/libibverbs/libmthca-rdmav*.so
rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/mthca.driver
rm -f %{buildroot}/%{_libdir}/libibverbs/libipathverbs-rdmav*.so
rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ipathverbs.driver
find %{buildroot} -name '*efa*' -exec rm -fv {} \;
# infiniband-diags
%post -n infiniband-diags -p /sbin/ldconfig
%postun -n infiniband-diags
%ldconfig_postun
# libibverbs
%post -n libibverbs -p /sbin/ldconfig
%postun -n libibverbs -p /sbin/ldconfig
%postun -n libibverbs
%ldconfig_postun
# libibumad
%post -n libibumad -p /sbin/ldconfig
%postun -n libibumad -p /sbin/ldconfig
%postun -n libibumad
%ldconfig_postun
# librdmacm
%post -n librdmacm -p /sbin/ldconfig
%postun -n librdmacm -p /sbin/ldconfig
%postun -n librdmacm
%ldconfig_postun
# ibacm
%post -n ibacm
%systemd_post ibacm.service
%preun -n ibacm
@ -324,6 +390,7 @@ rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ipathverbs.driver
%postun -n ibacm
%systemd_postun_with_restart ibacm.service
# srp_daemon
%post -n srp_daemon
%systemd_post srp_daemon.service
%preun -n srp_daemon
@ -331,6 +398,7 @@ rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ipathverbs.driver
%postun -n srp_daemon
%systemd_postun_with_restart srp_daemon.service
# iwpmd
%post -n iwpmd
%systemd_post iwpmd.service
%preun -n iwpmd
@ -354,6 +422,7 @@ rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ipathverbs.driver
%{_unitdir}/rdma.service
%dir %{dracutlibdir}/modules.d/05rdma
%{dracutlibdir}/modules.d/05rdma/module-setup.sh
%{_udevrulesdir}/../rdma_rename
%{_udevrulesdir}/*
%{sysmodprobedir}/libmlx4.conf
%{_libexecdir}/rdma-init-kernel
@ -387,6 +456,53 @@ rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ipathverbs.driver
%{_mandir}/man7/mlx5dv*
%endif
%{_mandir}/man7/rdma_cm.*
%{_mandir}/man3/ibnd_*
%files -n infiniband-diags
%{_sbindir}/ibaddr
%{_sbindir}/ibnetdiscover
%{_sbindir}/ibping
%{_sbindir}/ibportstate
%{_sbindir}/ibroute
%{_sbindir}/ibstat
%{_sbindir}/ibsysstat
%{_sbindir}/ibtracert
%{_sbindir}/perfquery
%{_sbindir}/sminfo
%{_sbindir}/smpdump
%{_sbindir}/smpquery
%{_sbindir}/saquery
%{_sbindir}/vendstat
%{_sbindir}/iblinkinfo
%{_sbindir}/ibqueryerrors
%{_sbindir}/ibcacheedit
%{_sbindir}/ibccquery
%{_sbindir}/ibccconfig
%{_sbindir}/dump_fts
%{_sbindir}/ibhosts
%{_sbindir}/ibswitches
%{_sbindir}/ibnodes
%{_sbindir}/ibrouters
%{_sbindir}/ibfindnodesusing.pl
%{_sbindir}/ibidsverify.pl
%{_sbindir}/check_lft_balance.pl
%{_sbindir}/dump_lfts.sh
%{_sbindir}/dump_mfts.sh
%{_sbindir}/ibstatus
%{_libdir}/libibmad*.so.*
%{_libdir}/libibnetdisc*.so.*
%{_mandir}/man8/infiniband-diags*
%{_mandir}/man8/check_lft_balance*
%{_mandir}/man8/dump*
%{_mandir}/man8/ib*
%{_mandir}/man8/perfquery*
%{_mandir}/man8/saquery*
%{_mandir}/man8/sminfo*
%{_mandir}/man8/smp*
%{_mandir}/man8/vendstat*
%{perl_vendorlib}/IBswcountlimits.pm
%config(noreplace) %{_sysconfdir}/infiniband-diags/error_thresholds
%config(noreplace) %{_sysconfdir}/infiniband-diags/ibdiag.conf
%files -n libibverbs
%dir %{_sysconfdir}/libibverbs.d
@ -488,6 +604,45 @@ rm -f %{buildroot}/%{_sysconfdir}/libibverbs.d/ipathverbs.driver
%doc %{_docdir}/%{name}-%{version}/ibsrpdm.md
%changelog
* Fri Feb 07 2020 Honggang Li <honli@redhat.com> - 26.0-8
- Fix an ibacm segfault issue for dual port HCA support IB and Ethernet
- Resolves: bz1793736
* Tue Dec 17 2019 Honggang Li <honli@redhat.com> - 26.0-7
- Build with Ninja.
- Resolves: bz1783254
* Fri Dec 13 2019 Honggang Li <honli@redhat.com> - 26.0-6
- Remove dangling symlink
- Resolves: bz1782828
* Wed Dec 11 2019 Honggang Li <honli@redhat.com> - 26.0-5
- Remove EFA driver
- Fix rpm dependency issue
- Resolves: bz1781454, bz1781457
* Mon Dec 09 2019 Honggang Li <honli@redhat.com> - 26.0-4
- libbnxt_re support for some new device ids and generation id
- Resolves: bz1779948
* Tue Nov 19 2019 Jarod Wilson <jarod@redhat.com> - 26.0-3
- Make rdma-core-devel Obsoletes infiniband-diags due to man3/ibnd_*
- Related: rhbz#1722257
* Thu Nov 14 2019 Jarod Wilson <jarod@redhat.com> - 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 <jarod@redhat.com> - 26.0-1
- Update to upstream v26 release for features and fixes
- Resolves: rhbz#1722257
* Tue Jul 23 2019 Jarod Wilson <jarod@redhat.com> - 24.0-1
- Update to upstream v24 release for features and fixes
* Mon Jun 24 2019 Jarod Wilson <jarod@redhat.com> - 22.3-1
- Update to upstream v22.3 stable release for fixes
- Enable support for Broadcom 57500 hardware