Commit f74b2a6c authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

powerpc/64s: Use dec_mm_active_cpus helper



Avoid open-coded atomic_dec on mm->context.active_cpus and use the
function made for it. Add CONFIG_DEBUG_VM underflow checking on the
counter.

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://msgid.link/20230524060821.148015-3-npiggin@gmail.com
parent c3c2e937
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -261,7 +261,7 @@ static inline void radix_init_pseries(void) { }
#define arch_clear_mm_cpumask_cpu(cpu, mm)				\
	do {								\
		if (cpumask_test_cpu(cpu, mm_cpumask(mm))) {		\
			atomic_dec(&(mm)->context.active_cpus);		\
			dec_mm_active_cpus(mm);				\
			cpumask_clear_cpu(cpu, mm_cpumask(mm));		\
		}							\
	} while (0)
+1 −0
Original line number Diff line number Diff line
@@ -127,6 +127,7 @@ static inline void inc_mm_active_cpus(struct mm_struct *mm)

static inline void dec_mm_active_cpus(struct mm_struct *mm)
{
	VM_WARN_ON_ONCE(atomic_read(&mm->context.active_cpus) <= 0);
	atomic_dec(&mm->context.active_cpus);
}

+1 −1
Original line number Diff line number Diff line
@@ -820,7 +820,7 @@ void exit_lazy_flush_tlb(struct mm_struct *mm, bool always_flush)
	 * that's what the caller expects.
	 */
	if (cpumask_test_cpu(cpu, mm_cpumask(mm))) {
		atomic_dec(&mm->context.active_cpus);
		dec_mm_active_cpus(mm);
		cpumask_clear_cpu(cpu, mm_cpumask(mm));
		always_flush = true;
	}