diff mbox

[v1] core: Remove the ib_reg_phys_mr() and ib_rereg_phys_mr() verbs

Message ID 20150714200920.27121.57730.stgit@manet.1015granger.net (mailing list archive)
State Not Applicable
Headers show

Commit Message

Chuck Lever III July 14, 2015, 8:11 p.m. UTC
The verbs are obsolete. The ib_rereg_phys_mr() verb is not used by
kernel ULPs, and the last ib_reg_phys_mr() call site in the kernel
tree has now been removed.

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
---
I'm still tracking down Doug's e-mail. In the meantime, let's start
with this naive approach, which removes the core APIs but does not
touch the providers.


 drivers/infiniband/core/verbs.c |   67 ---------------------------------------
 include/rdma/ib_verbs.h         |   46 ---------------------------
 2 files changed, 113 deletions(-)


--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Chuck Lever III July 20, 2015, 6:31 p.m. UTC | #1
Hi Doug-

Are you comfortable ack’ing this one? If so, I can carry it in my
nfs-rdma-for-4.3 series following the patch that removes the last
ib_reg_phys_mr() call site.


On Jul 14, 2015, at 4:11 PM, Chuck Lever <chuck.lever@oracle.com> wrote:

> The verbs are obsolete. The ib_rereg_phys_mr() verb is not used by
> kernel ULPs, and the last ib_reg_phys_mr() call site in the kernel
> tree has now been removed.
> 
> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
> ---
> I'm still tracking down Doug's e-mail. In the meantime, let's start
> with this naive approach, which removes the core APIs but does not
> touch the providers.
> 
> 
> drivers/infiniband/core/verbs.c |   67 ---------------------------------------
> include/rdma/ib_verbs.h         |   46 ---------------------------
> 2 files changed, 113 deletions(-)
> 
> diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
> index bac3fb4..30eb245 100644
> --- a/drivers/infiniband/core/verbs.c
> +++ b/drivers/infiniband/core/verbs.c
> @@ -1144,73 +1144,6 @@ struct ib_mr *ib_get_dma_mr(struct ib_pd *pd, int mr_access_flags)
> }
> EXPORT_SYMBOL(ib_get_dma_mr);
> 
> -struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,
> -			     struct ib_phys_buf *phys_buf_array,
> -			     int num_phys_buf,
> -			     int mr_access_flags,
> -			     u64 *iova_start)
> -{
> -	struct ib_mr *mr;
> -	int err;
> -
> -	err = ib_check_mr_access(mr_access_flags);
> -	if (err)
> -		return ERR_PTR(err);
> -
> -	if (!pd->device->reg_phys_mr)
> -		return ERR_PTR(-ENOSYS);
> -
> -	mr = pd->device->reg_phys_mr(pd, phys_buf_array, num_phys_buf,
> -				     mr_access_flags, iova_start);
> -
> -	if (!IS_ERR(mr)) {
> -		mr->device  = pd->device;
> -		mr->pd      = pd;
> -		mr->uobject = NULL;
> -		atomic_inc(&pd->usecnt);
> -		atomic_set(&mr->usecnt, 0);
> -	}
> -
> -	return mr;
> -}
> -EXPORT_SYMBOL(ib_reg_phys_mr);
> -
> -int ib_rereg_phys_mr(struct ib_mr *mr,
> -		     int mr_rereg_mask,
> -		     struct ib_pd *pd,
> -		     struct ib_phys_buf *phys_buf_array,
> -		     int num_phys_buf,
> -		     int mr_access_flags,
> -		     u64 *iova_start)
> -{
> -	struct ib_pd *old_pd;
> -	int ret;
> -
> -	ret = ib_check_mr_access(mr_access_flags);
> -	if (ret)
> -		return ret;
> -
> -	if (!mr->device->rereg_phys_mr)
> -		return -ENOSYS;
> -
> -	if (atomic_read(&mr->usecnt))
> -		return -EBUSY;
> -
> -	old_pd = mr->pd;
> -
> -	ret = mr->device->rereg_phys_mr(mr, mr_rereg_mask, pd,
> -					phys_buf_array, num_phys_buf,
> -					mr_access_flags, iova_start);
> -
> -	if (!ret && (mr_rereg_mask & IB_MR_REREG_PD)) {
> -		atomic_dec(&old_pd->usecnt);
> -		atomic_inc(&pd->usecnt);
> -	}
> -
> -	return ret;
> -}
> -EXPORT_SYMBOL(ib_rereg_phys_mr);
> -
> int ib_query_mr(struct ib_mr *mr, struct ib_mr_attr *mr_attr)
> {
> 	return mr->device->query_mr ?
> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
> index 986fddb..6d0f5d0 100644
> --- a/include/rdma/ib_verbs.h
> +++ b/include/rdma/ib_verbs.h
> @@ -2746,52 +2746,6 @@ static inline void ib_dma_free_coherent(struct ib_device *dev,
> }
> 
> /**
> - * ib_reg_phys_mr - Prepares a virtually addressed memory region for use
> - *   by an HCA.
> - * @pd: The protection domain associated assigned to the registered region.
> - * @phys_buf_array: Specifies a list of physical buffers to use in the
> - *   memory region.
> - * @num_phys_buf: Specifies the size of the phys_buf_array.
> - * @mr_access_flags: Specifies the memory access rights.
> - * @iova_start: The offset of the region's starting I/O virtual address.
> - */
> -struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,
> -			     struct ib_phys_buf *phys_buf_array,
> -			     int num_phys_buf,
> -			     int mr_access_flags,
> -			     u64 *iova_start);
> -
> -/**
> - * ib_rereg_phys_mr - Modifies the attributes of an existing memory region.
> - *   Conceptually, this call performs the functions deregister memory region
> - *   followed by register physical memory region.  Where possible,
> - *   resources are reused instead of deallocated and reallocated.
> - * @mr: The memory region to modify.
> - * @mr_rereg_mask: A bit-mask used to indicate which of the following
> - *   properties of the memory region are being modified.
> - * @pd: If %IB_MR_REREG_PD is set in mr_rereg_mask, this field specifies
> - *   the new protection domain to associated with the memory region,
> - *   otherwise, this parameter is ignored.
> - * @phys_buf_array: If %IB_MR_REREG_TRANS is set in mr_rereg_mask, this
> - *   field specifies a list of physical buffers to use in the new
> - *   translation, otherwise, this parameter is ignored.
> - * @num_phys_buf: If %IB_MR_REREG_TRANS is set in mr_rereg_mask, this
> - *   field specifies the size of the phys_buf_array, otherwise, this
> - *   parameter is ignored.
> - * @mr_access_flags: If %IB_MR_REREG_ACCESS is set in mr_rereg_mask, this
> - *   field specifies the new memory access rights, otherwise, this
> - *   parameter is ignored.
> - * @iova_start: The offset of the region's starting I/O virtual address.
> - */
> -int ib_rereg_phys_mr(struct ib_mr *mr,
> -		     int mr_rereg_mask,
> -		     struct ib_pd *pd,
> -		     struct ib_phys_buf *phys_buf_array,
> -		     int num_phys_buf,
> -		     int mr_access_flags,
> -		     u64 *iova_start);
> -
> -/**
>  * ib_query_mr - Retrieves information about a specific memory region.
>  * @mr: The memory region to retrieve information about.
>  * @mr_attr: The attributes of the specified memory region.
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
Chuck Lever



--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Doug Ledford July 20, 2015, 6:34 p.m. UTC | #2
> On Jul 20, 2015, at 2:31 PM, Chuck Lever <chuck.lever@oracle.com> wrote:
> 
> Hi Doug-
> 
> Are you comfortable ack’ing this one? If so, I can carry it in my
> nfs-rdma-for-4.3 series following the patch that removes the last
> ib_reg_phys_mr() call site.

Yes.

Acked-by: Doug Ledford <dledford@redhat.com>

> 
> On Jul 14, 2015, at 4:11 PM, Chuck Lever <chuck.lever@oracle.com> wrote:
> 
>> The verbs are obsolete. The ib_rereg_phys_mr() verb is not used by
>> kernel ULPs, and the last ib_reg_phys_mr() call site in the kernel
>> tree has now been removed.
>> 
>> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
>> ---
>> I'm still tracking down Doug's e-mail. In the meantime, let's start
>> with this naive approach, which removes the core APIs but does not
>> touch the providers.
>> 
>> 
>> drivers/infiniband/core/verbs.c |   67 ---------------------------------------
>> include/rdma/ib_verbs.h         |   46 ---------------------------
>> 2 files changed, 113 deletions(-)
>> 
>> diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
>> index bac3fb4..30eb245 100644
>> --- a/drivers/infiniband/core/verbs.c
>> +++ b/drivers/infiniband/core/verbs.c
>> @@ -1144,73 +1144,6 @@ struct ib_mr *ib_get_dma_mr(struct ib_pd *pd, int mr_access_flags)
>> }
>> EXPORT_SYMBOL(ib_get_dma_mr);
>> 
>> -struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,
>> -			     struct ib_phys_buf *phys_buf_array,
>> -			     int num_phys_buf,
>> -			     int mr_access_flags,
>> -			     u64 *iova_start)
>> -{
>> -	struct ib_mr *mr;
>> -	int err;
>> -
>> -	err = ib_check_mr_access(mr_access_flags);
>> -	if (err)
>> -		return ERR_PTR(err);
>> -
>> -	if (!pd->device->reg_phys_mr)
>> -		return ERR_PTR(-ENOSYS);
>> -
>> -	mr = pd->device->reg_phys_mr(pd, phys_buf_array, num_phys_buf,
>> -				     mr_access_flags, iova_start);
>> -
>> -	if (!IS_ERR(mr)) {
>> -		mr->device  = pd->device;
>> -		mr->pd      = pd;
>> -		mr->uobject = NULL;
>> -		atomic_inc(&pd->usecnt);
>> -		atomic_set(&mr->usecnt, 0);
>> -	}
>> -
>> -	return mr;
>> -}
>> -EXPORT_SYMBOL(ib_reg_phys_mr);
>> -
>> -int ib_rereg_phys_mr(struct ib_mr *mr,
>> -		     int mr_rereg_mask,
>> -		     struct ib_pd *pd,
>> -		     struct ib_phys_buf *phys_buf_array,
>> -		     int num_phys_buf,
>> -		     int mr_access_flags,
>> -		     u64 *iova_start)
>> -{
>> -	struct ib_pd *old_pd;
>> -	int ret;
>> -
>> -	ret = ib_check_mr_access(mr_access_flags);
>> -	if (ret)
>> -		return ret;
>> -
>> -	if (!mr->device->rereg_phys_mr)
>> -		return -ENOSYS;
>> -
>> -	if (atomic_read(&mr->usecnt))
>> -		return -EBUSY;
>> -
>> -	old_pd = mr->pd;
>> -
>> -	ret = mr->device->rereg_phys_mr(mr, mr_rereg_mask, pd,
>> -					phys_buf_array, num_phys_buf,
>> -					mr_access_flags, iova_start);
>> -
>> -	if (!ret && (mr_rereg_mask & IB_MR_REREG_PD)) {
>> -		atomic_dec(&old_pd->usecnt);
>> -		atomic_inc(&pd->usecnt);
>> -	}
>> -
>> -	return ret;
>> -}
>> -EXPORT_SYMBOL(ib_rereg_phys_mr);
>> -
>> int ib_query_mr(struct ib_mr *mr, struct ib_mr_attr *mr_attr)
>> {
>> 	return mr->device->query_mr ?
>> diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
>> index 986fddb..6d0f5d0 100644
>> --- a/include/rdma/ib_verbs.h
>> +++ b/include/rdma/ib_verbs.h
>> @@ -2746,52 +2746,6 @@ static inline void ib_dma_free_coherent(struct ib_device *dev,
>> }
>> 
>> /**
>> - * ib_reg_phys_mr - Prepares a virtually addressed memory region for use
>> - *   by an HCA.
>> - * @pd: The protection domain associated assigned to the registered region.
>> - * @phys_buf_array: Specifies a list of physical buffers to use in the
>> - *   memory region.
>> - * @num_phys_buf: Specifies the size of the phys_buf_array.
>> - * @mr_access_flags: Specifies the memory access rights.
>> - * @iova_start: The offset of the region's starting I/O virtual address.
>> - */
>> -struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,
>> -			     struct ib_phys_buf *phys_buf_array,
>> -			     int num_phys_buf,
>> -			     int mr_access_flags,
>> -			     u64 *iova_start);
>> -
>> -/**
>> - * ib_rereg_phys_mr - Modifies the attributes of an existing memory region.
>> - *   Conceptually, this call performs the functions deregister memory region
>> - *   followed by register physical memory region.  Where possible,
>> - *   resources are reused instead of deallocated and reallocated.
>> - * @mr: The memory region to modify.
>> - * @mr_rereg_mask: A bit-mask used to indicate which of the following
>> - *   properties of the memory region are being modified.
>> - * @pd: If %IB_MR_REREG_PD is set in mr_rereg_mask, this field specifies
>> - *   the new protection domain to associated with the memory region,
>> - *   otherwise, this parameter is ignored.
>> - * @phys_buf_array: If %IB_MR_REREG_TRANS is set in mr_rereg_mask, this
>> - *   field specifies a list of physical buffers to use in the new
>> - *   translation, otherwise, this parameter is ignored.
>> - * @num_phys_buf: If %IB_MR_REREG_TRANS is set in mr_rereg_mask, this
>> - *   field specifies the size of the phys_buf_array, otherwise, this
>> - *   parameter is ignored.
>> - * @mr_access_flags: If %IB_MR_REREG_ACCESS is set in mr_rereg_mask, this
>> - *   field specifies the new memory access rights, otherwise, this
>> - *   parameter is ignored.
>> - * @iova_start: The offset of the region's starting I/O virtual address.
>> - */
>> -int ib_rereg_phys_mr(struct ib_mr *mr,
>> -		     int mr_rereg_mask,
>> -		     struct ib_pd *pd,
>> -		     struct ib_phys_buf *phys_buf_array,
>> -		     int num_phys_buf,
>> -		     int mr_access_flags,
>> -		     u64 *iova_start);
>> -
>> -/**
>> * ib_query_mr - Retrieves information about a specific memory region.
>> * @mr: The memory region to retrieve information about.
>> * @mr_attr: The attributes of the specified memory region.
>> 
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> --
> Chuck Lever
> 
> 
> 

—
Doug Ledford <dledford@redhat.com>
	GPG Key ID: 0E572FDD
diff mbox

Patch

diff --git a/drivers/infiniband/core/verbs.c b/drivers/infiniband/core/verbs.c
index bac3fb4..30eb245 100644
--- a/drivers/infiniband/core/verbs.c
+++ b/drivers/infiniband/core/verbs.c
@@ -1144,73 +1144,6 @@  struct ib_mr *ib_get_dma_mr(struct ib_pd *pd, int mr_access_flags)
 }
 EXPORT_SYMBOL(ib_get_dma_mr);
 
-struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,
-			     struct ib_phys_buf *phys_buf_array,
-			     int num_phys_buf,
-			     int mr_access_flags,
-			     u64 *iova_start)
-{
-	struct ib_mr *mr;
-	int err;
-
-	err = ib_check_mr_access(mr_access_flags);
-	if (err)
-		return ERR_PTR(err);
-
-	if (!pd->device->reg_phys_mr)
-		return ERR_PTR(-ENOSYS);
-
-	mr = pd->device->reg_phys_mr(pd, phys_buf_array, num_phys_buf,
-				     mr_access_flags, iova_start);
-
-	if (!IS_ERR(mr)) {
-		mr->device  = pd->device;
-		mr->pd      = pd;
-		mr->uobject = NULL;
-		atomic_inc(&pd->usecnt);
-		atomic_set(&mr->usecnt, 0);
-	}
-
-	return mr;
-}
-EXPORT_SYMBOL(ib_reg_phys_mr);
-
-int ib_rereg_phys_mr(struct ib_mr *mr,
-		     int mr_rereg_mask,
-		     struct ib_pd *pd,
-		     struct ib_phys_buf *phys_buf_array,
-		     int num_phys_buf,
-		     int mr_access_flags,
-		     u64 *iova_start)
-{
-	struct ib_pd *old_pd;
-	int ret;
-
-	ret = ib_check_mr_access(mr_access_flags);
-	if (ret)
-		return ret;
-
-	if (!mr->device->rereg_phys_mr)
-		return -ENOSYS;
-
-	if (atomic_read(&mr->usecnt))
-		return -EBUSY;
-
-	old_pd = mr->pd;
-
-	ret = mr->device->rereg_phys_mr(mr, mr_rereg_mask, pd,
-					phys_buf_array, num_phys_buf,
-					mr_access_flags, iova_start);
-
-	if (!ret && (mr_rereg_mask & IB_MR_REREG_PD)) {
-		atomic_dec(&old_pd->usecnt);
-		atomic_inc(&pd->usecnt);
-	}
-
-	return ret;
-}
-EXPORT_SYMBOL(ib_rereg_phys_mr);
-
 int ib_query_mr(struct ib_mr *mr, struct ib_mr_attr *mr_attr)
 {
 	return mr->device->query_mr ?
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 986fddb..6d0f5d0 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2746,52 +2746,6 @@  static inline void ib_dma_free_coherent(struct ib_device *dev,
 }
 
 /**
- * ib_reg_phys_mr - Prepares a virtually addressed memory region for use
- *   by an HCA.
- * @pd: The protection domain associated assigned to the registered region.
- * @phys_buf_array: Specifies a list of physical buffers to use in the
- *   memory region.
- * @num_phys_buf: Specifies the size of the phys_buf_array.
- * @mr_access_flags: Specifies the memory access rights.
- * @iova_start: The offset of the region's starting I/O virtual address.
- */
-struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,
-			     struct ib_phys_buf *phys_buf_array,
-			     int num_phys_buf,
-			     int mr_access_flags,
-			     u64 *iova_start);
-
-/**
- * ib_rereg_phys_mr - Modifies the attributes of an existing memory region.
- *   Conceptually, this call performs the functions deregister memory region
- *   followed by register physical memory region.  Where possible,
- *   resources are reused instead of deallocated and reallocated.
- * @mr: The memory region to modify.
- * @mr_rereg_mask: A bit-mask used to indicate which of the following
- *   properties of the memory region are being modified.
- * @pd: If %IB_MR_REREG_PD is set in mr_rereg_mask, this field specifies
- *   the new protection domain to associated with the memory region,
- *   otherwise, this parameter is ignored.
- * @phys_buf_array: If %IB_MR_REREG_TRANS is set in mr_rereg_mask, this
- *   field specifies a list of physical buffers to use in the new
- *   translation, otherwise, this parameter is ignored.
- * @num_phys_buf: If %IB_MR_REREG_TRANS is set in mr_rereg_mask, this
- *   field specifies the size of the phys_buf_array, otherwise, this
- *   parameter is ignored.
- * @mr_access_flags: If %IB_MR_REREG_ACCESS is set in mr_rereg_mask, this
- *   field specifies the new memory access rights, otherwise, this
- *   parameter is ignored.
- * @iova_start: The offset of the region's starting I/O virtual address.
- */
-int ib_rereg_phys_mr(struct ib_mr *mr,
-		     int mr_rereg_mask,
-		     struct ib_pd *pd,
-		     struct ib_phys_buf *phys_buf_array,
-		     int num_phys_buf,
-		     int mr_access_flags,
-		     u64 *iova_start);
-
-/**
  * ib_query_mr - Retrieves information about a specific memory region.
  * @mr: The memory region to retrieve information about.
  * @mr_attr: The attributes of the specified memory region.