MIPS HIGHMEM fixes for cache aliasing and non-DMA I/O.
This patch fixes MIPS HIGHMEM for cache aliasing and non-DMA device
I/O. It does the following:
1. Uses only colored page addresses while allocating by kmap*(),
page address in HIGHMEM zone matches a kernel address by color.
It allows easy re-allocation before flushing cache.
It does it for kmap() and kmap_atomic().
2. Fixes instruction cache flush by right color address via
kmap_coherent() in case of I-cache aliasing.
3. Flushes D-cache before page is provided for process as I-page.
It is required for swapped-in pages in case of non-DMA I/O.
4. Some optimization is done... more comes.
Signed-off-by: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>
Signed-off-by: Steven J. Hill <Steven.Hill@imgtec.com>
12 files changed: