Allison wrote:
Thanks for the answer!

Another related question :

I need to gather all application pages by reading the page tables. The hard part is, I need to do this from a PCI device using DMA. As I
understand it, when a DMA is being performed, the pages are pinned in
memory . Since the PCI device has grabbed the bus, the processor is
not able to access memory to perform page replacement right ?
So, this is a form of mutual exclusion.

I don't think it works this way - if the system is modifying the pages which you're trying to do DMA reads on, you'll just read whatever data happens to be in memory at the time. The CPU is not "locked out" just because that memory is being read by a DMA transfer.



However, if I have to fetch the page struct, the process address space of the process owning the page (I am ignoring shared pages to make things simpler) and the page itself, will a scatter gather DMA make sure that the processor cannot modify any of these data structures till the DMA is complete ? I am using Linux 2.6 and the i386 architecture.

As above, I don't think anything ensures this. Doing DMA reads on pages that could potentially be being modified during the transfer isn't something that is typically done..
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to