[x/azure][PATCH 06/17] uio_hv_generic: use standard mmap for resources
Marcelo Henrique Cerri
marcelo.cerri at canonical.com
Fri Jun 7 19:38:40 UTC 2019
From: Stephen Hemminger <stephen at networkplumber.org>
BugLink: http://bugs.launchpad.net/bugs/1812123
The generic UIO mmap should work for us.
Signed-off-by: Stephen Hemminger <sthemmin at microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>
(cherry picked from commit 9c40546c012c8d98e88be38c650e66203cb2f1a8)
Signed-off-by: Marcelo Henrique Cerri <marcelo.cerri at canonical.com>
---
drivers/uio/uio_hv_generic.c | 33 +++++++--------------------------
1 file changed, 7 insertions(+), 26 deletions(-)
diff --git a/drivers/uio/uio_hv_generic.c b/drivers/uio/uio_hv_generic.c
index 0e4e54e95b23..75094605dd02 100644
--- a/drivers/uio/uio_hv_generic.c
+++ b/drivers/uio/uio_hv_generic.c
@@ -66,24 +66,6 @@ struct hv_uio_private_data {
char send_name[32];
};
-static int
-hv_uio_mmap(struct uio_info *info, struct vm_area_struct *vma)
-{
- int mi;
-
- if (vma->vm_pgoff >= MAX_UIO_MAPS)
- return -EINVAL;
-
- if (info->mem[vma->vm_pgoff].size == 0)
- return -EINVAL;
-
- mi = (int)vma->vm_pgoff;
-
- return remap_pfn_range(vma, vma->vm_start,
- info->mem[mi].addr >> PAGE_SHIFT,
- vma->vm_end - vma->vm_start, vma->vm_page_prot);
-}
-
/*
* This is the irqcontrol callback to be registered to uio_info.
* It can be used to disable/enable interrupt from user space processes.
@@ -237,26 +219,25 @@ hv_uio_probe(struct hv_device *dev,
pdata->info.name = "uio_hv_generic";
pdata->info.version = DRIVER_VERSION;
pdata->info.irqcontrol = hv_uio_irqcontrol;
- pdata->info.mmap = hv_uio_mmap;
pdata->info.irq = UIO_IRQ_CUSTOM;
/* mem resources */
pdata->info.mem[TXRX_RING_MAP].name = "txrx_rings";
pdata->info.mem[TXRX_RING_MAP].addr
- = virt_to_phys(dev->channel->ringbuffer_pages);
+ = (phys_addr_t)dev->channel->ringbuffer_pages;
pdata->info.mem[TXRX_RING_MAP].size
- = dev->channel->ringbuffer_pagecount * PAGE_SIZE;
+ = dev->channel->ringbuffer_pagecount << PAGE_SHIFT;
pdata->info.mem[TXRX_RING_MAP].memtype = UIO_MEM_LOGICAL;
pdata->info.mem[INT_PAGE_MAP].name = "int_page";
- pdata->info.mem[INT_PAGE_MAP].addr =
- virt_to_phys(vmbus_connection.int_page);
+ pdata->info.mem[INT_PAGE_MAP].addr
+ = (phys_addr_t)vmbus_connection.int_page;
pdata->info.mem[INT_PAGE_MAP].size = PAGE_SIZE;
pdata->info.mem[INT_PAGE_MAP].memtype = UIO_MEM_LOGICAL;
- pdata->info.mem[MON_PAGE_MAP].name = "monitor_pages";
- pdata->info.mem[MON_PAGE_MAP].addr =
- virt_to_phys(vmbus_connection.monitor_pages[1]);
+ pdata->info.mem[MON_PAGE_MAP].name = "monitor_page";
+ pdata->info.mem[MON_PAGE_MAP].addr
+ = (phys_addr_t)vmbus_connection.monitor_pages[1];
pdata->info.mem[MON_PAGE_MAP].size = PAGE_SIZE;
pdata->info.mem[MON_PAGE_MAP].memtype = UIO_MEM_LOGICAL;
--
2.20.1
More information about the kernel-team
mailing list