Matt Porter writes: > On Fri, Dec 06, 2002 at 11:56:22AM -0500, Dan Malek wrote: > > Matt Porter wrote: > > > > > .... If you > > > want the kernel virtual address then you can apply __va to that. > > > > Errr....no, you can't. That would give you the cached mapping. > > You need to hang on to both the dma_handle (the phys address token) > > and the virtual address returned by the function. That's why both > > are returned. > > That's what I said...but you clipped it out. Once again, > consistent_alloc provides the caller everything they need. > An uncached mapping, a phys address, and from that you can use > __va() to get the cached mapping.
Matt, you know this I'm sure, but other people reading this might not: You should NOT use the cached mapping unless you really know *exactly* what you are doing. The PowerPC architecture specifies that accessing a given physical address through an uncached mapping, when there exists a copy of that physical location in cache, is a programming error. Different implementations will do different things in this case. > Seemed clear enough to me the first time. My definition of a > "kernel virtual address" is the lowmem cached mapping. If > I meant the uncached mapping I would have said it was a "kernel > vmalloc address" or something. :) A "kernel virtual address" is, to me (and to Dan as well, I expect), any virtual address in the kernel portion of the address space (i.e. above TASK_SIZE). (Of course, you are free to adopt Humpty Dumpty's attitude in Through the Looking Glass: "'When I use a word, Humpty Dumpty said in rather a scornful tone, 'it means just what I choose it to mean - neither more nor less.'" ;-) Regards, Paul. ** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/