vm: convert HPET mmap to vm_iomap_memory() helper

This is my example conversion of a few existing mmap users.  The HPET
case is simple, widely available, and easy to test (Clemens Ladisch sent
a trivial test-program for it).

Test-program-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Linus Torvalds 2013-04-19 09:46:39 -07:00
Родитель 0f177f8739
Коммит 2323036dfe
1 изменённых файлов: 1 добавлений и 13 удалений

Просмотреть файл

@ -373,26 +373,14 @@ static int hpet_mmap(struct file *file, struct vm_area_struct *vma)
struct hpet_dev *devp; struct hpet_dev *devp;
unsigned long addr; unsigned long addr;
if (((vma->vm_end - vma->vm_start) != PAGE_SIZE) || vma->vm_pgoff)
return -EINVAL;
devp = file->private_data; devp = file->private_data;
addr = devp->hd_hpets->hp_hpet_phys; addr = devp->hd_hpets->hp_hpet_phys;
if (addr & (PAGE_SIZE - 1)) if (addr & (PAGE_SIZE - 1))
return -ENOSYS; return -ENOSYS;
vma->vm_flags |= VM_IO;
vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot); vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
return vm_iomap_memory(vma, addr, PAGE_SIZE);
if (io_remap_pfn_range(vma, vma->vm_start, addr >> PAGE_SHIFT,
PAGE_SIZE, vma->vm_page_prot)) {
printk(KERN_ERR "%s: io_remap_pfn_range failed\n",
__func__);
return -EAGAIN;
}
return 0;
#else #else
return -ENOSYS; return -ENOSYS;
#endif #endif