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:
Родитель
0f177f8739
Коммит
2323036dfe
|
@ -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
|
||||||
|
|
Загрузка…
Ссылка в новой задаче