diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2010-11-10 12:25:43 -0500 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2010-11-11 17:57:46 -0500 |
commit | 2c142d1028f276c6d5e58c553768ae32ed9bda68 (patch) | |
tree | 872260249eadee5fd9a16fbd2f1174e0714ff566 /arch/x86/kernel/smp.c | |
parent | fb3df2ec261d8cd6bcb8206d9d985355214d7767 (diff) |
Hook up LITMUS^RT remote preemption support on x86
Call into scheduler state machine in the IPI handler.
Diffstat (limited to 'arch/x86/kernel/smp.c')
-rw-r--r-- | arch/x86/kernel/smp.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index 97af589a5c0c..74cca6014c0e 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c | |||
@@ -23,7 +23,8 @@ | |||
23 | #include <linux/cpu.h> | 23 | #include <linux/cpu.h> |
24 | #include <linux/gfp.h> | 24 | #include <linux/gfp.h> |
25 | 25 | ||
26 | #include <litmus/litmus.h> | 26 | #include <litmus/preempt.h> |
27 | #include <litmus/debug_trace.h> | ||
27 | #include <litmus/trace.h> | 28 | #include <litmus/trace.h> |
28 | 29 | ||
29 | #include <asm/mtrr.h> | 30 | #include <asm/mtrr.h> |
@@ -212,10 +213,8 @@ static void native_smp_send_stop(void) | |||
212 | void smp_reschedule_interrupt(struct pt_regs *regs) | 213 | void smp_reschedule_interrupt(struct pt_regs *regs) |
213 | { | 214 | { |
214 | ack_APIC_irq(); | 215 | ack_APIC_irq(); |
215 | /* LITMUS^RT needs this interrupt to proper reschedule | 216 | /* LITMUS^RT: this IPI might need to trigger the sched state machine. */ |
216 | * on this cpu | 217 | sched_state_ipi(); |
217 | */ | ||
218 | set_tsk_need_resched(current); | ||
219 | inc_irq_stat(irq_resched_count); | 218 | inc_irq_stat(irq_resched_count); |
220 | TS_SEND_RESCHED_END; | 219 | TS_SEND_RESCHED_END; |
221 | /* | 220 | /* |