aboutsummaryrefslogtreecommitdiffstats
path: root/arch/parisc/kernel
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@bell.net>2013-02-02 18:41:24 -0500
committerHelge Deller <deller@gmx.de>2013-02-20 16:50:38 -0500
commit027f27c4eca00b4411fb1fe61c33060569ff73f6 (patch)
treee77e9bfb6a9a6ce40feb22937390c40987eea0bd /arch/parisc/kernel
parentb54cb2332e387f29c65f19f3620e5c812c89a328 (diff)
parisc: disable preemption while flushing D- or I-caches through TMPALIAS region
It is necessary to disable preemption during cache flushes done through the TMPALIAS region to ensure that the TLB setup is not clobbered by another flush. Signed-off-by: John David Anglin <dave.anglin@bell.net> Signed-off-by: Helge Deller <deller@gmx.de>
Diffstat (limited to 'arch/parisc/kernel')
-rw-r--r--arch/parisc/kernel/cache.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c
index 1c61b8245650..4b12890642eb 100644
--- a/arch/parisc/kernel/cache.c
+++ b/arch/parisc/kernel/cache.c
@@ -267,9 +267,11 @@ static inline void
267__flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, 267__flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr,
268 unsigned long physaddr) 268 unsigned long physaddr)
269{ 269{
270 preempt_disable();
270 flush_dcache_page_asm(physaddr, vmaddr); 271 flush_dcache_page_asm(physaddr, vmaddr);
271 if (vma->vm_flags & VM_EXEC) 272 if (vma->vm_flags & VM_EXEC)
272 flush_icache_page_asm(physaddr, vmaddr); 273 flush_icache_page_asm(physaddr, vmaddr);
274 preempt_enable();
273} 275}
274 276
275void flush_dcache_page(struct page *page) 277void flush_dcache_page(struct page *page)