Eliminate the use_ptemod variable by replacing its use cases with
xen_pv_domain().

Instead of passing the xen_pv_domain() return value to
gntdev_ioctl_dmabuf_exp_from_refs(), use xen_pv_domain() in that
function.

Signed-off-by: Juergen Gross <jgr...@suse.com>
---
 drivers/xen/gntdev-dmabuf.c |  7 +++----
 drivers/xen/gntdev-dmabuf.h |  2 +-
 drivers/xen/gntdev.c        | 33 ++++++++++++++-------------------
 3 files changed, 18 insertions(+), 24 deletions(-)

diff --git a/drivers/xen/gntdev-dmabuf.c b/drivers/xen/gntdev-dmabuf.c
index 82855105ab85..550980dd3b0b 100644
--- a/drivers/xen/gntdev-dmabuf.c
+++ b/drivers/xen/gntdev-dmabuf.c
@@ -720,16 +720,15 @@ static void dmabuf_imp_release_all(struct 
gntdev_dmabuf_priv *priv)
 
 /* DMA buffer IOCTL support. */
 
-long gntdev_ioctl_dmabuf_exp_from_refs(struct gntdev_priv *priv, int 
use_ptemod,
+long gntdev_ioctl_dmabuf_exp_from_refs(struct gntdev_priv *priv,
                                       struct ioctl_gntdev_dmabuf_exp_from_refs 
__user *u)
 {
        struct ioctl_gntdev_dmabuf_exp_from_refs op;
        u32 *refs;
        long ret;
 
-       if (use_ptemod) {
-               pr_debug("Cannot provide dma-buf: use_ptemode %d\n",
-                        use_ptemod);
+       if (xen_pv_domain()) {
+               pr_debug("Cannot provide dma-buf in a PV domain\n");
                return -EINVAL;
        }
 
diff --git a/drivers/xen/gntdev-dmabuf.h b/drivers/xen/gntdev-dmabuf.h
index 3d9b9cf9d5a1..9adf96ac74d3 100644
--- a/drivers/xen/gntdev-dmabuf.h
+++ b/drivers/xen/gntdev-dmabuf.h
@@ -18,7 +18,7 @@ struct gntdev_dmabuf_priv *gntdev_dmabuf_init(struct file 
*filp);
 
 void gntdev_dmabuf_fini(struct gntdev_dmabuf_priv *priv);
 
-long gntdev_ioctl_dmabuf_exp_from_refs(struct gntdev_priv *priv, int 
use_ptemod,
+long gntdev_ioctl_dmabuf_exp_from_refs(struct gntdev_priv *priv,
                                       struct ioctl_gntdev_dmabuf_exp_from_refs 
__user *u);
 
 long gntdev_ioctl_dmabuf_exp_wait_released(struct gntdev_priv *priv,
diff --git a/drivers/xen/gntdev.c b/drivers/xen/gntdev.c
index 74491967f2ae..91ba5078c9d9 100644
--- a/drivers/xen/gntdev.c
+++ b/drivers/xen/gntdev.c
@@ -73,9 +73,6 @@ module_param(limit, uint, 0644);
 MODULE_PARM_DESC(limit,
        "Maximum number of grants that may be mapped by one mapping request");
 
-/* True in PV mode, false otherwise */
-static int use_ptemod;
-
 static void unmap_grant_pages(struct gntdev_grant_map *map,
                              int offset, int pages);
 
@@ -163,7 +160,7 @@ struct gntdev_grant_map *gntdev_alloc_map(struct 
gntdev_priv *priv, int count,
            NULL == add->pages     ||
            NULL == add->being_removed)
                goto err;
-       if (use_ptemod) {
+       if (xen_pv_domain()) {
                add->kmap_ops   = kvmalloc_array(count, 
sizeof(add->kmap_ops[0]),
                                                 GFP_KERNEL);
                add->kunmap_ops = kvmalloc_array(count, 
sizeof(add->kunmap_ops[0]),
@@ -211,7 +208,7 @@ struct gntdev_grant_map *gntdev_alloc_map(struct 
gntdev_priv *priv, int count,
                add->grants[i].ref = INVALID_GRANT_REF;
                add->map_ops[i].handle = INVALID_GRANT_HANDLE;
                add->unmap_ops[i].handle = INVALID_GRANT_HANDLE;
-               if (use_ptemod) {
+               if (xen_pv_domain()) {
                        add->kmap_ops[i].handle = INVALID_GRANT_HANDLE;
                        add->kunmap_ops[i].handle = INVALID_GRANT_HANDLE;
                }
@@ -268,7 +265,7 @@ void gntdev_put_map(struct gntdev_priv *priv, struct 
gntdev_grant_map *map)
        if (!refcount_dec_and_test(&map->users))
                return;
 
-       if (map->pages && !use_ptemod) {
+       if (map->pages && !xen_pv_domain()) {
                /*
                 * Increment the reference count.  This ensures that the
                 * subsequent call to unmap_grant_pages() will not wind up
@@ -298,7 +295,7 @@ void gntdev_put_map(struct gntdev_priv *priv, struct 
gntdev_grant_map *map)
                 */
        }
 
-       if (use_ptemod && map->notifier_init)
+       if (xen_pv_domain() && map->notifier_init)
                mmu_interval_notifier_remove(&map->notifier);
 
        if (map->notify.flags & UNMAP_NOTIFY_SEND_EVENT) {
@@ -334,7 +331,7 @@ int gntdev_map_grant_pages(struct gntdev_grant_map *map)
        size_t alloced = 0;
        int i, err = 0;
 
-       if (!use_ptemod) {
+       if (!xen_pv_domain()) {
                /* Note: it could already be mapped */
                if (map->map_ops[0].handle != INVALID_GRANT_HANDLE)
                        return 0;
@@ -389,7 +386,7 @@ int gntdev_map_grant_pages(struct gntdev_grant_map *map)
                if (map->flags & GNTMAP_device_map)
                        map->unmap_ops[i].dev_bus_addr = 
map->map_ops[i].dev_bus_addr;
 
-               if (use_ptemod) {
+               if (xen_pv_domain()) {
                        if (map->kmap_ops[i].status == GNTST_okay) {
                                alloced++;
                                map->kunmap_ops[i].handle = 
map->kmap_ops[i].handle;
@@ -421,7 +418,7 @@ static void __unmap_grant_pages_done(int result,
                        map->unmap_ops[offset+i].handle,
                        map->unmap_ops[offset+i].status);
                map->unmap_ops[offset+i].handle = INVALID_GRANT_HANDLE;
-               if (use_ptemod) {
+               if (xen_pv_domain()) {
                        if (map->kunmap_ops[offset + i].status == GNTST_okay &&
                            map->kunmap_ops[offset + i].handle != 
INVALID_GRANT_HANDLE)
                                successful_unmaps++;
@@ -464,7 +461,7 @@ static void __unmap_grant_pages(struct gntdev_grant_map 
*map, int offset,
        }
 
        map->unmap_data.unmap_ops = map->unmap_ops + offset;
-       map->unmap_data.kunmap_ops = use_ptemod ? map->kunmap_ops + offset : 
NULL;
+       map->unmap_data.kunmap_ops = xen_pv_domain() ? map->kunmap_ops + offset 
: NULL;
        map->unmap_data.pages = map->pages + offset;
        map->unmap_data.count = pages;
        map->unmap_data.done = __unmap_grant_pages_done;
@@ -1039,7 +1036,7 @@ static long gntdev_ioctl(struct file *flip,
 
 #ifdef CONFIG_XEN_GNTDEV_DMABUF
        case IOCTL_GNTDEV_DMABUF_EXP_FROM_REFS:
-               return gntdev_ioctl_dmabuf_exp_from_refs(priv, use_ptemod, ptr);
+               return gntdev_ioctl_dmabuf_exp_from_refs(priv, ptr);
 
        case IOCTL_GNTDEV_DMABUF_EXP_WAIT_RELEASED:
                return gntdev_ioctl_dmabuf_exp_wait_released(priv, ptr);
@@ -1086,7 +1083,7 @@ static int gntdev_mmap(struct file *flip, struct 
vm_area_struct *vma)
 
        vm_flags_set(vma, VM_DONTEXPAND | VM_DONTDUMP | VM_MIXEDMAP);
 
-       if (use_ptemod)
+       if (xen_pv_domain())
                vm_flags_set(vma, VM_DONTCOPY);
 
        vma->vm_private_data = map;
@@ -1102,7 +1099,7 @@ static int gntdev_mmap(struct file *flip, struct 
vm_area_struct *vma)
 
        map->pages_vm_start = vma->vm_start;
 
-       if (use_ptemod) {
+       if (xen_pv_domain()) {
                err = mmu_interval_notifier_insert_locked(
                        &map->notifier, vma->vm_mm, vma->vm_start,
                        vma->vm_end - vma->vm_start, &gntdev_mmu_ops);
@@ -1113,7 +1110,7 @@ static int gntdev_mmap(struct file *flip, struct 
vm_area_struct *vma)
        }
        mutex_unlock(&priv->lock);
 
-       if (use_ptemod) {
+       if (xen_pv_domain()) {
                /*
                 * gntdev takes the address of the PTE in find_grant_ptes() and
                 * passes it to the hypervisor in gntdev_map_grant_pages(). The
@@ -1139,7 +1136,7 @@ static int gntdev_mmap(struct file *flip, struct 
vm_area_struct *vma)
        if (err)
                goto out_put_map;
 
-       if (!use_ptemod) {
+       if (!xen_pv_domain()) {
                err = vm_map_pages_zero(vma, map->pages, map->count);
                if (err)
                        goto out_put_map;
@@ -1154,7 +1151,7 @@ static int gntdev_mmap(struct file *flip, struct 
vm_area_struct *vma)
 out_unlock_put:
        mutex_unlock(&priv->lock);
 out_put_map:
-       if (use_ptemod)
+       if (xen_pv_domain())
                unmap_grant_pages(map, 0, map->count);
        gntdev_put_map(priv, map);
        return err;
@@ -1183,8 +1180,6 @@ static int __init gntdev_init(void)
        if (!xen_domain())
                return -ENODEV;
 
-       use_ptemod = xen_pv_domain();
-
        err = misc_register(&gntdev_miscdev);
        if (err != 0) {
                pr_err("Could not register gntdev device\n");
-- 
2.43.0


Reply via email to