Move from the deprecated mmap hook to the new mmap_prepare hook, using the I/O PFN remap mmap action to map the BAR.
Signed-off-by: Lorenzo Stoakes (ARM) <[email protected]> --- drivers/misc/bcm-vk/bcm_vk_dev.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/misc/bcm-vk/bcm_vk_dev.c b/drivers/misc/bcm-vk/bcm_vk_dev.c index 88ee3a417616..25a2b46ebad9 100644 --- a/drivers/misc/bcm-vk/bcm_vk_dev.c +++ b/drivers/misc/bcm-vk/bcm_vk_dev.c @@ -1201,9 +1201,9 @@ static long bcm_vk_reset(struct bcm_vk *vk, struct vk_reset __user *arg) return ret; } -static int bcm_vk_mmap(struct file *file, struct vm_area_struct *vma) +static int bcm_vk_mmap_prepare(struct vm_area_desc *desc) { - struct bcm_vk_ctx *ctx = file->private_data; + struct bcm_vk_ctx *ctx = desc->file->private_data; struct bcm_vk *vk = container_of(ctx->miscdev, struct bcm_vk, miscdev); unsigned long pg_size; @@ -1212,16 +1212,16 @@ static int bcm_vk_mmap(struct file *file, struct vm_area_struct *vma) pg_size = ((pci_resource_len(vk->pdev, VK_MMAPABLE_BAR) - 1) >> PAGE_SHIFT) + 1; - if (vma->vm_pgoff + vma_pages(vma) > pg_size) + if (desc->pgoff + vma_desc_pages(desc) > pg_size) return -EINVAL; - vma->vm_pgoff += (pci_resource_start(vk->pdev, VK_MMAPABLE_BAR) - >> PAGE_SHIFT); - vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); + desc->pgoff += (pci_resource_start(vk->pdev, VK_MMAPABLE_BAR) + >> PAGE_SHIFT); + desc->page_prot = pgprot_noncached(desc->page_prot); + + mmap_action_ioremap_full(desc, desc->pgoff); - return io_remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, - vma->vm_end - vma->vm_start, - vma->vm_page_prot); + return 0; } static long bcm_vk_ioctl(struct file *file, unsigned int cmd, unsigned long arg) @@ -1262,7 +1262,7 @@ static const struct file_operations bcm_vk_fops = { .write = bcm_vk_write, .poll = bcm_vk_poll, .release = bcm_vk_release, - .mmap = bcm_vk_mmap, + .mmap_prepare = bcm_vk_mmap_prepare, .unlocked_ioctl = bcm_vk_ioctl, }; -- 2.56.0
