diff options
author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-09-06 09:14:10 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-10-18 16:14:06 -0400 |
commit | d940d731de7c4c98e47d526d08064035893dbeed (patch) | |
tree | fa951fdc7ad0b58873fde5403e8fc9b0233ede94 /arch | |
parent | ce313ac8c1531c11d670fd84fe2526bbb5f32f85 (diff) |
Move SEND_RESCHED tracing to preempt.c
The SEND_RESCHED is really only interesting if the IPI was generated
by LITMUS^RT. Therefore, we don't need to trace in Linux's
architecture-specific code. Instead, we hook into the preemption state
machine, which is informed about incoming IPIs anyway.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/smp.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index f5e294040b1c..7539d84628f7 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c | |||
@@ -25,7 +25,6 @@ | |||
25 | 25 | ||
26 | #include <litmus/preempt.h> | 26 | #include <litmus/preempt.h> |
27 | #include <litmus/debug_trace.h> | 27 | #include <litmus/debug_trace.h> |
28 | #include <litmus/trace.h> | ||
29 | 28 | ||
30 | #include <asm/mtrr.h> | 29 | #include <asm/mtrr.h> |
31 | #include <asm/tlbflush.h> | 30 | #include <asm/tlbflush.h> |
@@ -122,7 +121,6 @@ static void native_smp_send_reschedule(int cpu) | |||
122 | WARN_ON(1); | 121 | WARN_ON(1); |
123 | return; | 122 | return; |
124 | } | 123 | } |
125 | TS_SEND_RESCHED_START(cpu); | ||
126 | apic->send_IPI_mask(cpumask_of(cpu), RESCHEDULE_VECTOR); | 124 | apic->send_IPI_mask(cpumask_of(cpu), RESCHEDULE_VECTOR); |
127 | } | 125 | } |
128 | 126 | ||
@@ -214,18 +212,16 @@ static void native_stop_other_cpus(int wait) | |||
214 | void smp_reschedule_interrupt(struct pt_regs *regs) | 212 | void smp_reschedule_interrupt(struct pt_regs *regs) |
215 | { | 213 | { |
216 | ack_APIC_irq(); | 214 | ack_APIC_irq(); |
217 | /* LITMUS^RT: this IPI might need to trigger the sched state machine. */ | ||
218 | sched_state_ipi(); | ||
219 | inc_irq_stat(irq_resched_count); | 215 | inc_irq_stat(irq_resched_count); |
220 | /* | ||
221 | * LITMUS^RT: starting from 3.0 schedule_ipi() actually does something. | ||
222 | * This may increase IPI latencies compared with previous versions. | ||
223 | */ | ||
224 | scheduler_ipi(); | 216 | scheduler_ipi(); |
225 | TS_SEND_RESCHED_END; | ||
226 | /* | 217 | /* |
227 | * KVM uses this interrupt to force a cpu out of guest mode | 218 | * KVM uses this interrupt to force a cpu out of guest mode |
228 | */ | 219 | */ |
220 | |||
221 | /* LITMUS^RT: this IPI might need to trigger the sched state machine. | ||
222 | * Starting from 3.0 schedule_ipi() actually does something. This may | ||
223 | * increase IPI latencies compared with previous versions. */ | ||
224 | sched_state_ipi(); | ||
229 | } | 225 | } |
230 | 226 | ||
231 | void smp_call_function_interrupt(struct pt_regs *regs) | 227 | void smp_call_function_interrupt(struct pt_regs *regs) |