[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] DMA and cache
Hi Jim,
Jim Van Vorst wrote:
I found an old thread about the
#if CONFIG_XILINX_UNCACHED_SHADOW
ret = (void *)((unsigned) ret | UNCACHED_SHADOW_MASK);
#endif
trick so scatter-gather DMA can play nicely with caching.
What is the current status of this? I saw at least one FIX ME note
in the related code.
2.4 or 2.6 kernel? We've got more work to do in the 2.6 kernel to get
this stuff going properly, but it should be OK in 2.4
From what I understand, if my ram is 64 megs from 0x3000.0000 to
0x33ff.ffff,
when the network driver needs to allocate dma buffers it will get a range
from 0x3400.0000 to 0x37ff.ffff which is our of my cached range (assuming
I'm caching all of ram). Is this correct? Is there some value I have to
change in the .mhs file to fake out 128 megs?
Yep, that's about the thrust of it. You just double the bus address
window of the memory - so set C_BANK0_HIGHADDR to 0x37ffffff, but leave
the cached range as it stands. Memory accesses abouve the cached region
will resolve outside the cache, and the memory controller will just drop
the high bit of the address. Voila - uncached access to the memory.
Regards,
John
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/