[PATCH v2 3/8] ib_umem: With the new ib_umem_get_attrs, simplify ib_umem_get

2016-09-16 Thread Knut Omang
Instead of having most drivers provide a specialized
and weakly typed "boolean" argument
dmasync = 0 argument which are only set to nonzero 3 places,
instead let these special use cases use the
more generic ib_umem_get_attrs which gives access to
the full range of dma attributes and also dma direction,
and eliminate the dmasync parameter from the ib_umem_get call,

Signed-off-by: Knut Omang 
---
 drivers/infiniband/core/umem.c   |  8 ++--
 drivers/infiniband/hw/cxgb3/iwch_provider.c  |  2 +-
 drivers/infiniband/hw/cxgb4/mem.c|  2 +-
 drivers/infiniband/hw/i40iw/i40iw_verbs.c|  2 +-
 drivers/infiniband/hw/mlx4/cq.c  |  4 ++--
 drivers/infiniband/hw/mlx4/doorbell.c|  2 +-
 drivers/infiniband/hw/mlx4/mr.c  |  5 ++---
 drivers/infiniband/hw/mlx4/qp.c  |  2 +-
 drivers/infiniband/hw/mlx4/srq.c |  2 +-
 drivers/infiniband/hw/mlx5/cq.c  | 12 +++-
 drivers/infiniband/hw/mlx5/doorbell.c|  2 +-
 drivers/infiniband/hw/mlx5/mr.c  |  2 +-
 drivers/infiniband/hw/mlx5/qp.c  |  4 ++--
 drivers/infiniband/hw/mlx5/srq.c |  2 +-
 drivers/infiniband/hw/mthca/mthca_provider.c |  8 ++--
 drivers/infiniband/hw/nes/nes_verbs.c|  2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |  2 +-
 drivers/infiniband/sw/rdmavt/mr.c|  2 +-
 drivers/infiniband/sw/rxe/rxe_mr.c   |  2 +-
 include/rdma/ib_umem.h   |  4 ++--
 20 files changed, 36 insertions(+), 35 deletions(-)

diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 699a0f7..938c940 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -77,15 +77,11 @@ static void __ib_umem_release(struct ib_device *dev, struct 
ib_umem *umem, int d
  * @addr: userspace virtual address to start at
  * @size: length of region to pin
  * @access: IB_ACCESS_xxx flags for memory being pinned
- * @dmasync: flush in-flight DMA when the memory region is written
  */
 struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
-   size_t size, int access, int dmasync)
+   size_t size, int access)
 {
-   unsigned long dma_attrs = 0;
-   if (dmasync)
-   dma_attrs |= DMA_ATTR_WRITE_BARRIER;
-   return ib_umem_get_attrs(context, addr, size, access, 
DMA_BIDIRECTIONAL, dma_attrs);
+   return ib_umem_get_attrs(context, addr, size, access, 
DMA_BIDIRECTIONAL, 0);
 }
 EXPORT_SYMBOL(ib_umem_get);
 
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c 
b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index 3edb806..4225479 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -576,7 +576,7 @@ static struct ib_mr *iwch_reg_user_mr(struct ib_pd *pd, u64 
start, u64 length,
 
mhp->rhp = rhp;
 
-   mhp->umem = ib_umem_get(pd->uobject->context, start, length, acc, 0);
+   mhp->umem = ib_umem_get(pd->uobject->context, start, length, acc);
if (IS_ERR(mhp->umem)) {
err = PTR_ERR(mhp->umem);
kfree(mhp);
diff --git a/drivers/infiniband/hw/cxgb4/mem.c 
b/drivers/infiniband/hw/cxgb4/mem.c
index 0b91b0f..7a30b55 100644
--- a/drivers/infiniband/hw/cxgb4/mem.c
+++ b/drivers/infiniband/hw/cxgb4/mem.c
@@ -509,7 +509,7 @@ struct ib_mr *c4iw_reg_user_mr(struct ib_pd *pd, u64 start, 
u64 length,
 
mhp->rhp = rhp;
 
-   mhp->umem = ib_umem_get(pd->uobject->context, start, length, acc, 0);
+   mhp->umem = ib_umem_get(pd->uobject->context, start, length, acc);
if (IS_ERR(mhp->umem)) {
err = PTR_ERR(mhp->umem);
kfree_skb(mhp->dereg_skb);
diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c 
b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
index 2360338..3cf1c23 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
@@ -1703,7 +1703,7 @@ static struct ib_mr *i40iw_reg_user_mr(struct ib_pd *pd,
 
if (length > I40IW_MAX_MR_SIZE)
return ERR_PTR(-EINVAL);
-   region = ib_umem_get(pd->uobject->context, start, length, acc, 0);
+   region = ib_umem_get(pd->uobject->context, start, length, acc);
if (IS_ERR(region))
return (struct ib_mr *)region;
 
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index d6fc8a6..8c3ef00 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -141,8 +141,8 @@ static int mlx4_ib_get_cq_umem(struct mlx4_ib_dev *dev, 
struct ib_ucontext *cont
int err;
int cqe_size = dev->dev->caps.cqe_size;
 
-   *umem = ib_umem_get(context, buf_addr, cqe * cqe_size,
-   IB_ACCESS_LOCAL_WRITE, 1);
+   *umem = ib_umem_get_attrs(context, buf_addr, cqe * cqe_size,
+   

[PATCH v2 3/8] ib_umem: With the new ib_umem_get_attrs, simplify ib_umem_get

2016-09-16 Thread Knut Omang
Instead of having most drivers provide a specialized
and weakly typed "boolean" argument
dmasync = 0 argument which are only set to nonzero 3 places,
instead let these special use cases use the
more generic ib_umem_get_attrs which gives access to
the full range of dma attributes and also dma direction,
and eliminate the dmasync parameter from the ib_umem_get call,

Signed-off-by: Knut Omang 
---
 drivers/infiniband/core/umem.c   |  8 ++--
 drivers/infiniband/hw/cxgb3/iwch_provider.c  |  2 +-
 drivers/infiniband/hw/cxgb4/mem.c|  2 +-
 drivers/infiniband/hw/i40iw/i40iw_verbs.c|  2 +-
 drivers/infiniband/hw/mlx4/cq.c  |  4 ++--
 drivers/infiniband/hw/mlx4/doorbell.c|  2 +-
 drivers/infiniband/hw/mlx4/mr.c  |  5 ++---
 drivers/infiniband/hw/mlx4/qp.c  |  2 +-
 drivers/infiniband/hw/mlx4/srq.c |  2 +-
 drivers/infiniband/hw/mlx5/cq.c  | 12 +++-
 drivers/infiniband/hw/mlx5/doorbell.c|  2 +-
 drivers/infiniband/hw/mlx5/mr.c  |  2 +-
 drivers/infiniband/hw/mlx5/qp.c  |  4 ++--
 drivers/infiniband/hw/mlx5/srq.c |  2 +-
 drivers/infiniband/hw/mthca/mthca_provider.c |  8 ++--
 drivers/infiniband/hw/nes/nes_verbs.c|  2 +-
 drivers/infiniband/hw/ocrdma/ocrdma_verbs.c  |  2 +-
 drivers/infiniband/sw/rdmavt/mr.c|  2 +-
 drivers/infiniband/sw/rxe/rxe_mr.c   |  2 +-
 include/rdma/ib_umem.h   |  4 ++--
 20 files changed, 36 insertions(+), 35 deletions(-)

diff --git a/drivers/infiniband/core/umem.c b/drivers/infiniband/core/umem.c
index 699a0f7..938c940 100644
--- a/drivers/infiniband/core/umem.c
+++ b/drivers/infiniband/core/umem.c
@@ -77,15 +77,11 @@ static void __ib_umem_release(struct ib_device *dev, struct 
ib_umem *umem, int d
  * @addr: userspace virtual address to start at
  * @size: length of region to pin
  * @access: IB_ACCESS_xxx flags for memory being pinned
- * @dmasync: flush in-flight DMA when the memory region is written
  */
 struct ib_umem *ib_umem_get(struct ib_ucontext *context, unsigned long addr,
-   size_t size, int access, int dmasync)
+   size_t size, int access)
 {
-   unsigned long dma_attrs = 0;
-   if (dmasync)
-   dma_attrs |= DMA_ATTR_WRITE_BARRIER;
-   return ib_umem_get_attrs(context, addr, size, access, 
DMA_BIDIRECTIONAL, dma_attrs);
+   return ib_umem_get_attrs(context, addr, size, access, 
DMA_BIDIRECTIONAL, 0);
 }
 EXPORT_SYMBOL(ib_umem_get);
 
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c 
b/drivers/infiniband/hw/cxgb3/iwch_provider.c
index 3edb806..4225479 100644
--- a/drivers/infiniband/hw/cxgb3/iwch_provider.c
+++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c
@@ -576,7 +576,7 @@ static struct ib_mr *iwch_reg_user_mr(struct ib_pd *pd, u64 
start, u64 length,
 
mhp->rhp = rhp;
 
-   mhp->umem = ib_umem_get(pd->uobject->context, start, length, acc, 0);
+   mhp->umem = ib_umem_get(pd->uobject->context, start, length, acc);
if (IS_ERR(mhp->umem)) {
err = PTR_ERR(mhp->umem);
kfree(mhp);
diff --git a/drivers/infiniband/hw/cxgb4/mem.c 
b/drivers/infiniband/hw/cxgb4/mem.c
index 0b91b0f..7a30b55 100644
--- a/drivers/infiniband/hw/cxgb4/mem.c
+++ b/drivers/infiniband/hw/cxgb4/mem.c
@@ -509,7 +509,7 @@ struct ib_mr *c4iw_reg_user_mr(struct ib_pd *pd, u64 start, 
u64 length,
 
mhp->rhp = rhp;
 
-   mhp->umem = ib_umem_get(pd->uobject->context, start, length, acc, 0);
+   mhp->umem = ib_umem_get(pd->uobject->context, start, length, acc);
if (IS_ERR(mhp->umem)) {
err = PTR_ERR(mhp->umem);
kfree_skb(mhp->dereg_skb);
diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c 
b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
index 2360338..3cf1c23 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
@@ -1703,7 +1703,7 @@ static struct ib_mr *i40iw_reg_user_mr(struct ib_pd *pd,
 
if (length > I40IW_MAX_MR_SIZE)
return ERR_PTR(-EINVAL);
-   region = ib_umem_get(pd->uobject->context, start, length, acc, 0);
+   region = ib_umem_get(pd->uobject->context, start, length, acc);
if (IS_ERR(region))
return (struct ib_mr *)region;
 
diff --git a/drivers/infiniband/hw/mlx4/cq.c b/drivers/infiniband/hw/mlx4/cq.c
index d6fc8a6..8c3ef00 100644
--- a/drivers/infiniband/hw/mlx4/cq.c
+++ b/drivers/infiniband/hw/mlx4/cq.c
@@ -141,8 +141,8 @@ static int mlx4_ib_get_cq_umem(struct mlx4_ib_dev *dev, 
struct ib_ucontext *cont
int err;
int cqe_size = dev->dev->caps.cqe_size;
 
-   *umem = ib_umem_get(context, buf_addr, cqe * cqe_size,
-   IB_ACCESS_LOCAL_WRITE, 1);
+   *umem = ib_umem_get_attrs(context, buf_addr, cqe * cqe_size,
+   IB_ACCESS_LOCAL_WRITE,