提交 9c40546c 编写于 作者: S Stephen Hemminger 提交者: Greg Kroah-Hartman

uio_hv_generic: use standard mmap for resources

The generic UIO mmap should work for us.
Signed-off-by: NStephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
上级 42896968
...@@ -56,24 +56,6 @@ struct hv_uio_private_data { ...@@ -56,24 +56,6 @@ struct hv_uio_private_data {
struct hv_device *device; struct hv_device *device;
}; };
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. * This is the irqcontrol callback to be registered to uio_info.
* It can be used to disable/enable interrupt from user space processes. * It can be used to disable/enable interrupt from user space processes.
...@@ -133,26 +115,25 @@ hv_uio_probe(struct hv_device *dev, ...@@ -133,26 +115,25 @@ hv_uio_probe(struct hv_device *dev,
pdata->info.name = "uio_hv_generic"; pdata->info.name = "uio_hv_generic";
pdata->info.version = DRIVER_VERSION; pdata->info.version = DRIVER_VERSION;
pdata->info.irqcontrol = hv_uio_irqcontrol; pdata->info.irqcontrol = hv_uio_irqcontrol;
pdata->info.mmap = hv_uio_mmap;
pdata->info.irq = UIO_IRQ_CUSTOM; pdata->info.irq = UIO_IRQ_CUSTOM;
/* mem resources */ /* mem resources */
pdata->info.mem[TXRX_RING_MAP].name = "txrx_rings"; pdata->info.mem[TXRX_RING_MAP].name = "txrx_rings";
pdata->info.mem[TXRX_RING_MAP].addr 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 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[TXRX_RING_MAP].memtype = UIO_MEM_LOGICAL;
pdata->info.mem[INT_PAGE_MAP].name = "int_page"; pdata->info.mem[INT_PAGE_MAP].name = "int_page";
pdata->info.mem[INT_PAGE_MAP].addr = pdata->info.mem[INT_PAGE_MAP].addr
virt_to_phys(vmbus_connection.int_page); = (phys_addr_t)vmbus_connection.int_page;
pdata->info.mem[INT_PAGE_MAP].size = PAGE_SIZE; pdata->info.mem[INT_PAGE_MAP].size = PAGE_SIZE;
pdata->info.mem[INT_PAGE_MAP].memtype = UIO_MEM_LOGICAL; 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].name = "monitor_page";
pdata->info.mem[MON_PAGE_MAP].addr = pdata->info.mem[MON_PAGE_MAP].addr
virt_to_phys(vmbus_connection.monitor_pages[1]); = (phys_addr_t)vmbus_connection.monitor_pages[1];
pdata->info.mem[MON_PAGE_MAP].size = PAGE_SIZE; pdata->info.mem[MON_PAGE_MAP].size = PAGE_SIZE;
pdata->info.mem[MON_PAGE_MAP].memtype = UIO_MEM_LOGICAL; pdata->info.mem[MON_PAGE_MAP].memtype = UIO_MEM_LOGICAL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册