projects/linux·commit 7ce4de1c

Merge tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma

7ce4de1c · Linus Torvalds <[email protected]> · 2025-07-31 12:19:55 -07:00

Pull rdma updates from Jason Gunthorpe:

 - Various minor code cleanups and fixes for hns, iser, cxgb4, hfi1,
   rxe, erdma, mana_ib

 - Prefetch supprot for rxe ODP

 - Remove memory window support from hns as new device FW is no longer
   support it

 - Remove qib, it is very old and obsolete now, Cornelis wishes to
   restructure the hfi1/qib shared layer

 - Fix a race in destroying CQs where we can still end up with work
   running because the work is cancled before the driver stops
   triggering it

 - Improve interaction with namespaces:
     * Follow the devlink namespace for newly spawned RDMA devices
     * Create iopoib net devces in the parent IB device's namespace
     * Allow CAP_NET_RAW checks to pass in user namespaces

 - A new flow control scheme for IB MADs to try and avoid queue
   overflows in the network

 - Fix 2G message sizes in bnxt_re

 - Optimize mkey layout for mlx5 DMABUF

 - New "DMA Handle" concept to allow controlling PCI TPH and steering
   tags

* tag 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma: (71 commits)
  RDMA/siw: Change maintainer email address
  RDMA/mana_ib: add support of multiple ports
  RDMA/mlx5: Refactor optional counters steering code
  RDMA/mlx5: Add DMAH support for reg_user_mr/reg_user_dmabuf_mr
  IB: Extend UVERBS_METHOD_REG_MR to get DMAH
  RDMA/mlx5: Add DMAH object support
  RDMA/core: Introduce a DMAH object and its alloc/free APIs
  IB/core: Add UVERBS_METHOD_REG_MR on the MR object
  net/mlx5: Add support for device steering tag
  net/mlx5: Expose IFC bits for TPH
  PCI/TPH: Expose pcie_tph_get_st_table_size()
  RDMA/mlx5: Fix incorrect MKEY masking
  RDMA/mlx5: Fix returned type from _mlx5r_umr_zap_mkey()
  RDMA/mlx5: remove redundant check on err on return expression
  RDMA/mana_ib: add additional port counters
  RDMA/mana_ib: Fix DSCP value in modify QP
  RDMA/efa: Add CQ with external memory support
  RDMA/core: Add umem "is_contiguous" and "start_dma_addr" helpers
  RDMA/uverbs: Add a common way to create CQ with umem
  RDMA/mlx5: Optimize DMABUF mkey page size
  ...
Commit
7ce4de1cdaf11c39b507008dfb5a4e59079d4e8a
Parents
2c8c9aae · ee235923

Merge commit. Changes below are compared with the first parent: 2c8c9aae.

Changes

153 files changed · +2869 −49167

