lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <13380086.post@talk.nabble.com> Date: Sat, 27 Oct 2007 18:39:00 -0700 (PDT) From: joncglenn <joncglenn@...mail.com> To: linux-kernel@...r.kernel.org Subject: Mapping PCI memory to user-space I am writing a driver to map a PCI board memory space (pcibar2) into a user-space vma via 'mmap'. What is the relationship between the address returned from ioremap and the type of address needed in the 'io_remap_page_range' or 'remap_pfn_range' functions? How about the following? (I am developing under RHEL4 and a 2.6.9 kernel) In the 'init' part of the driver: dev.pcibar2 = ioremap_nocache(resource,size); dev.region_start = dev.pcibar2 + offset; // RAM is at some offset from base dev.region_size = <some size> In the mydriver_mmap function: static ssize_t mydriver_mmap (struct file *filp, struct vm_area_struct *vma) { // off = convert vm_pgoff back to user-space mmap 'off' value // phyaddr = physical address of PCI memory area // vsize = total size of area user wants to map // psize = total avail size in device struct mydriver_dev *dev = filp->private_data; unsigned long off = vma->vm_pgoff << PAGE_SHIFT; unsigned long phy = __pa(dev->region_start + off); unsigned long vsize = vma->vm_end - vma->vm_start; unsigned long psize = dev->region_size - off; if (vsize > psize) return -EINVAL; /* spans too high */ if (io_remap_page_range(vma, phyaddr, vma->vm_start, vsize, vma->vm_page_prot)) return -EAGAIN; vma->vm_ops = &mydriver_vm_ops; vma->vm_flags |= VM_IO | VM_RESERVED; mydriver_vma_open(vma); return 0; } -- View this message in context: http://www.nabble.com/Mapping-PCI-memory-to-user-space-tf4682416.html#a13380086 Sent from the linux-kernel mailing list archive at Nabble.com. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists