OSDN Git Service

parisc: Avoid flushing cache on cache-less machines
authorHelge Deller <deller@gmx.de>
Fri, 18 Mar 2022 21:59:59 +0000 (22:59 +0100)
committerHelge Deller <deller@gmx.de>
Fri, 18 Mar 2022 21:59:59 +0000 (22:59 +0100)
Avoid flushing caches in __flush_cache_page() and __purge_cache_page()
if the machine hasn't data or instruction caches - as e.g. in qemu.

Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/cache.c

index 231cebb..d41fee3 100644 (file)
@@ -315,6 +315,8 @@ static inline void
 __flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr,
                   unsigned long physaddr)
 {
+       if (!static_branch_likely(&parisc_has_cache))
+               return;
        preempt_disable();
        flush_dcache_page_asm(physaddr, vmaddr);
        if (vma->vm_flags & VM_EXEC)
@@ -326,6 +328,8 @@ static inline void
 __purge_cache_page(struct vm_area_struct *vma, unsigned long vmaddr,
                   unsigned long physaddr)
 {
+       if (!static_branch_likely(&parisc_has_cache))
+               return;
        preempt_disable();
        purge_dcache_page_asm(physaddr, vmaddr);
        if (vma->vm_flags & VM_EXEC)