FileStatusAddDelContent
.mailmapmodified+1−0View file
MAINTAINERSmodified+1−7View file
drivers/infiniband/Kconfigmodified+0−1View file
drivers/infiniband/core/Makefilemodified+1−0View file
drivers/infiniband/core/cm.cmodified+41−6View file
drivers/infiniband/core/counters.cmodified+1−1View file
drivers/infiniband/core/cq.cmodified+10−2View file
drivers/infiniband/core/device.cmodified+45−2View file
drivers/infiniband/core/mad.cmodified+362−106View file
drivers/infiniband/core/mad_priv.hmodified+73−3View file
drivers/infiniband/core/mad_rmpp.cmodified+24−17View file
drivers/infiniband/core/nldev.cmodified+13−11View file
drivers/infiniband/core/rdma_core.cmodified+29−0View file
drivers/infiniband/core/rdma_core.hmodified+1−0View file
drivers/infiniband/core/restrack.cmodified+2−0View file
drivers/infiniband/core/uverbs_cmd.cmodified+7−6View file
drivers/infiniband/core/uverbs_std_types_cq.cmodified+81−6View file
drivers/infiniband/core/uverbs_std_types_dmah.cadded+145−0View file
drivers/infiniband/core/uverbs_std_types_mr.cmodified+170−2View file
drivers/infiniband/core/uverbs_std_types_qp.cmodified+1−1View file
drivers/infiniband/core/uverbs_uapi.cmodified+1−0View file
drivers/infiniband/core/verbs.cmodified+4−1View file
drivers/infiniband/hw/Makefilemodified+0−1View file
drivers/infiniband/hw/bnxt_re/ib_verbs.cmodified+9−1View file
drivers/infiniband/hw/bnxt_re/ib_verbs.hmodified+2−0View file
drivers/infiniband/hw/bnxt_re/qplib_fp.cmodified+14−14View file
drivers/infiniband/hw/bnxt_re/qplib_fp.hmodified+3−0View file
drivers/infiniband/hw/bnxt_re/qplib_sp.cmodified+1−1View file
drivers/infiniband/hw/bnxt_re/qplib_sp.hmodified+1−0View file
drivers/infiniband/hw/cxgb4/device.cmodified+1−2View file
drivers/infiniband/hw/cxgb4/iw_cxgb4.hmodified+1−0View file
drivers/infiniband/hw/cxgb4/mem.cmodified+5−1View file
drivers/infiniband/hw/efa/efa.hmodified+5−0View file
drivers/infiniband/hw/efa/efa_admin_cmds_defs.hmodified+16−1View file
drivers/infiniband/hw/efa/efa_com_cmd.cmodified+35−18View file
drivers/infiniband/hw/efa/efa_com_cmd.hmodified+10−1View file
drivers/infiniband/hw/efa/efa_main.cmodified+1−0View file
drivers/infiniband/hw/efa/efa_verbs.cmodified+77−14View file
drivers/infiniband/hw/erdma/erdma_verbs.cmodified+7−2View file
drivers/infiniband/hw/erdma/erdma_verbs.hmodified+2−1View file
drivers/infiniband/hw/hfi1/affinity.cmodified+37−59View file
drivers/infiniband/hw/hns/hns_roce_device.hmodified+2−19View file
drivers/infiniband/hw/hns/hns_roce_hem.cmodified+5−13View file
drivers/infiniband/hw/hns/hns_roce_hw_v2.cmodified+64−70View file
drivers/infiniband/hw/hns/hns_roce_hw_v2.hmodified+7−9View file
drivers/infiniband/hw/hns/hns_roce_main.cmodified+7−25View file
drivers/infiniband/hw/hns/hns_roce_mr.cmodified+6−114View file
drivers/infiniband/hw/hns/hns_roce_qp.cmodified+2−2View file
drivers/infiniband/hw/irdma/verbs.cmodified+9−0View file
drivers/infiniband/hw/mana/counters.cmodified+76−2View file
drivers/infiniband/hw/mana/counters.hmodified+18−0View file
drivers/infiniband/hw/mana/device.cmodified+66−54View file
drivers/infiniband/hw/mana/main.cmodified+10−3View file
drivers/infiniband/hw/mana/mana_ib.hmodified+30−0View file
drivers/infiniband/hw/mana/mr.cmodified+8−0View file
drivers/infiniband/hw/mana/qp.cmodified+1−1View file
drivers/infiniband/hw/mlx4/mlx4_ib.hmodified+1−0View file
drivers/infiniband/hw/mlx4/mr.cmodified+4−0View file
drivers/infiniband/hw/mlx5/Makefilemodified+1−0View file
drivers/infiniband/hw/mlx5/counters.cmodified+26−4View file
drivers/infiniband/hw/mlx5/counters.hmodified+0−13View file
drivers/infiniband/hw/mlx5/cq.cmodified+15−4View file
drivers/infiniband/hw/mlx5/devx.cmodified+5−1View file
drivers/infiniband/hw/mlx5/dmah.cadded+54−0View file
drivers/infiniband/hw/mlx5/dmah.hadded+23−0View file
drivers/infiniband/hw/mlx5/fs.cmodified+63−58View file
drivers/infiniband/hw/mlx5/fs.hmodified+6−2View file
drivers/infiniband/hw/mlx5/ib_rep.cmodified+2−1View file
drivers/infiniband/hw/mlx5/main.cmodified+11−2View file
drivers/infiniband/hw/mlx5/mlx5_ib.hmodified+75−24View file
drivers/infiniband/hw/mlx5/mr.cmodified+92−24View file
drivers/infiniband/hw/mlx5/odp.cmodified+25−7View file
drivers/infiniband/hw/mlx5/umr.cmodified+279−22View file
drivers/infiniband/hw/mlx5/umr.hmodified+12−1View file
drivers/infiniband/hw/mthca/mthca_provider.cmodified+5−1View file
drivers/infiniband/hw/ocrdma/ocrdma_verbs.cmodified+5−1View file
drivers/infiniband/hw/ocrdma/ocrdma_verbs.hmodified+2−1View file
drivers/infiniband/hw/qedr/verbs.cmodified+5−1View file
drivers/infiniband/hw/qedr/verbs.hmodified+2−1View file
drivers/infiniband/hw/qib/Kconfigdeleted+0−17View before deletion
drivers/infiniband/hw/qib/Makefiledeleted+0−17View before deletion
drivers/infiniband/hw/qib/qib.hdeleted+0−1492View before deletion
drivers/infiniband/hw/qib/qib_6120_regs.hdeleted+0−977View before deletion
drivers/infiniband/hw/qib/qib_7220.hdeleted+0−149View before deletion
drivers/infiniband/hw/qib/qib_7220_regs.hdeleted+0−1496View before deletion
drivers/infiniband/hw/qib/qib_7322_regs.hdeleted+0−3163View before deletion
drivers/infiniband/hw/qib/qib_common.hdeleted+0−798View before deletion
drivers/infiniband/hw/qib/qib_debugfs.cdeleted+0−274View before deletion
drivers/infiniband/hw/qib/qib_debugfs.hdeleted+0−45View before deletion
drivers/infiniband/hw/qib/qib_diag.cdeleted+0−906View before deletion
drivers/infiniband/hw/qib/qib_driver.cdeleted+0−798View before deletion
drivers/infiniband/hw/qib/qib_eeprom.cdeleted+0−271View before deletion
drivers/infiniband/hw/qib/qib_file_ops.cdeleted+0−2401View before deletion
drivers/infiniband/hw/qib/qib_fs.cdeleted+0−549View before deletion
drivers/infiniband/hw/qib/qib_iba6120.cdeleted+0−3533View before deletion
drivers/infiniband/hw/qib/qib_iba7220.cdeleted+0−4596View before deletion
drivers/infiniband/hw/qib/qib_iba7322.cdeleted+0−8475View before deletion
drivers/infiniband/hw/qib/qib_init.cdeleted+0−1782View before deletion
drivers/infiniband/hw/qib/qib_intr.cdeleted+0−241View before deletion
drivers/infiniband/hw/qib/qib_mad.cdeleted+0−2450View before deletion
drivers/infiniband/hw/qib/qib_mad.hdeleted+0−300View before deletion
drivers/infiniband/hw/qib/qib_pcie.cdeleted+0−598View before deletion
drivers/infiniband/hw/qib/qib_pio_copy.cdeleted+0−64View before deletion
drivers/infiniband/hw/qib/qib_qp.cdeleted+0−454View before deletion
drivers/infiniband/hw/qib/qib_qsfp.cdeleted+0−549View before deletion
drivers/infiniband/hw/qib/qib_qsfp.hdeleted+0−188View before deletion
drivers/infiniband/hw/qib/qib_rc.cdeleted+0−2131View before deletion
drivers/infiniband/hw/qib/qib_ruc.cdeleted+0−314View before deletion
drivers/infiniband/hw/qib/qib_sd7220.cdeleted+0−1445View before deletion
drivers/infiniband/hw/qib/qib_sdma.cdeleted+0−999View before deletion
drivers/infiniband/hw/qib/qib_sysfs.cdeleted+0−731View before deletion
drivers/infiniband/hw/qib/qib_twsi.cdeleted+0−502View before deletion
drivers/infiniband/hw/qib/qib_tx.cdeleted+0−566View before deletion
drivers/infiniband/hw/qib/qib_uc.cdeleted+0−521View before deletion
drivers/infiniband/hw/qib/qib_ud.cdeleted+0−583View before deletion
drivers/infiniband/hw/qib/qib_user_pages.cdeleted+0−137View before deletion
drivers/infiniband/hw/qib/qib_user_sdma.cdeleted+0−1470View before deletion
drivers/infiniband/hw/qib/qib_user_sdma.hdeleted+0−52View before deletion
drivers/infiniband/hw/qib/qib_verbs.cdeleted+0−1705View before deletion
drivers/infiniband/hw/qib/qib_verbs.hdeleted+0−398View before deletion
drivers/infiniband/hw/qib/qib_wc_ppc64.cdeleted+0−62View before deletion
drivers/infiniband/hw/qib/qib_wc_x86_64.cdeleted+0−150View before deletion
drivers/infiniband/hw/usnic/usnic_ib_verbs.cmodified+4−0View file
drivers/infiniband/hw/usnic/usnic_ib_verbs.hmodified+1−0View file
drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.cmodified+5−0View file
drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.hmodified+1−0View file
drivers/infiniband/sw/rdmavt/mr.cmodified+5−0View file
drivers/infiniband/sw/rdmavt/mr.hmodified+1−0View file
drivers/infiniband/sw/rdmavt/vt.cmodified+1−1View file
drivers/infiniband/sw/rxe/rxe.cmodified+7−0View file
drivers/infiniband/sw/rxe/rxe_loc.hmodified+12−0View file
drivers/infiniband/sw/rxe/rxe_odp.cmodified+175−17View file
drivers/infiniband/sw/rxe/rxe_verbs.cmodified+4−0View file
drivers/infiniband/sw/siw/siw_qp_tx.cmodified+16−6View file
drivers/infiniband/sw/siw/siw_verbs.cmodified+6−1View file
drivers/infiniband/sw/siw/siw_verbs.hmodified+2−1View file
drivers/infiniband/ulp/ipoib/ipoib_main.cmodified+2−0View file
drivers/infiniband/ulp/iser/iscsi_iser.cmodified+1−5View file
drivers/net/ethernet/mellanox/mlx5/core/Makefilemodified+5−0View file
drivers/net/ethernet/mellanox/mlx5/core/lib/mlx5.hmodified+0−5View file
drivers/net/ethernet/mellanox/mlx5/core/lib/st.cadded+164−0View file
drivers/net/ethernet/mellanox/mlx5/core/main.cmodified+2−0View file
drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.hmodified+9−0View file
drivers/pci/tph.cmodified+6−5View file
include/linux/cpumask.hmodified+12−0View file
include/linux/mlx5/driver.hmodified+25−0View file
include/linux/mlx5/mlx5_ifc.hmodified+12−2View file
include/linux/pci-tph.hmodified+1−0View file
include/rdma/ib_umem.hmodified+21−4View file
include/rdma/ib_verbs.hmodified+63−2View file
include/rdma/restrack.hmodified+4−0View file
include/uapi/rdma/efa-abi.hmodified+2−1View file
include/uapi/rdma/ib_user_ioctl_cmds.hmodified+36−0View file

