Re: Linux 2.6 : physical memory address and pid

From: Robert Hancock
Date: Sun Mar 13 2005 - 02:46:46 EST


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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/