aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/core/roce_gid_mgmt.c3
-rw-r--r--drivers/infiniband/hw/hfi1/chip.c3
-rw-r--r--drivers/infiniband/hw/hfi1/hfi.h2
-rw-r--r--drivers/infiniband/hw/hfi1/qp.c7
-rw-r--r--drivers/infiniband/hw/hfi1/verbs.c2
-rw-r--r--drivers/infiniband/hw/mlx5/devx.c4
-rw-r--r--drivers/infiniband/hw/mlx5/odp.c9
7 files changed, 22 insertions, 8 deletions
diff --git a/drivers/infiniband/core/roce_gid_mgmt.c b/drivers/infiniband/core/roce_gid_mgmt.c
index 25d43c8f1c2a..558de0b9895c 100644
--- a/drivers/infiniband/core/roce_gid_mgmt.c
+++ b/drivers/infiniband/core/roce_gid_mgmt.c
@@ -267,6 +267,9 @@ is_upper_ndev_bond_master_filter(struct ib_device *ib_dev, u8 port,
267 struct net_device *cookie_ndev = cookie; 267 struct net_device *cookie_ndev = cookie;
268 bool match = false; 268 bool match = false;
269 269
270 if (!rdma_ndev)
271 return false;
272
270 rcu_read_lock(); 273 rcu_read_lock();
271 if (netif_is_bond_master(cookie_ndev) && 274 if (netif_is_bond_master(cookie_ndev) &&
272 rdma_is_upper_dev_rcu(rdma_ndev, cookie_ndev)) 275 rdma_is_upper_dev_rcu(rdma_ndev, cookie_ndev))
diff --git a/drivers/infiniband/hw/hfi1/chip.c b/drivers/infiniband/hw/hfi1/chip.c
index 9b20479dc710..7e6d70936c63 100644
--- a/drivers/infiniband/hw/hfi1/chip.c
+++ b/drivers/infiniband/hw/hfi1/chip.c
@@ -12500,7 +12500,8 @@ static int init_cntrs(struct hfi1_devdata *dd)
12500 } 12500 }
12501 12501
12502 /* allocate space for the counter values */ 12502 /* allocate space for the counter values */
12503 dd->cntrs = kcalloc(dd->ndevcntrs, sizeof(u64), GFP_KERNEL); 12503 dd->cntrs = kcalloc(dd->ndevcntrs + num_driver_cntrs, sizeof(u64),
12504 GFP_KERNEL);
12504 if (!dd->cntrs) 12505 if (!dd->cntrs)
12505 goto bail; 12506 goto bail;
12506 12507
diff --git a/drivers/infiniband/hw/hfi1/hfi.h b/drivers/infiniband/hw/hfi1/hfi.h
index 1401b6ea4a28..2b882347d0c2 100644
--- a/drivers/infiniband/hw/hfi1/hfi.h
+++ b/drivers/infiniband/hw/hfi1/hfi.h
@@ -155,6 +155,8 @@ struct hfi1_ib_stats {
155extern struct hfi1_ib_stats hfi1_stats; 155extern struct hfi1_ib_stats hfi1_stats;
156extern const struct pci_error_handlers hfi1_pci_err_handler; 156extern const struct pci_error_handlers hfi1_pci_err_handler;
157 157
158extern int num_driver_cntrs;
159
158/* 160/*
159 * First-cut criterion for "device is active" is 161 * First-cut criterion for "device is active" is
160 * two thousand dwords combined Tx, Rx traffic per 162 * two thousand dwords combined Tx, Rx traffic per
diff --git a/drivers/infiniband/hw/hfi1/qp.c b/drivers/infiniband/hw/hfi1/qp.c
index 6f3bc4dab858..1a016248039f 100644
--- a/drivers/infiniband/hw/hfi1/qp.c
+++ b/drivers/infiniband/hw/hfi1/qp.c
@@ -340,6 +340,13 @@ int hfi1_setup_wqe(struct rvt_qp *qp, struct rvt_swqe *wqe, bool *call_send)
340 default: 340 default:
341 break; 341 break;
342 } 342 }
343
344 /*
345 * System latency between send and schedule is large enough that
346 * forcing call_send to true for piothreshold packets is necessary.
347 */
348 if (wqe->length <= piothreshold)
349 *call_send = true;
343 return 0; 350 return 0;
344} 351}
345 352
diff --git a/drivers/infiniband/hw/hfi1/verbs.c b/drivers/infiniband/hw/hfi1/verbs.c
index 48e11e510358..a365089a9305 100644
--- a/drivers/infiniband/hw/hfi1/verbs.c
+++ b/drivers/infiniband/hw/hfi1/verbs.c
@@ -1479,7 +1479,7 @@ static const char * const driver_cntr_names[] = {
1479static DEFINE_MUTEX(cntr_names_lock); /* protects the *_cntr_names bufers */ 1479static DEFINE_MUTEX(cntr_names_lock); /* protects the *_cntr_names bufers */
1480static const char **dev_cntr_names; 1480static const char **dev_cntr_names;
1481static const char **port_cntr_names; 1481static const char **port_cntr_names;
1482static int num_driver_cntrs = ARRAY_SIZE(driver_cntr_names); 1482int num_driver_cntrs = ARRAY_SIZE(driver_cntr_names);
1483static int num_dev_cntrs; 1483static int num_dev_cntrs;
1484static int num_port_cntrs; 1484static int num_port_cntrs;
1485static int cntr_names_initialized; 1485static int cntr_names_initialized;
diff --git a/drivers/infiniband/hw/mlx5/devx.c b/drivers/infiniband/hw/mlx5/devx.c
index 61aab7c0c513..45c421c87100 100644
--- a/drivers/infiniband/hw/mlx5/devx.c
+++ b/drivers/infiniband/hw/mlx5/devx.c
@@ -1066,7 +1066,9 @@ static int devx_umem_get(struct mlx5_ib_dev *dev, struct ib_ucontext *ucontext,
1066 1066
1067 err = uverbs_get_flags32(&access, attrs, 1067 err = uverbs_get_flags32(&access, attrs,
1068 MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS, 1068 MLX5_IB_ATTR_DEVX_UMEM_REG_ACCESS,
1069 IB_ACCESS_SUPPORTED); 1069 IB_ACCESS_LOCAL_WRITE |
1070 IB_ACCESS_REMOTE_WRITE |
1071 IB_ACCESS_REMOTE_READ);
1070 if (err) 1072 if (err)
1071 return err; 1073 return err;
1072 1074
diff --git a/drivers/infiniband/hw/mlx5/odp.c b/drivers/infiniband/hw/mlx5/odp.c
index 2cc3d69ab6f6..4dc6cc640ce0 100644
--- a/drivers/infiniband/hw/mlx5/odp.c
+++ b/drivers/infiniband/hw/mlx5/odp.c
@@ -506,14 +506,13 @@ void mlx5_ib_free_implicit_mr(struct mlx5_ib_mr *imr)
506static int pagefault_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr, 506static int pagefault_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr,
507 u64 io_virt, size_t bcnt, u32 *bytes_mapped) 507 u64 io_virt, size_t bcnt, u32 *bytes_mapped)
508{ 508{
509 int npages = 0, current_seq, page_shift, ret, np;
510 bool implicit = false;
509 struct ib_umem_odp *odp_mr = to_ib_umem_odp(mr->umem); 511 struct ib_umem_odp *odp_mr = to_ib_umem_odp(mr->umem);
510 u64 access_mask = ODP_READ_ALLOWED_BIT; 512 u64 access_mask = ODP_READ_ALLOWED_BIT;
511 int npages = 0, page_shift, np;
512 u64 start_idx, page_mask; 513 u64 start_idx, page_mask;
513 struct ib_umem_odp *odp; 514 struct ib_umem_odp *odp;
514 int current_seq;
515 size_t size; 515 size_t size;
516 int ret;
517 516
518 if (!odp_mr->page_list) { 517 if (!odp_mr->page_list) {
519 odp = implicit_mr_get_data(mr, io_virt, bcnt); 518 odp = implicit_mr_get_data(mr, io_virt, bcnt);
@@ -521,7 +520,7 @@ static int pagefault_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr,
521 if (IS_ERR(odp)) 520 if (IS_ERR(odp))
522 return PTR_ERR(odp); 521 return PTR_ERR(odp);
523 mr = odp->private; 522 mr = odp->private;
524 523 implicit = true;
525 } else { 524 } else {
526 odp = odp_mr; 525 odp = odp_mr;
527 } 526 }
@@ -600,7 +599,7 @@ next_mr:
600 599
601out: 600out:
602 if (ret == -EAGAIN) { 601 if (ret == -EAGAIN) {
603 if (mr->parent || !odp->dying) { 602 if (implicit || !odp->dying) {
604 unsigned long timeout = 603 unsigned long timeout =
605 msecs_to_jiffies(MMU_NOTIFIER_TIMEOUT); 604 msecs_to_jiffies(MMU_NOTIFIER_TIMEOUT);
606 605