Only the first 600 diff lines are shown. Download the complete patch.

.mailmap

View file
diff --git a/.mailmap b/.mailmap
index 4bb3a7f..b1f0edf 100644
--- a/.mailmap
+++ b/.mailmap
@@ -138,6 +138,7 @@ Benjamin Poirier <[email protected]> <[email protected]>
Benjamin Tissoires <[email protected]> <[email protected]>
Benjamin Tissoires <[email protected]> <[email protected]>

MAINTAINERS

View file
diff --git a/MAINTAINERS b/MAINTAINERS
index 1e52309..59af2f0 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -20370,12 +20370,6 @@ S: Maintained
F: drivers/firmware/qemu_fw_cfg.c
F: include/uapi/linux/qemu_fw_cfg.h
-QIB DRIVER
-M: Dennis Dalessandro <[email protected]>
-S: Supported
-F: drivers/infiniband/hw/qib/
-
QLOGIC QL41xxx FCOE DRIVER
M: Saurav Kashyap <[email protected]>
M: Javed Hasan <[email protected]>
@@ -23222,7 +23216,7 @@ S: Maintained
F: drivers/leds/leds-net48xx.c
SOFT-IWARP DRIVER (siw)
-M: Bernard Metzler <[email protected]>
+M: Bernard Metzler <[email protected]>
S: Supported
F: drivers/infiniband/sw/siw/

drivers/infiniband/Kconfig

View file
diff --git a/drivers/infiniband/Kconfig b/drivers/infiniband/Kconfig
index a5827d1..3a394cd 100644
--- a/drivers/infiniband/Kconfig
+++ b/drivers/infiniband/Kconfig
@@ -92,7 +92,6 @@ source "drivers/infiniband/hw/mlx5/Kconfig"
source "drivers/infiniband/hw/mthca/Kconfig"
source "drivers/infiniband/hw/ocrdma/Kconfig"
source "drivers/infiniband/hw/qedr/Kconfig"
-source "drivers/infiniband/hw/qib/Kconfig"
source "drivers/infiniband/hw/usnic/Kconfig"
source "drivers/infiniband/hw/vmw_pvrdma/Kconfig"
source "drivers/infiniband/sw/rdmavt/Kconfig"

drivers/infiniband/core/Makefile

