diff options
author | Felipe Franciosi <felipe@nutanix.com> | 2019-09-05 15:26:30 +0100 |
---|---|---|
committer | Felipe Franciosi <felipe@nutanix.com> | 2019-09-05 16:45:35 +0100 |
commit | 02b836ff3ce926c1d077b9c08ce730b38b87ab6d (patch) | |
tree | 5fff74aac57730295bb8474b29b893ac79be7224 /kmod | |
parent | 87fb9ed200f49db51f2ced578647a3529c1105dc (diff) | |
download | libvfio-user-02b836ff3ce926c1d077b9c08ce730b38b87ab6d.zip libvfio-user-02b836ff3ce926c1d077b9c08ce730b38b87ab6d.tar.gz libvfio-user-02b836ff3ce926c1d077b9c08ce730b38b87ab6d.tar.bz2 |
Clarifications around mucmd_mmap
Diffstat (limited to 'kmod')
-rw-r--r-- | kmod/muser.c | 21 | ||||
-rw-r--r-- | kmod/muser.h | 20 |
2 files changed, 17 insertions, 24 deletions
diff --git a/kmod/muser.c b/kmod/muser.c index 7463441..96a2134 100644 --- a/kmod/muser.c +++ b/kmod/muser.c @@ -599,8 +599,8 @@ static int muser_process_dma_request(struct muser_dev *mudev, .type = type, .mmap = { .request = { - .start = dma_map->iova, - .end = dma_map->iova + dma_map->length, + .addr = dma_map->iova, + .len = dma_map->length, .flags = flags} } } @@ -610,7 +610,7 @@ static int muser_process_dma_request(struct muser_dev *mudev, if (unlikely(err)) return err; - return mucmd.muser_cmd.mmap.response.addr; + return mucmd.muser_cmd.mmap.response; } static int muser_process_dma_map(struct muser_dev *mudev, int flags) @@ -710,21 +710,21 @@ static int has_anonymous_pages(struct vfio_dma_mapping *dma_map) } static int muser_iommu_dma_map(struct muser_dev *mudev, - struct vfio_iommu_type1_dma_map *map) + struct vfio_iommu_type1_dma_map *map) { struct vfio_dma_mapping *dma_map; int ret; /* TODO: support multiple DMA map operations in parallel */ mutex_lock(&mudev->dev_lock); - if (mudev->dma_map) { + if (mudev->dma_map != NULL) { mutex_unlock(&mudev->dev_lock); muser_dbg("another DMA map operation is ongoing"); return -EBUSY; } dma_map = kmalloc(sizeof(struct vfio_dma_mapping), GFP_KERNEL); - if (!dma_map) { + if (dma_map == NULL) { mutex_unlock(&mudev->dev_lock); return -ENOMEM; } @@ -818,7 +818,7 @@ out: * is called? */ static int muser_iommu_notifier(struct notifier_block *nb, unsigned long action, - void *data) + void *data) { struct muser_dev *mudev; int err; @@ -1252,10 +1252,11 @@ static int muser_mmap(struct mdev_device *const mdev, } mucmd.type = MUSER_MMAP; + mucmd.mmap_len = vma->vm_end - vma->vm_start; + mucmd.muser_cmd.type = MUSER_MMAP; + mucmd.muser_cmd.mmap.request.addr = vma->vm_pgoff; mucmd.muser_cmd.mmap.request.len = vma->vm_end - vma->vm_start; - mucmd.muser_cmd.mmap.request.pgoff = vma->vm_pgoff; - mucmd.mmap_len = vma->vm_end - vma->vm_start; /* Process mudev_cmd in server context. */ err = muser_process_cmd(mudev, &mucmd); @@ -1449,7 +1450,7 @@ static inline int maybe_install_fds(struct mudev_cmd *mucmd) static inline int mmap_done(struct mudev_cmd * const mucmd) { struct muser_cmd *cmd = &mucmd->muser_cmd; - char __user *addr = (char __user *) cmd->mmap.response.addr; + char __user *addr = (char __user *) cmd->mmap.response; int ret; if (cmd->err < 0) diff --git a/kmod/muser.h b/kmod/muser.h index 0cd76a9..34a68bc 100644 --- a/kmod/muser.h +++ b/kmod/muser.h @@ -8,8 +8,8 @@ * */ -#ifndef _LINUX_MUSER_H -#define _LINUX_MUSER_H +#ifndef _UAPI_LINUX_MUSER_H +#define _UAPI_LINUX_MUSER_H #ifndef __KERNEL__ #include <sys/types.h> @@ -47,19 +47,11 @@ struct muser_cmd_ioctl { union muser_cmd_mmap { struct { - union { - struct { - unsigned long start; - unsigned long end; - }; - unsigned long len; - }; + unsigned long addr; /* iova for DMA_MAP, offset for MMAP */ + unsigned long len; unsigned long flags; - unsigned long pgoff; } request; - struct { - unsigned long addr; - } response; + unsigned long response; }; struct muser_cmd { @@ -76,4 +68,4 @@ struct muser_cmd { #define MUSER_DEV_CMD_WAIT _IOW('M', 1, struct muser_cmd) #define MUSER_DEV_CMD_DONE _IOW('M', 2, struct muser_cmd) -#endif /* _LINUX_MUSER_H */ +#endif /* _UAPI_LINUX_MUSER_H */ |