diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-08 15:04:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-10-08 15:04:04 -0400 |
commit | 7c1632ba76d94b4847fde79f67faa91ef8571fe9 (patch) | |
tree | 012076beb659ee4609a8101c1fa9e90c759a38f0 /arch | |
parent | a888f96a154b70804c5b29ee02e4d3bda6d55e56 (diff) | |
parent | 9bcbdd9c58617f1301dd4f17c738bb9bc73aca70 (diff) |
Merge branch 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86, timers: Check for pending timers after (device) interrupts
NOHZ: update idle state also when NOHZ is inactive
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/irq.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/smp.c | 1 |
2 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index 74656d1d4e30..391206199515 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c | |||
@@ -244,6 +244,7 @@ unsigned int __irq_entry do_IRQ(struct pt_regs *regs) | |||
244 | __func__, smp_processor_id(), vector, irq); | 244 | __func__, smp_processor_id(), vector, irq); |
245 | } | 245 | } |
246 | 246 | ||
247 | run_local_timers(); | ||
247 | irq_exit(); | 248 | irq_exit(); |
248 | 249 | ||
249 | set_irq_regs(old_regs); | 250 | set_irq_regs(old_regs); |
@@ -268,6 +269,7 @@ void smp_generic_interrupt(struct pt_regs *regs) | |||
268 | if (generic_interrupt_extension) | 269 | if (generic_interrupt_extension) |
269 | generic_interrupt_extension(); | 270 | generic_interrupt_extension(); |
270 | 271 | ||
272 | run_local_timers(); | ||
271 | irq_exit(); | 273 | irq_exit(); |
272 | 274 | ||
273 | set_irq_regs(old_regs); | 275 | set_irq_regs(old_regs); |
diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index ec1de97600e7..d915d956e66d 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c | |||
@@ -198,6 +198,7 @@ void smp_reschedule_interrupt(struct pt_regs *regs) | |||
198 | { | 198 | { |
199 | ack_APIC_irq(); | 199 | ack_APIC_irq(); |
200 | inc_irq_stat(irq_resched_count); | 200 | inc_irq_stat(irq_resched_count); |
201 | run_local_timers(); | ||
201 | /* | 202 | /* |
202 | * KVM uses this interrupt to force a cpu out of guest mode | 203 | * KVM uses this interrupt to force a cpu out of guest mode |
203 | */ | 204 | */ |