diff mbox series

[RFC,v4,03/11] vhost-iotlb: Add an opaque pointer for vhost IOTLB

Message ID 20210223115048.435-4-xieyongji@bytedance.com
State Superseded
Headers show
Series Introduce VDUSE - vDPA Device in Userspace | expand

Commit Message

Yongji Xie Feb. 23, 2021, 11:50 a.m. UTC
Add an opaque pointer for vhost IOTLB. And introduce
vhost_iotlb_add_range_ctx() to accept it.

Suggested-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
---
 drivers/vhost/iotlb.c       | 20 ++++++++++++++++----
 include/linux/vhost_iotlb.h |  3 +++
 2 files changed, 19 insertions(+), 4 deletions(-)

Comments

Jason Wang March 2, 2021, 6:49 a.m. UTC | #1
On 2021/2/23 7:50 下午, Xie Yongji wrote:
> Add an opaque pointer for vhost IOTLB. And introduce

> vhost_iotlb_add_range_ctx() to accept it.

>

> Suggested-by: Jason Wang <jasowang@redhat.com>

> Signed-off-by: Xie Yongji <xieyongji@bytedance.com>



Acked-by: Jason Wang <jasowang@redhat.com>



> ---

>   drivers/vhost/iotlb.c       | 20 ++++++++++++++++----

>   include/linux/vhost_iotlb.h |  3 +++

>   2 files changed, 19 insertions(+), 4 deletions(-)

>

> diff --git a/drivers/vhost/iotlb.c b/drivers/vhost/iotlb.c

> index 0fd3f87e913c..5c99e1112cbb 100644

> --- a/drivers/vhost/iotlb.c

> +++ b/drivers/vhost/iotlb.c

