Paul Mundt acca4f4d9b sh: Handle fixmap TLB eviction more coherently.
There was a race in the kmap_coherent() implementation. While we
guarded against preemption, there was nothing preventing eviction of
the pre-faulted fixmap entry from the UTLB. Under certain workloads
this would result in the fixmap entries used for cache colouring being
evicted from the UTLB in the midst of a copy_page().

In addition to pre-faulting, we also make sure to preserve the PTEs
in the kernel page table and introduce a cached PTE for kmap_coherent()
usage. This follows a similar change on MIPS ("[MIPS] Fix aliasing bug
in copy_to_user_page / copy_from_user_page").

Reported-by: Hideo Saito <saito@densan.co.jp>
Reported-by: CHIKAMA Masaki <masaki.chikama@gmail.com>
Tested-by: Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
2008-11-10 20:00:45 +09:00
..
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-10-31 16:01:22 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-09-08 10:35:04 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-10-20 11:37:58 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-09-21 17:17:53 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-10-04 05:25:52 +09:00
2008-07-29 08:09:44 +09:00
2008-10-04 05:25:52 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-09-08 10:35:04 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-10-04 05:25:52 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-09-12 20:41:05 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-09-08 10:35:04 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-08-02 04:39:32 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-09-17 23:24:59 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-08-07 02:20:57 -04:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-09-08 10:35:04 +09:00
2008-09-08 10:35:04 +09:00
2008-09-08 10:35:04 +09:00
2008-07-29 08:09:44 +09:00
2008-09-08 10:35:04 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-08-04 12:51:06 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00
2008-07-29 08:09:44 +09:00