View file
diff --git a/drivers/infiniband/core/Makefile b/drivers/infiniband/core/Makefile
index d49ded7..f483e0c 100644
--- a/drivers/infiniband/core/Makefile
+++ b/drivers/infiniband/core/Makefile
@@ -33,6 +33,7 @@ ib_umad-y := user_mad.o
ib_uverbs-y := uverbs_main.o uverbs_cmd.o uverbs_marshall.o \
rdma_core.o uverbs_std_types.o uverbs_ioctl.o \
uverbs_std_types_cq.o \
+ uverbs_std_types_dmah.o \
uverbs_std_types_flow_action.o uverbs_std_types_dm.o \
uverbs_std_types_mr.o uverbs_std_types_counters.o \
uverbs_uapi.o uverbs_std_types_device.o \

drivers/infiniband/core/cm.c

View file
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c
index 8670e58..92678e4 100644
--- a/drivers/infiniband/core/cm.c
+++ b/drivers/infiniband/core/cm.c
@@ -161,6 +161,7 @@ struct cm_counter_attribute {
struct cm_port {
struct cm_device *cm_dev;
struct ib_mad_agent *mad_agent;
+ struct ib_mad_agent *rep_agent;
u32 port_num;
atomic_long_t counters[CM_COUNTER_GROUPS][CM_ATTR_COUNT];
};
@@ -274,7 +275,8 @@ static inline void cm_deref_id(struct cm_id_private *cm_id_priv)
complete(&cm_id_priv->comp);
}
-static struct ib_mad_send_buf *cm_alloc_msg(struct cm_id_private *cm_id_priv)
+static struct ib_mad_send_buf *
+cm_alloc_msg_agent(struct cm_id_private *cm_id_priv, bool rep_agent)
{
struct ib_mad_agent *mad_agent;
struct ib_mad_send_buf *m;
@@ -286,7 +288,8 @@ static struct ib_mad_send_buf *cm_alloc_msg(struct cm_id_private *cm_id_priv)
return ERR_PTR(-EINVAL);
read_lock(&cm_id_priv->av.port->cm_dev->mad_agent_lock);
- mad_agent = cm_id_priv->av.port->mad_agent;
+ mad_agent = rep_agent ? cm_id_priv->av.port->rep_agent :
+ cm_id_priv->av.port->mad_agent;
if (!mad_agent) {
m = ERR_PTR(-EINVAL);
goto out;
@@ -315,6 +318,11 @@ out:
return m;
}
+static struct ib_mad_send_buf *cm_alloc_msg(struct cm_id_private *cm_id_priv)
+{
+ return cm_alloc_msg_agent(cm_id_priv, false);
+}
+
static void cm_free_msg(struct ib_mad_send_buf *msg)
{
if (msg->ah)
@@ -323,13 +331,14 @@ static void cm_free_msg(struct ib_mad_send_buf *msg)
}
static struct ib_mad_send_buf *
-cm_alloc_priv_msg(struct cm_id_private *cm_id_priv, enum ib_cm_state state)
+cm_alloc_priv_msg_rep(struct cm_id_private *cm_id_priv, enum ib_cm_state state,
+ bool rep_agent)
{
struct ib_mad_send_buf *msg;
lockdep_assert_held(&cm_id_priv->lock);
- msg = cm_alloc_msg(cm_id_priv);
+ msg = cm_alloc_msg_agent(cm_id_priv, rep_agent);
if (IS_ERR(msg))
return msg;
@@ -344,6 +353,12 @@ cm_alloc_priv_msg(struct cm_id_private *cm_id_priv, enum ib_cm_state state)
return msg;
}
+static struct ib_mad_send_buf *
+cm_alloc_priv_msg(struct cm_id_private *cm_id_priv, enum ib_cm_state state)
+{
+ return cm_alloc_priv_msg_rep(cm_id_priv, state, false);
+}
+
static void cm_free_priv_msg(struct ib_mad_send_buf *msg)
{
struct cm_id_private *cm_id_priv = msg->context[0];
@@ -2295,7 +2310,7 @@ int ib_send_cm_rep(struct ib_cm_id *cm_id,
goto out;
}
- msg = cm_alloc_priv_msg(cm_id_priv, IB_CM_REP_SENT);
+ msg = cm_alloc_priv_msg_rep(cm_id_priv, IB_CM_REP_SENT, true);
if (IS_ERR(msg)) {
ret = PTR_ERR(msg);
goto out;
@@ -4380,9 +4395,22 @@ static int cm_add_one(struct ib_device *ib_device)
goto error2;
}
+ port->rep_agent = ib_register_mad_agent(ib_device, i,
+ IB_QPT_GSI,
+ NULL,
+ 0,
+ cm_send_handler,
+ NULL,
+ port,
+ 0);
+ if (IS_ERR(port->rep_agent)) {
+ ret = PTR_ERR(port->rep_agent);
+ goto error3;
+ }
+
ret = ib_modify_port(ib_device, i, 0, &port_modify);
if (ret)
- goto error3;
+ goto error4;
count++;
}
@@ -4397,6 +4425,8 @@ static int cm_add_one(struct ib_device *ib_device)
write_unlock_irqrestore(&cm.device_lock, flags);
return 0;
+error4:
+ ib_unregister_mad_agent(port->rep_agent);
error3:
ib_unregister_mad_agent(port->mad_agent);
error2:
@@ -4410,6 +4440,7 @@ error1:
port = cm_dev->port[i-1];
ib_modify_port(ib_device, port->port_num, 0, &port_modify);
+ ib_unregister_mad_agent(port->rep_agent);
ib_unregister_mad_agent(port->mad_agent);
ib_port_unregister_client_groups(ib_device, i,
cm_counter_groups);
@@ -4439,12 +4470,14 @@ static void cm_remove_one(struct ib_device *ib_device, void *client_data)
rdma_for_each_port (ib_device, i) {
struct ib_mad_agent *mad_agent;
+ struct ib_mad_agent *rep_agent;
if (!rdma_cap_ib_cm(ib_device, i))
continue;
port = cm_dev->port[i-1];
mad_agent = port->mad_agent;
+ rep_agent = port->rep_agent;
ib_modify_port(ib_device, port->port_num, 0, &port_modify);
/*
* We flush the queue here after the going_down set, this
@@ -4458,8 +4491,10 @@ static void cm_remove_one(struct ib_device *ib_device, void *client_data)
*/
write_lock(&cm_dev->mad_agent_lock);
port->mad_agent = NULL;
+ port->rep_agent = NULL;
write_unlock(&cm_dev->mad_agent_lock);
ib_unregister_mad_agent(mad_agent);
+ ib_unregister_mad_agent(rep_agent);
ib_port_unregister_client_groups(ib_device, i,
cm_counter_groups);
}

drivers/infiniband/core/counters.c

View file
diff --git a/drivers/infiniband/core/counters.c b/drivers/infiniband/core/counters.c
index e6ec7b7..c3aa6d7 100644
--- a/drivers/infiniband/core/counters.c
+++ b/drivers/infiniband/core/counters.c
@@ -461,7 +461,7 @@ static struct ib_qp *rdma_counter_get_qp(struct ib_device *dev, u32 qp_num)
return NULL;
qp = container_of(res, struct ib_qp, res);
- if (qp->qp_type == IB_QPT_RAW_PACKET && !capable(CAP_NET_RAW))
+ if (qp->qp_type == IB_QPT_RAW_PACKET && !rdma_dev_has_raw_cap(dev))
goto err;
return qp;

drivers/infiniband/core/cq.c

View file
diff --git a/drivers/infiniband/core/cq.c b/drivers/infiniband/core/cq.c
index a70876a..584537c 100644
--- a/drivers/infiniband/core/cq.c
+++ b/drivers/infiniband/core/cq.c
@@ -317,13 +317,18 @@ EXPORT_SYMBOL(__ib_alloc_cq_any);
*/
void ib_free_cq(struct ib_cq *cq)
{
- int ret;
+ int ret = 0;
if (WARN_ON_ONCE(atomic_read(&cq->usecnt)))
return;
if (WARN_ON_ONCE(cq->cqe_used))
return;
+ if (cq->device->ops.pre_destroy_cq) {
+ ret = cq->device->ops.pre_destroy_cq(cq);
+ WARN_ONCE(ret, "Disable of kernel CQ shouldn't fail");
+ }
+
switch (cq->poll_ctx) {
case IB_POLL_DIRECT:
break;
@@ -340,7 +345,10 @@ void ib_free_cq(struct ib_cq *cq)
rdma_dim_destroy(cq);
trace_cq_free(cq);
- ret = cq->device->ops.destroy_cq(cq, NULL);
+ if (cq->device->ops.post_destroy_cq)
+ cq->device->ops.post_destroy_cq(cq);
+ else
+ ret = cq->device->ops.destroy_cq(cq, NULL);
WARN_ONCE(ret, "Destroy of kernel CQ shouldn't fail");
rdma_restrack_del(&cq->res);
kfree(cq->wc);

drivers/infiniband/core/device.c

View file
diff --git a/drivers/infiniband/core/device.c b/drivers/infiniband/core/device.c
index d426338..3145cb3 100644
--- a/drivers/infiniband/core/device.c
+++ b/drivers/infiniband/core/device.c
@@ -145,6 +145,33 @@ bool rdma_dev_access_netns(const struct ib_device *dev, const struct net *net)
}
EXPORT_SYMBOL(rdma_dev_access_netns);
+/**
+ * rdma_dev_has_raw_cap() - Returns whether a specified rdma device has
+ * CAP_NET_RAW capability or not.
+ *
+ * @dev: Pointer to rdma device whose capability to be checked
+ *
+ * Returns true if a rdma device's owning user namespace has CAP_NET_RAW
+ * capability, otherwise false. When rdma subsystem is in legacy shared network,
+ * namespace mode, the default net namespace is considered.
+ */
+bool rdma_dev_has_raw_cap(const struct ib_device *dev)
+{
+ const struct net *net;
+
+ /* Network namespace is the resource whose user namespace
+ * to be considered. When in shared mode, there is no reliable
+ * network namespace resource, so consider the default net namespace.
+ */
+ if (ib_devices_shared_netns)
+ net = &init_net;
+ else
+ net = read_pnet(&dev->coredev.rdma_net);
+
+ return ns_capable(net->user_ns, CAP_NET_RAW);
+}
+EXPORT_SYMBOL(rdma_dev_has_raw_cap);
+
/*
* xarray has this behavior where it won't iterate over NULL values stored in
* allocated arrays. So we need our own iterator to see all values stored in
@@ -557,6 +584,8 @@ static void rdma_init_coredev(struct ib_core_device *coredev,
/**
* _ib_alloc_device - allocate an IB device struct
* @size:size of structure to allocate
+ * @net: network namespace device should be located in, namespace
+ * must stay valid until ib_register_device() is completed.
*
* Low-level drivers should use ib_alloc_device() to allocate &struct
* ib_device. @size is the size of the structure to be allocated,
@@ -564,7 +593,7 @@ static void rdma_init_coredev(struct ib_core_device *coredev,
* ib_dealloc_device() must be used to free structures allocated with
* ib_alloc_device().
*/
-struct ib_device *_ib_alloc_device(size_t size)
+struct ib_device *_ib_alloc_device(size_t size, struct net *net)
{
struct ib_device *device;
unsigned int i;
@@ -581,7 +610,15 @@ struct ib_device *_ib_alloc_device(size_t size)
return NULL;
}
- rdma_init_coredev(&device->coredev, device, &init_net);
+ /* ib_devices_shared_netns can't change while we have active namespaces
+ * in the system which means either init_net is passed or the user has
+ * no idea what they are doing.
+ *
+ * To avoid breaking backward compatibility, when in shared mode,
+ * force to init the device in the init_net.
+ */
+ net = ib_devices_shared_netns ? &init_net : net;
+ rdma_init_coredev(&device->coredev, device, net);
INIT_LIST_HEAD(&device->event_handler_list);
spin_lock_init(&device->qp_open_list_lock);
@@ -2671,6 +2708,7 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)
SET_DEVICE_OP(dev_ops, add_sub_dev);
SET_DEVICE_OP(dev_ops, advise_mr);
SET_DEVICE_OP(dev_ops, alloc_dm);
+ SET_DEVICE_OP(dev_ops, alloc_dmah);
SET_DEVICE_OP(dev_ops, alloc_hw_device_stats);
SET_DEVICE_OP(dev_ops, alloc_hw_port_stats);
SET_DEVICE_OP(dev_ops, alloc_mr);
@@ -2691,6 +2729,7 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)
SET_DEVICE_OP(dev_ops, create_ah);
SET_DEVICE_OP(dev_ops, create_counters);
SET_DEVICE_OP(dev_ops, create_cq);
+ SET_DEVICE_OP(dev_ops, create_cq_umem);
SET_DEVICE_OP(dev_ops, create_flow);
SET_DEVICE_OP(dev_ops, create_qp);
SET_DEVICE_OP(dev_ops, create_rwq_ind_table);
@@ -2698,6 +2737,7 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)
SET_DEVICE_OP(dev_ops, create_user_ah);
SET_DEVICE_OP(dev_ops, create_wq);
SET_DEVICE_OP(dev_ops, dealloc_dm);
+ SET_DEVICE_OP(dev_ops, dealloc_dmah);
SET_DEVICE_OP(dev_ops, dealloc_driver);
SET_DEVICE_OP(dev_ops, dealloc_mw);
SET_DEVICE_OP(dev_ops, dealloc_pd);
@@ -2763,8 +2803,10 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)
SET_DEVICE_OP(dev_ops, modify_srq);
SET_DEVICE_OP(dev_ops, modify_wq);
SET_DEVICE_OP(dev_ops, peek_cq);
+ SET_DEVICE_OP(dev_ops, pre_destroy_cq);
SET_DEVICE_OP(dev_ops, poll_cq);
SET_DEVICE_OP(dev_ops, port_groups);
+ SET_DEVICE_OP(dev_ops, post_destroy_cq);
SET_DEVICE_OP(dev_ops, post_recv);
SET_DEVICE_OP(dev_ops, post_send);
SET_DEVICE_OP(dev_ops, post_srq_recv);
@@ -2793,6 +2835,7 @@ void ib_set_device_ops(struct ib_device *dev, const struct ib_device_ops *ops)
SET_OBJ_SIZE(dev_ops, ib_ah);
SET_OBJ_SIZE(dev_ops, ib_counters);
SET_OBJ_SIZE(dev_ops, ib_cq);
+ SET_OBJ_SIZE(dev_ops, ib_dmah);
SET_OBJ_SIZE(dev_ops, ib_mw);
SET_OBJ_SIZE(dev_ops, ib_pd);
SET_OBJ_SIZE(dev_ops, ib_qp);

