Skip to content

Commit

Permalink
MIPS: smp: Remove tick_broadcast_count
Browse files Browse the repository at this point in the history
Now smp_call_function_single_async() provides the protection that
we'll return with -EBUSY if the csd object is still pending, then we
don't need the tick_broadcast_count counter any more.

Signed-off-by: Peter Xu <peterx@redhat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lkml.kernel.org/r/20191216213125.9536-3-peterx@redhat.com
  • Loading branch information
Peter Xu authored and Ingo Molnar committed Mar 6, 2020
1 parent 5a18cec commit e188f0a
Showing 1 changed file with 1 addition and 8 deletions.
9 changes: 1 addition & 8 deletions arch/mips/kernel/smp.c
Original file line number Diff line number Diff line change
Expand Up @@ -696,29 +696,22 @@ EXPORT_SYMBOL(flush_tlb_one);

#ifdef CONFIG_GENERIC_CLOCKEVENTS_BROADCAST

static DEFINE_PER_CPU(atomic_t, tick_broadcast_count);
static DEFINE_PER_CPU(call_single_data_t, tick_broadcast_csd);

void tick_broadcast(const struct cpumask *mask)
{
atomic_t *count;
call_single_data_t *csd;
int cpu;

for_each_cpu(cpu, mask) {
count = &per_cpu(tick_broadcast_count, cpu);
csd = &per_cpu(tick_broadcast_csd, cpu);

if (atomic_inc_return(count) == 1)
smp_call_function_single_async(cpu, csd);
smp_call_function_single_async(cpu, csd);
}
}

static void tick_broadcast_callee(void *info)
{
int cpu = smp_processor_id();
tick_receive_broadcast();
atomic_set(&per_cpu(tick_broadcast_count, cpu), 0);
}

static int __init tick_broadcast_init(void)
Expand Down

0 comments on commit e188f0a

Please sign in to comment.