diff options
-rw-r--r-- | arch/powerpc/mm/hash_native_64.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/arch/powerpc/mm/hash_native_64.c b/arch/powerpc/mm/hash_native_64.c index cc332608e656..65bb8f33b399 100644 --- a/arch/powerpc/mm/hash_native_64.c +++ b/arch/powerpc/mm/hash_native_64.c | |||
@@ -638,6 +638,10 @@ static void native_flush_hash_range(unsigned long number, int local) | |||
638 | unsigned long psize = batch->psize; | 638 | unsigned long psize = batch->psize; |
639 | int ssize = batch->ssize; | 639 | int ssize = batch->ssize; |
640 | int i; | 640 | int i; |
641 | unsigned int use_local; | ||
642 | |||
643 | use_local = local && mmu_has_feature(MMU_FTR_TLBIEL) && | ||
644 | mmu_psize_defs[psize].tlbiel && !cxl_ctx_in_use(); | ||
641 | 645 | ||
642 | local_irq_save(flags); | 646 | local_irq_save(flags); |
643 | 647 | ||
@@ -667,8 +671,7 @@ static void native_flush_hash_range(unsigned long number, int local) | |||
667 | } pte_iterate_hashed_end(); | 671 | } pte_iterate_hashed_end(); |
668 | } | 672 | } |
669 | 673 | ||
670 | if (mmu_has_feature(MMU_FTR_TLBIEL) && | 674 | if (use_local) { |
671 | mmu_psize_defs[psize].tlbiel && local) { | ||
672 | asm volatile("ptesync":::"memory"); | 675 | asm volatile("ptesync":::"memory"); |
673 | for (i = 0; i < number; i++) { | 676 | for (i = 0; i < number; i++) { |
674 | vpn = batch->vpn[i]; | 677 | vpn = batch->vpn[i]; |