Re: how does one disable processor cache on memory allocated withget_free_pages?

From: Ross Tyler
Date: Thu Feb 26 2004 - 11:29:20 EST


Andrew,

Thank you for taking the time to reply. I really appreciate your help.

My understanding of ioremap_nocache is that it falls short of what I need to do.
It is appropriate for, say, mapping physical memory on a PCI device that is marked prefetchable (and otherwise subject to caching when mapped with ioremap) as non-caching.
Can you confirm my understanding?

If so, it will not work for me as I am not mapping physical memory but memory allocated by get_free_pages.
Do you concur?

AFAIK, the only way to access this memory without using processor cache is to have a device driver memory map it for a process like drivers/char/mem.c does.
When the memory is accessed through these memory mapped pages, the access will not be cached.
When the memory is accessed through the get_free_pages pages, the access will be cached.
Concur?

In order to access this process mapped memory from outside the context of the process it was mapped for, one either needs to independently remap it for the current process (what to do in interrupt code?) or set up a kiobuf to the memory.
It has been my experience, however, that the pages referenced by the kiobuf are the same pages returned by get_free_pages.
I expect these same pages have the same (caching) attributes associated with them which would not work.
?

Again, I thank you for your support.

Andrew Morton wrote:

Ross Tyler <retyler@xxxxxxxxxxxx> wrote:


If so, what is the mechanism for modifying the entries and synchronizing the configuration with the processor cache?



The only thing we have is ioremap_nocache()




-
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/