diff options
author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-09-04 06:45:54 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2012-10-18 16:14:05 -0400 |
commit | a13904d4b6d04278deb6841020dd7dee9867745e (patch) | |
tree | 89cd8206405935c8a6b600a8da3ac042a116a45c /arch | |
parent | 1ae3a8f858a6eb6a75a78fb8f35c98fa870dfb87 (diff) |
Trace IPI-related IRQs with ft_irq_fired()
IPIs have some special cases where irq_enter() is not called. This
caused ft_irq_fired() to "miss" some rescheduling-related interrupts,
which in turn may cause outliers.
This patch makes sure ft_irq_fired() is called on scheduling-related
IPIs.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/smp.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index ed4c4f54e2ae..f5e294040b1c 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c | |||
@@ -251,8 +251,10 @@ extern void hrtimer_pull(void); | |||
251 | void smp_pull_timers_interrupt(struct pt_regs *regs) | 251 | void smp_pull_timers_interrupt(struct pt_regs *regs) |
252 | { | 252 | { |
253 | ack_APIC_irq(); | 253 | ack_APIC_irq(); |
254 | irq_enter(); | ||
254 | TRACE("pull timer interrupt\n"); | 255 | TRACE("pull timer interrupt\n"); |
255 | hrtimer_pull(); | 256 | hrtimer_pull(); |
257 | irq_exit(); | ||
256 | } | 258 | } |
257 | 259 | ||
258 | struct smp_ops smp_ops = { | 260 | struct smp_ops smp_ops = { |