aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2010-11-10 12:25:43 -0500
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2010-11-11 17:57:46 -0500
commit2c142d1028f276c6d5e58c553768ae32ed9bda68 (patch)
tree872260249eadee5fd9a16fbd2f1174e0714ff566
parentfb3df2ec261d8cd6bcb8206d9d985355214d7767 (diff)
Hook up LITMUS^RT remote preemption support on x86
Call into scheduler state machine in the IPI handler.
-rw-r--r--arch/x86/kernel/smp.c9
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)
212void smp_reschedule_interrupt(struct pt_regs *regs) 213void 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 /*