drivers/infiniband/core/mad.c

View file
diff --git a/drivers/infiniband/core/mad.c b/drivers/infiniband/core/mad.c
index 73f3a0b..8f26bfb 100644
--- a/drivers/infiniband/core/mad.c
+++ b/drivers/infiniband/core/mad.c
@@ -210,6 +210,29 @@ int ib_response_mad(const struct ib_mad_hdr *hdr)
}
EXPORT_SYMBOL(ib_response_mad);
+#define SOL_FC_MAX_DEFAULT_FRAC 4
+#define SOL_FC_MAX_SA_FRAC 32
+
+static int get_sol_fc_max_outstanding(struct ib_mad_reg_req *mad_reg_req)
+{
+ if (!mad_reg_req)
+ /* Send only agent */
+ return mad_recvq_size / SOL_FC_MAX_DEFAULT_FRAC;
+
+ switch (mad_reg_req->mgmt_class) {
+ case IB_MGMT_CLASS_CM:
+ return mad_recvq_size / SOL_FC_MAX_DEFAULT_FRAC;
+ case IB_MGMT_CLASS_SUBN_ADM:
+ return mad_recvq_size / SOL_FC_MAX_SA_FRAC;
+ case IB_MGMT_CLASS_SUBN_LID_ROUTED:
+ case IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE:
+ return min(mad_recvq_size, IB_MAD_QP_RECV_SIZE) /
+ SOL_FC_MAX_DEFAULT_FRAC;
+ default:
+ return 0;
+ }
+}
+
/*
* ib_register_mad_agent - Register to send/receive MADs
*
@@ -391,13 +414,17 @@ struct ib_mad_agent *ib_register_mad_agent(struct ib_device *device,
spin_lock_init(&mad_agent_priv->lock);
INIT_LIST_HEAD(&mad_agent_priv->send_list);
INIT_LIST_HEAD(&mad_agent_priv->wait_list);
- INIT_LIST_HEAD(&mad_agent_priv->done_list);
INIT_LIST_HEAD(&mad_agent_priv->rmpp_list);
+ INIT_LIST_HEAD(&mad_agent_priv->backlog_list);
INIT_DELAYED_WORK(&mad_agent_priv->timed_work, timeout_sends);
INIT_LIST_HEAD(&mad_agent_priv->local_list);
INIT_WORK(&mad_agent_priv->local_work, local_completions);
refcount_set(&mad_agent_priv->refcount, 1);
init_completion(&mad_agent_priv->comp);
+ mad_agent_priv->sol_fc_send_count = 0;
+ mad_agent_priv->sol_fc_wait_count = 0;
+ mad_agent_priv->sol_fc_max =
+ recv_handler ? get_sol_fc_max_outstanding(mad_reg_req) : 0;
ret2 = ib_mad_agent_security_setup(&mad_agent_priv->agent, qp_type);
if (ret2) {
@@ -1055,6 +1082,180 @@ int ib_send_mad(struct ib_mad_send_wr_private *mad_send_wr)
return ret;
}
+static void handle_queued_state(struct ib_mad_send_wr_private *mad_send_wr,
+ struct ib_mad_agent_private *mad_agent_priv)
+{
+ if (mad_send_wr->state == IB_MAD_STATE_WAIT_RESP) {
+ mad_agent_priv->sol_fc_wait_count--;
+ list_move_tail(&mad_send_wr->agent_list,
+ &mad_agent_priv->backlog_list);
+ } else {
+ expect_mad_state(mad_send_wr, IB_MAD_STATE_INIT);
+ list_add_tail(&mad_send_wr->agent_list,
+ &mad_agent_priv->backlog_list);
+ }
+}
+
+static void handle_send_state(struct ib_mad_send_wr_private *mad_send_wr,
+ struct ib_mad_agent_private *mad_agent_priv)
+{
+ if (mad_send_wr->state == IB_MAD_STATE_INIT) {
+ list_add_tail(&mad_send_wr->agent_list,
+ &mad_agent_priv->send_list);
+ } else {
+ expect_mad_state2(mad_send_wr, IB_MAD_STATE_WAIT_RESP,
+ IB_MAD_STATE_QUEUED);
+ list_move_tail(&mad_send_wr->agent_list,
+ &mad_agent_priv->send_list);
+ }
+
+ if (mad_send_wr->is_solicited_fc) {
+ if (mad_send_wr->state == IB_MAD_STATE_WAIT_RESP)
+ mad_agent_priv->sol_fc_wait_count--;
+ mad_agent_priv->sol_fc_send_count++;
+ }
+}
+
+static void handle_wait_state(struct ib_mad_send_wr_private *mad_send_wr,
+ struct ib_mad_agent_private *mad_agent_priv)
+{
+ struct ib_mad_send_wr_private *temp_mad_send_wr;
+ struct list_head *list_item;
+ unsigned long delay;
+
+ expect_mad_state3(mad_send_wr, IB_MAD_STATE_SEND_START,
+ IB_MAD_STATE_WAIT_RESP, IB_MAD_STATE_CANCELED);
+ if (mad_send_wr->state == IB_MAD_STATE_SEND_START &&
+ mad_send_wr->is_solicited_fc) {
+ mad_agent_priv->sol_fc_send_count--;
+ mad_agent_priv->sol_fc_wait_count++;
+ }
+
+ list_del_init(&mad_send_wr->agent_list);
+ delay = mad_send_wr->timeout;
+ mad_send_wr->timeout += jiffies;
+
+ if (delay) {
+ list_for_each_prev(list_item,
+ &mad_agent_priv->wait_list) {
+ temp_mad_send_wr = list_entry(
+ list_item,
+ struct ib_mad_send_wr_private,
+ agent_list);
+ if (time_after(mad_send_wr->timeout,
+ temp_mad_send_wr->timeout))
+ break;
+ }
+ } else {
+ list_item = &mad_agent_priv->wait_list;
+ }
+
+ list_add(&mad_send_wr->agent_list, list_item);
+}
+
+static void handle_early_resp_state(struct ib_mad_send_wr_private *mad_send_wr,
+ struct ib_mad_agent_private *mad_agent_priv)
+{
+ expect_mad_state(mad_send_wr, IB_MAD_STATE_SEND_START);
+ mad_agent_priv->sol_fc_send_count -= mad_send_wr->is_solicited_fc;
+}
+
+static void handle_canceled_state(struct ib_mad_send_wr_private *mad_send_wr,
+ struct ib_mad_agent_private *mad_agent_priv)
+{
+ not_expect_mad_state(mad_send_wr, IB_MAD_STATE_DONE);
+ if (mad_send_wr->is_solicited_fc) {
+ if (mad_send_wr->state == IB_MAD_STATE_SEND_START)
+ mad_agent_priv->sol_fc_send_count--;
+ else if (mad_send_wr->state == IB_MAD_STATE_WAIT_RESP)
+ mad_agent_priv->sol_fc_wait_count--;
+ }
+}
+
+static void handle_done_state(struct ib_mad_send_wr_private *mad_send_wr,
+ struct ib_mad_agent_private *mad_agent_priv)
+{
+ if (mad_send_wr->is_solicited_fc) {
+ if (mad_send_wr->state == IB_MAD_STATE_SEND_START)
+ mad_agent_priv->sol_fc_send_count--;
+ else if (mad_send_wr->state == IB_MAD_STATE_WAIT_RESP)
+ mad_agent_priv->sol_fc_wait_count--;
+ }
+
+ list_del_init(&mad_send_wr->agent_list);
+}
+
+void change_mad_state(struct ib_mad_send_wr_private *mad_send_wr,
+ enum ib_mad_state new_state)
+{
+ struct ib_mad_agent_private *mad_agent_priv =
+ mad_send_wr->mad_agent_priv;
+
+ switch (new_state) {
+ case IB_MAD_STATE_INIT:
+ break;
+ case IB_MAD_STATE_QUEUED:
+ handle_queued_state(mad_send_wr, mad_agent_priv);
+ break;
+ case IB_MAD_STATE_SEND_START:
+ handle_send_state(mad_send_wr, mad_agent_priv);
+ break;
+ case IB_MAD_STATE_WAIT_RESP:
+ handle_wait_state(mad_send_wr, mad_agent_priv);
+ if (mad_send_wr->state == IB_MAD_STATE_CANCELED)
+ return;
+ break;
+ case IB_MAD_STATE_EARLY_RESP:
+ handle_early_resp_state(mad_send_wr, mad_agent_priv);
+ break;
+ case IB_MAD_STATE_CANCELED:
+ handle_canceled_state(mad_send_wr, mad_agent_priv);
+ break;
+ case IB_MAD_STATE_DONE:
+ handle_done_state(mad_send_wr, mad_agent_priv);
+ break;
+ }
+
+ mad_send_wr->state = new_state;
+}
+
+static bool is_solicited_fc_mad(struct ib_mad_send_wr_private *mad_send_wr)
+{
+ struct ib_rmpp_mad *rmpp_mad;
+ u8 mgmt_class;
+
+ if (!mad_send_wr->timeout)
+ return 0;
+
+ rmpp_mad = mad_send_wr->send_buf.mad;
+ if (mad_send_wr->mad_agent_priv->agent.rmpp_version &&
+ (ib_get_rmpp_flags(&rmpp_mad->rmpp_hdr) & IB_MGMT_RMPP_FLAG_ACTIVE))
+ return 0;
+
+ mgmt_class =
+ ((struct ib_mad_hdr *)mad_send_wr->send_buf.mad)->mgmt_class;
+ return mgmt_class == IB_MGMT_CLASS_CM ||
+ mgmt_class == IB_MGMT_CLASS_SUBN_ADM ||
+ mgmt_class == IB_MGMT_CLASS_SUBN_LID_ROUTED ||
+ mgmt_class == IB_MGMT_CLASS_SUBN_DIRECTED_ROUTE;
+}
+
+static bool mad_is_for_backlog(struct ib_mad_send_wr_private *mad_send_wr)
+{
+ struct ib_mad_agent_private *mad_agent_priv =
+ mad_send_wr->mad_agent_priv;
+
+ if (!mad_send_wr->is_solicited_fc || !mad_agent_priv->sol_fc_max)
+ return false;
+

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/mad_priv.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/mad_rmpp.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/nldev.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/rdma_core.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/rdma_core.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/restrack.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/uverbs_cmd.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/uverbs_std_types_cq.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/uverbs_std_types_dmah.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/uverbs_std_types_mr.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/uverbs_std_types_qp.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/uverbs_uapi.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/core/verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/bnxt_re/ib_verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/bnxt_re/ib_verbs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/bnxt_re/qplib_fp.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/bnxt_re/qplib_fp.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/bnxt_re/qplib_sp.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/bnxt_re/qplib_sp.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/cxgb4/device.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/cxgb4/iw_cxgb4.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/cxgb4/mem.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/efa/efa.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/efa/efa_admin_cmds_defs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/efa/efa_com_cmd.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/efa/efa_com_cmd.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/efa/efa_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/efa/efa_verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/erdma/erdma_verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/erdma/erdma_verbs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/hfi1/affinity.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/hns/hns_roce_device.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/hns/hns_roce_hem.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/hns/hns_roce_hw_v2.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/hns/hns_roce_hw_v2.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/hns/hns_roce_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/hns/hns_roce_mr.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/hns/hns_roce_qp.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/irdma/verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mana/counters.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mana/counters.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mana/device.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mana/main.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mana/mana_ib.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mana/mr.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mana/qp.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx4/mlx4_ib.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx4/mr.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/counters.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/counters.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/cq.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/devx.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/dmah.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/dmah.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/fs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/fs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/ib_rep.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/main.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/mlx5_ib.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/mr.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/odp.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/umr.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mlx5/umr.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/mthca/mthca_provider.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/ocrdma/ocrdma_verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/ocrdma/ocrdma_verbs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qedr/verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qedr/verbs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/Kconfig

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/Makefile

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_6120_regs.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_7220.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_7220_regs.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_7322_regs.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_common.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_debugfs.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_debugfs.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_diag.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_driver.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_eeprom.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_file_ops.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_fs.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_iba6120.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_iba7220.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_iba7322.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_init.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_intr.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_mad.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_mad.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_pcie.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_pio_copy.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_qp.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_qsfp.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_qsfp.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_rc.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_ruc.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_sd7220.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_sdma.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_sysfs.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_twsi.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_tx.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_uc.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_ud.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_user_pages.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_user_sdma.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_user_sdma.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_verbs.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_verbs.h

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_wc_ppc64.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/qib/qib_wc_x86_64.c

View before deletion

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/usnic/usnic_ib_verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/usnic/usnic_ib_verbs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/vmw_pvrdma/pvrdma_mr.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/hw/vmw_pvrdma/pvrdma_verbs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/rdmavt/mr.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/rdmavt/mr.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/rdmavt/vt.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/rxe/rxe.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/rxe/rxe_loc.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/rxe/rxe_odp.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/rxe/rxe_verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/siw/siw_qp_tx.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/siw/siw_verbs.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/sw/siw/siw_verbs.h

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/ulp/ipoib/ipoib_main.c

View file

This diff is incomplete. Download the complete patch.

drivers/infiniband/ulp/iser/iscsi_iser.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/Makefile

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/lib/mlx5.h

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/lib/st.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/main.c

View file

This diff is incomplete. Download the complete patch.

drivers/net/ethernet/mellanox/mlx5/core/mlx5_core.h

View file

This diff is incomplete. Download the complete patch.

drivers/pci/tph.c

View file

This diff is incomplete. Download the complete patch.

include/linux/cpumask.h

View file

This diff is incomplete. Download the complete patch.

include/linux/mlx5/driver.h

View file

This diff is incomplete. Download the complete patch.

include/linux/mlx5/mlx5_ifc.h

View file

This diff is incomplete. Download the complete patch.

include/linux/pci-tph.h

View file

This diff is incomplete. Download the complete patch.

include/rdma/ib_umem.h

View file

This diff is incomplete. Download the complete patch.

include/rdma/ib_verbs.h

View file

This diff is incomplete. Download the complete patch.

include/rdma/restrack.h

View file

This diff is incomplete. Download the complete patch.

include/uapi/rdma/efa-abi.h

View file

This diff is incomplete. Download the complete patch.

include/uapi/rdma/ib_user_ioctl_cmds.h

View file

This diff is incomplete. Download the complete patch.