diff options
author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-26 12:21:46 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-02-26 12:21:46 -0500 |
commit | ea3d5226f52ef30f52aa0a04f47f5919c7facacf (patch) | |
tree | 090a48a6f6b2934d32a641ec6e61b3dc59a48514 /arch/i386/kernel/apic.c | |
parent | 9654640d0af8f2de40ff3807d3695109d3463f54 (diff) |
Revert "[PATCH] i386: add idle notifier"
This reverts commit 2ff2d3d74705d34ab71b21f54634fcf50d57bdd5.
Uwe Bugla reports that he cannot mount a floppy drive any more, and Jiri
Slaby bisected it down to this commit.
Benjamin LaHaise also points out that this is a big hot-path, and that
interrupt delivery while idle is very common and should not go through
all these expensive gyrations.
Fix up conflicts in arch/i386/kernel/apic.c and arch/i386/kernel/irq.c
due to other unrelated irq changes.
Cc: Stephane Eranian <eranian@hpl.hp.com>
Cc: Andi Kleen <ak@suse.de>
Cc: Andrew Morton <akpm@osdl.org>
Cc: Uwe Bugla <uwe.bugla@gmx.de>
Cc: Jiri Slaby <jirislaby@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/i386/kernel/apic.c')
-rw-r--r-- | arch/i386/kernel/apic.c | 4 |
1 files changed, 0 insertions, 4 deletions
diff --git a/arch/i386/kernel/apic.c b/arch/i386/kernel/apic.c index 9655c233e6f1..7a2c9cbdb511 100644 --- a/arch/i386/kernel/apic.c +++ b/arch/i386/kernel/apic.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <asm/hpet.h> | 38 | #include <asm/hpet.h> |
39 | #include <asm/i8253.h> | 39 | #include <asm/i8253.h> |
40 | #include <asm/nmi.h> | 40 | #include <asm/nmi.h> |
41 | #include <asm/idle.h> | ||
42 | 41 | ||
43 | #include <mach_apic.h> | 42 | #include <mach_apic.h> |
44 | #include <mach_apicdef.h> | 43 | #include <mach_apicdef.h> |
@@ -561,7 +560,6 @@ void fastcall smp_apic_timer_interrupt(struct pt_regs *regs) | |||
561 | * Besides, if we don't timer interrupts ignore the global | 560 | * Besides, if we don't timer interrupts ignore the global |
562 | * interrupt lock, which is the WrongThing (tm) to do. | 561 | * interrupt lock, which is the WrongThing (tm) to do. |
563 | */ | 562 | */ |
564 | exit_idle(); | ||
565 | irq_enter(); | 563 | irq_enter(); |
566 | local_apic_timer_interrupt(); | 564 | local_apic_timer_interrupt(); |
567 | irq_exit(); | 565 | irq_exit(); |
@@ -1221,7 +1219,6 @@ void smp_spurious_interrupt(struct pt_regs *regs) | |||
1221 | { | 1219 | { |
1222 | unsigned long v; | 1220 | unsigned long v; |
1223 | 1221 | ||
1224 | exit_idle(); | ||
1225 | irq_enter(); | 1222 | irq_enter(); |
1226 | /* | 1223 | /* |
1227 | * Check if this really is a spurious interrupt and ACK it | 1224 | * Check if this really is a spurious interrupt and ACK it |
@@ -1245,7 +1242,6 @@ void smp_error_interrupt(struct pt_regs *regs) | |||
1245 | { | 1242 | { |
1246 | unsigned long v, v1; | 1243 | unsigned long v, v1; |
1247 | 1244 | ||
1248 | exit_idle(); | ||
1249 | irq_enter(); | 1245 | irq_enter(); |
1250 | /* First tickle the hardware, only then report what went on. -- REW */ | 1246 | /* First tickle the hardware, only then report what went on. -- REW */ |
1251 | v = apic_read(APIC_ESR); | 1247 | v = apic_read(APIC_ESR); |