sparc64: Add self-IPI support for smp_send_reschedule()
CONFIG_NO_HZ_FULL requires possibility of smp_send_reschedule() for the calling CPU. Currently, it is used in inc_nr_running() scheduler primitive only. Nobody calls smp_send_reschedule() from preemptible context (furthermore, it looks like it will be save if anybody use it another way in the future). But anyway I add WARN_ON() here just to return here if anything changes. Signed-off-by: Kirill Tkhai <tkhai@yandex.ru> CC: David Miller <davem@davemloft.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
557fc5873e
commit
1a36265bf7
1 changed files with 7 additions and 2 deletions
|
@ -1399,8 +1399,13 @@ void __init smp_cpus_done(unsigned int max_cpus)
|
||||||
|
|
||||||
void smp_send_reschedule(int cpu)
|
void smp_send_reschedule(int cpu)
|
||||||
{
|
{
|
||||||
xcall_deliver((u64) &xcall_receive_signal, 0, 0,
|
if (cpu == smp_processor_id()) {
|
||||||
cpumask_of(cpu));
|
WARN_ON_ONCE(preemptible());
|
||||||
|
set_softint(1 << PIL_SMP_RECEIVE_SIGNAL);
|
||||||
|
} else {
|
||||||
|
xcall_deliver((u64) &xcall_receive_signal,
|
||||||
|
0, 0, cpumask_of(cpu));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs)
|
void __irq_entry smp_receive_signal_client(int irq, struct pt_regs *regs)
|
||||||
|
|
Loading…
Reference in a new issue