On Wed, Oct 19, 2011 at 4:25 PM, Nikita V. Youshchenko <yoush@xxxxxxxxx> wrote: >> > Hello. >> > >> > We are writing a driver for a custom PCI device that receives large >> > amount of data. >> > >> > Device is capable of DMAing received data in 64k chunks. >> > >> > We have been going to: >> > - use physically-continuous 64k-sized memory areas using alloc_pages() >> > with order=4, >> > - allocate large number of such areas on driver init, >> > - implement mmap() to map those all to userspace for zero-copy >> > processing, - use streaming DMA to actually receive data >> >> May i know why u want to mmap to userspace instead of using a >> device? performance is affected by a large amount if u use mmap > > mmap() is done once, at initialization time, for entire data buffer. > Later data is processed in zero-copy pattern. > I believe it is fastest possible solution. > >> > Is there a way to use streaming DMA with large memory areas located in >> > highmem? >> >> I dont think DMA is available for highmem? Not sure though . never saw >> a usecase for it. > > DMA is definitly available for highmem on per-page basis. > I'm interested in DMA of larger blocks. > > Nikita > CC ing Linux Pci -Ravi -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html