diff options
Diffstat (limited to 'arch/x86')
| -rw-r--r-- | arch/x86/include/asm/idle.h | 5 | ||||
| -rw-r--r-- | arch/x86/kernel/apic.c | 6 | ||||
| -rw-r--r-- | arch/x86/kernel/io_apic.c | 3 |
3 files changed, 6 insertions, 8 deletions
diff --git a/arch/x86/include/asm/idle.h b/arch/x86/include/asm/idle.h index 44c89c3a23e9..38d87379e270 100644 --- a/arch/x86/include/asm/idle.h +++ b/arch/x86/include/asm/idle.h | |||
| @@ -8,8 +8,13 @@ struct notifier_block; | |||
| 8 | void idle_notifier_register(struct notifier_block *n); | 8 | void idle_notifier_register(struct notifier_block *n); |
| 9 | void idle_notifier_unregister(struct notifier_block *n); | 9 | void idle_notifier_unregister(struct notifier_block *n); |
| 10 | 10 | ||
| 11 | #ifdef CONFIG_X86_64 | ||
| 11 | void enter_idle(void); | 12 | void enter_idle(void); |
| 12 | void exit_idle(void); | 13 | void exit_idle(void); |
| 14 | #else /* !CONFIG_X86_64 */ | ||
| 15 | static inline void enter_idle(void) { } | ||
| 16 | static inline void exit_idle(void) { } | ||
| 17 | #endif /* CONFIG_X86_64 */ | ||
| 13 | 18 | ||
| 14 | void c1e_remove_cpu(int cpu); | 19 | void c1e_remove_cpu(int cpu); |
| 15 | 20 | ||
diff --git a/arch/x86/kernel/apic.c b/arch/x86/kernel/apic.c index 16f94879b525..0fd083713f62 100644 --- a/arch/x86/kernel/apic.c +++ b/arch/x86/kernel/apic.c | |||
| @@ -814,9 +814,7 @@ void smp_apic_timer_interrupt(struct pt_regs *regs) | |||
| 814 | * Besides, if we don't timer interrupts ignore the global | 814 | * Besides, if we don't timer interrupts ignore the global |
| 815 | * interrupt lock, which is the WrongThing (tm) to do. | 815 | * interrupt lock, which is the WrongThing (tm) to do. |
| 816 | */ | 816 | */ |
| 817 | #ifdef CONFIG_X86_64 | ||
| 818 | exit_idle(); | 817 | exit_idle(); |
| 819 | #endif | ||
| 820 | irq_enter(); | 818 | irq_enter(); |
| 821 | local_apic_timer_interrupt(); | 819 | local_apic_timer_interrupt(); |
| 822 | irq_exit(); | 820 | irq_exit(); |
| @@ -1682,9 +1680,7 @@ void smp_spurious_interrupt(struct pt_regs *regs) | |||
| 1682 | { | 1680 | { |
| 1683 | u32 v; | 1681 | u32 v; |
| 1684 | 1682 | ||
| 1685 | #ifdef CONFIG_X86_64 | ||
| 1686 | exit_idle(); | 1683 | exit_idle(); |
| 1687 | #endif | ||
| 1688 | irq_enter(); | 1684 | irq_enter(); |
| 1689 | /* | 1685 | /* |
| 1690 | * Check if this really is a spurious interrupt and ACK it | 1686 | * Check if this really is a spurious interrupt and ACK it |
| @@ -1713,9 +1709,7 @@ void smp_error_interrupt(struct pt_regs *regs) | |||
| 1713 | { | 1709 | { |
| 1714 | u32 v, v1; | 1710 | u32 v, v1; |
| 1715 | 1711 | ||
| 1716 | #ifdef CONFIG_X86_64 | ||
| 1717 | exit_idle(); | 1712 | exit_idle(); |
| 1718 | #endif | ||
| 1719 | irq_enter(); | 1713 | irq_enter(); |
| 1720 | /* First tickle the hardware, only then report what went on. -- REW */ | 1714 | /* First tickle the hardware, only then report what went on. -- REW */ |
| 1721 | v = apic_read(APIC_ESR); | 1715 | v = apic_read(APIC_ESR); |
diff --git a/arch/x86/kernel/io_apic.c b/arch/x86/kernel/io_apic.c index 9043251210fb..679e7bbbbcd6 100644 --- a/arch/x86/kernel/io_apic.c +++ b/arch/x86/kernel/io_apic.c | |||
| @@ -2216,10 +2216,9 @@ static void set_ir_ioapic_affinity_irq(unsigned int irq, cpumask_t mask) | |||
| 2216 | asmlinkage void smp_irq_move_cleanup_interrupt(void) | 2216 | asmlinkage void smp_irq_move_cleanup_interrupt(void) |
| 2217 | { | 2217 | { |
| 2218 | unsigned vector, me; | 2218 | unsigned vector, me; |
| 2219 | |||
| 2219 | ack_APIC_irq(); | 2220 | ack_APIC_irq(); |
| 2220 | #ifdef CONFIG_X86_64 | ||
| 2221 | exit_idle(); | 2221 | exit_idle(); |
| 2222 | #endif | ||
| 2223 | irq_enter(); | 2222 | irq_enter(); |
| 2224 | 2223 | ||
| 2225 | me = smp_processor_id(); | 2224 | me = smp_processor_id(); |
