diff options
Diffstat (limited to 'arch/x86/kernel/smp.c')
-rw-r--r-- | arch/x86/kernel/smp.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index ec1de97600e7..337ce0c44f92 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c | |||
@@ -22,6 +22,9 @@ | |||
22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
23 | #include <linux/cpu.h> | 23 | #include <linux/cpu.h> |
24 | 24 | ||
25 | #include <litmus/litmus.h> | ||
26 | #include <litmus/trace.h> | ||
27 | |||
25 | #include <asm/mtrr.h> | 28 | #include <asm/mtrr.h> |
26 | #include <asm/tlbflush.h> | 29 | #include <asm/tlbflush.h> |
27 | #include <asm/mmu_context.h> | 30 | #include <asm/mmu_context.h> |
@@ -117,6 +120,7 @@ static void native_smp_send_reschedule(int cpu) | |||
117 | WARN_ON(1); | 120 | WARN_ON(1); |
118 | return; | 121 | return; |
119 | } | 122 | } |
123 | TS_SEND_RESCHED_START(cpu); | ||
120 | apic->send_IPI_mask(cpumask_of(cpu), RESCHEDULE_VECTOR); | 124 | apic->send_IPI_mask(cpumask_of(cpu), RESCHEDULE_VECTOR); |
121 | } | 125 | } |
122 | 126 | ||
@@ -197,7 +201,12 @@ static void native_smp_send_stop(void) | |||
197 | void smp_reschedule_interrupt(struct pt_regs *regs) | 201 | void smp_reschedule_interrupt(struct pt_regs *regs) |
198 | { | 202 | { |
199 | ack_APIC_irq(); | 203 | ack_APIC_irq(); |
204 | /* LITMUS^RT needs this interrupt to proper reschedule | ||
205 | * on this cpu | ||
206 | */ | ||
207 | set_tsk_need_resched(current); | ||
200 | inc_irq_stat(irq_resched_count); | 208 | inc_irq_stat(irq_resched_count); |
209 | TS_SEND_RESCHED_END; | ||
201 | /* | 210 | /* |
202 | * KVM uses this interrupt to force a cpu out of guest mode | 211 | * KVM uses this interrupt to force a cpu out of guest mode |
203 | */ | 212 | */ |