alloc_bootmem_low_pages & pci_map_single ?
I implement a PCIe device driver that needs a huge amount of contiguous (dma-capable) memory.
1. I use alloc_bootmem_low_pages to allocate that memory at boot time; that memory region is mapped to user space thanks to mmap; so far, so good, it works fine.
2. The problem arises when I start to play with DMA ... I just call pci_map_single on the buffer returned by alloc_bootmem_low_pages, and give that address to my device; my device writes at that address. When completed, I receive an IT and calls pci_unmap_single. I then access that memory in user-space.
Problem is: Most of the data is correctly written, but there remains some small areas that are *not* written, leaving bunches of memory garbage in my buffer ... It does not always happen at the same memory address ...
Any clues is warmly welcomed