Highmem issues with MMC filesystem

saeed bishara saeed.bishara at gmail.com
Thu Mar 18 07:15:58 EDT 2010


>> The only conclusion I came to so far is that ARMv5 where highmem works
>> just fine in all cases has VIVT cache whereas ARMv6 has VIPT cache.
>> And the problem with VIPT caches occurs when direct DMA is involved,
>> otherwise there is no problem if PIO or NFS is used.  Sprinkling some
>> flush_cache_all() in a few places makes things work, but this is not a
>> satisfactory solution.
>
> This sounds like the problem we had with the DMA API.  Since that's now
> fixed, there shouldn't be a problem with the latest (-rc) kernels, or
> a kernel with my old streaming DMA patches applied.
The failure happens also on 2.6.34.rc1,  as Nico said, it looks like
that buffers that are subject to DMA remain dirty, as I understand it,
for vipt nonaliasing cpu's, the kernel doesn't clean user space cache
lines. if I force kmap_atomic/kunmap_atomic to highmem pages that are
not mapped by the kernel (kmap_high_get returns null), then the issue
disappears.
saeed



More information about the linux-arm-kernel mailing list