Commit a1d416bf9faf ("sparc/mm: disable preemption in lazy mmu mode") is not necessary anymore, since the lazy MMU mode is entered with a spinlock held and sparc does not support Real-Time. Thus, upon entering the lazy mode the preemption is already disabled.
Signed-off-by: Alexander Gordeev <agord...@linux.ibm.com> --- arch/sparc/include/asm/tlbflush_64.h | 2 +- arch/sparc/mm/tlb.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/arch/sparc/include/asm/tlbflush_64.h b/arch/sparc/include/asm/tlbflush_64.h index 8b8cdaa69272..a6d8068fb211 100644 --- a/arch/sparc/include/asm/tlbflush_64.h +++ b/arch/sparc/include/asm/tlbflush_64.h @@ -44,7 +44,7 @@ void flush_tlb_kernel_range(unsigned long start, unsigned long end); void flush_tlb_pending(void); void arch_enter_lazy_mmu_mode(void); void arch_leave_lazy_mmu_mode(void); -#define arch_flush_lazy_mmu_mode() do {} while (0) +void arch_flush_lazy_mmu_mode(void); /* Local cpu only. */ void __flush_tlb_all(void); diff --git a/arch/sparc/mm/tlb.c b/arch/sparc/mm/tlb.c index a35ddcca5e76..e46dfd5f2583 100644 --- a/arch/sparc/mm/tlb.c +++ b/arch/sparc/mm/tlb.c @@ -52,10 +52,9 @@ void flush_tlb_pending(void) void arch_enter_lazy_mmu_mode(void) { - struct tlb_batch *tb; + struct tlb_batch *tb = this_cpu_ptr(&tlb_batch); - preempt_disable(); - tb = this_cpu_ptr(&tlb_batch); + VM_WARN_ON_ONCE(preemptible()); tb->active = 1; } @@ -63,10 +62,15 @@ void arch_leave_lazy_mmu_mode(void) { struct tlb_batch *tb = this_cpu_ptr(&tlb_batch); + VM_WARN_ON_ONCE(preemptible()); if (tb->tlb_nr) flush_tlb_pending(); tb->active = 0; - preempt_enable(); +} + +void arch_flush_lazy_mmu_mode(void) +{ + VM_WARN_ON_ONCE(preemptible()); } static void tlb_batch_add_one(struct mm_struct *mm, unsigned long vaddr, -- 2.48.1