diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-05-01 19:15:25 -0400 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-05-01 19:15:25 -0400 |
commit | 87579c371a7f4e5bf19fa9b472d3ba9d8eafcec1 (patch) | |
tree | 098235ad6d7387487c20b2172b50e763481ded2a | |
parent | a0923fbdafb81a1f93da90b19405e7949f4efe2d (diff) |
sparc: force resched on IPI
This replicates 1a229e67e4cf08a539fc558d017a95ff03705ac5 for sparc64.
This is what happens:
smp_send_reschedule()
-> smp_receive_signal() (smp.c)
~~> IPI
~~> xcall_receive_signal (ultra.S)
~~> soft interrupt (ttable.S)
-> smp_receive_signal_client (smp.c)
-> set_tsk_need_resched()
-rw-r--r-- | arch/sparc64/kernel/smp.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index c39944927f..cd2bc7e289 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -1033,6 +1033,7 @@ void smp_receive_signal(int cpu) | |||
1033 | void smp_receive_signal_client(int irq, struct pt_regs *regs) | 1033 | void smp_receive_signal_client(int irq, struct pt_regs *regs) |
1034 | { | 1034 | { |
1035 | clear_softint(1 << irq); | 1035 | clear_softint(1 << irq); |
1036 | set_tsk_need_resched(current); | ||
1036 | } | 1037 | } |
1037 | 1038 | ||
1038 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) | 1039 | void smp_new_mmu_context_version_client(int irq, struct pt_regs *regs) |