> @@ -36,19 +36,21 @@ void vhost_iotlb_map_free(struct vhost_iotlb *iotlb,

>   EXPORT_SYMBOL_GPL(vhost_iotlb_map_free);

>   

>   /**

> - * vhost_iotlb_add_range - add a new range to vhost IOTLB

> + * vhost_iotlb_add_range_ctx - add a new range to vhost IOTLB

>    * @iotlb: the IOTLB

>    * @start: start of the IOVA range

>    * @last: last of IOVA range

>    * @addr: the address that is mapped to @start

>    * @perm: access permission of this range

> + * @opaque: the opaque pointer for the new mapping

>    *

>    * Returns an error last is smaller than start or memory allocation

>    * fails

>    */

> -int vhost_iotlb_add_range(struct vhost_iotlb *iotlb,

> -			  u64 start, u64 last,

> -			  u64 addr, unsigned int perm)

> +int vhost_iotlb_add_range_ctx(struct vhost_iotlb *iotlb,

> +			      u64 start, u64 last,

> +			      u64 addr, unsigned int perm,

> +			      void *opaque)

>   {

>   	struct vhost_iotlb_map *map;

>   

> @@ -71,6 +73,7 @@ int vhost_iotlb_add_range(struct vhost_iotlb *iotlb,

>   	map->last = last;

>   	map->addr = addr;

>   	map->perm = perm;

> +	map->opaque = opaque;

>   

>   	iotlb->nmaps++;

>   	vhost_iotlb_itree_insert(map, &iotlb->root);

> @@ -80,6 +83,15 @@ int vhost_iotlb_add_range(struct vhost_iotlb *iotlb,

>   

>   	return 0;

>   }

> +EXPORT_SYMBOL_GPL(vhost_iotlb_add_range_ctx);

> +

> +int vhost_iotlb_add_range(struct vhost_iotlb *iotlb,

> +			  u64 start, u64 last,

> +			  u64 addr, unsigned int perm)

> +{

> +	return vhost_iotlb_add_range_ctx(iotlb, start, last,

> +					 addr, perm, NULL);

> +}

>   EXPORT_SYMBOL_GPL(vhost_iotlb_add_range);

>   

>   /**

> diff --git a/include/linux/vhost_iotlb.h b/include/linux/vhost_iotlb.h

> index 6b09b786a762..2d0e2f52f938 100644

> --- a/include/linux/vhost_iotlb.h

> +++ b/include/linux/vhost_iotlb.h

> @@ -17,6 +17,7 @@ struct vhost_iotlb_map {

>   	u32 perm;

>   	u32 flags_padding;

>   	u64 __subtree_last;

> +	void *opaque;

>   };

>   

>   #define VHOST_IOTLB_FLAG_RETIRE 0x1

> @@ -29,6 +30,8 @@ struct vhost_iotlb {

>   	unsigned int flags;

>   };

>   

> +int vhost_iotlb_add_range_ctx(struct vhost_iotlb *iotlb, u64 start, u64 last,

> +			      u64 addr, unsigned int perm, void *opaque);

>   int vhost_iotlb_add_range(struct vhost_iotlb *iotlb, u64 start, u64 last,

>   			  u64 addr, unsigned int perm);

>   void vhost_iotlb_del_range(struct vhost_iotlb *iotlb, u64 start, u64 last);
diff mbox series

Patch

diff --git a/drivers/vhost/iotlb.c b/drivers/vhost/iotlb.c
index 0fd3f87e913c..5c99e1112cbb 100644
--- a/drivers/vhost/iotlb.c
+++ b/drivers/vhost/iotlb.c
@@ -36,19 +36,21 @@  void vhost_iotlb_map_free(struct vhost_iotlb *iotlb,
 EXPORT_SYMBOL_GPL(vhost_iotlb_map_free);
 
 /**
- * vhost_iotlb_add_range - add a new range to vhost IOTLB
+ * vhost_iotlb_add_range_ctx - add a new range to vhost IOTLB
  * @iotlb: the IOTLB
  * @start: start of the IOVA range
  * @last: last of IOVA range
  * @addr: the address that is mapped to @start
  * @perm: access permission of this range
+ * @opaque: the opaque pointer for the new mapping
  *
  * Returns an error last is smaller than start or memory allocation
  * fails
  */
-int vhost_iotlb_add_range(struct vhost_iotlb *iotlb,
-			  u64 start, u64 last,
-			  u64 addr, unsigned int perm)
+int vhost_iotlb_add_range_ctx(struct vhost_iotlb *iotlb,
+			      u64 start, u64 last,
+			      u64 addr, unsigned int perm,
+			      void *opaque)
 {
 	struct vhost_iotlb_map *map;
 
@@ -71,6 +73,7 @@  int vhost_iotlb_add_range(struct vhost_iotlb *iotlb,
 	map->last = last;
 	map->addr = addr;
 	map->perm = perm;
+	map->opaque = opaque;
 
 	iotlb->nmaps++;
 	vhost_iotlb_itree_insert(map, &iotlb->root);
@@ -80,6 +83,15 @@  int vhost_iotlb_add_range(struct vhost_iotlb *iotlb,
 
 	return 0;
 }
+EXPORT_SYMBOL_GPL(vhost_iotlb_add_range_ctx);
+
+int vhost_iotlb_add_range(struct vhost_iotlb *iotlb,
+			  u64 start, u64 last,
+			  u64 addr, unsigned int perm)
+{
+	return vhost_iotlb_add_range_ctx(iotlb, start, last,
+					 addr, perm, NULL);
+}
 EXPORT_SYMBOL_GPL(vhost_iotlb_add_range);
 
 /**
diff --git a/include/linux/vhost_iotlb.h b/include/linux/vhost_iotlb.h
index 6b09b786a762..2d0e2f52f938 100644
--- a/include/linux/vhost_iotlb.h
+++ b/include/linux/vhost_iotlb.h
@@ -17,6 +17,7 @@  struct vhost_iotlb_map {
 	u32 perm;
 	u32 flags_padding;
 	u64 __subtree_last;
+	void *opaque;
 };
 
 #define VHOST_IOTLB_FLAG_RETIRE 0x1
@@ -29,6 +30,8 @@  struct vhost_iotlb {
 	unsigned int flags;
 };
 
+int vhost_iotlb_add_range_ctx(struct vhost_iotlb *iotlb, u64 start, u64 last,
+			      u64 addr, unsigned int perm, void *opaque);
 int vhost_iotlb_add_range(struct vhost_iotlb *iotlb, u64 start, u64 last,
 			  u64 addr, unsigned int perm);
 void vhost_iotlb_del_range(struct vhost_iotlb *iotlb, u64 start, u64 last);