diff options
| -rw-r--r-- | arch/x86/kernel/apic/apic.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index d278736bf774..4ec1dd64022a 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c | |||
| @@ -1968,7 +1968,7 @@ __visible void smp_trace_spurious_interrupt(struct pt_regs *regs) | |||
| 1968 | */ | 1968 | */ |
| 1969 | static inline void __smp_error_interrupt(struct pt_regs *regs) | 1969 | static inline void __smp_error_interrupt(struct pt_regs *regs) |
| 1970 | { | 1970 | { |
| 1971 | u32 v0, v1; | 1971 | u32 v; |
| 1972 | u32 i = 0; | 1972 | u32 i = 0; |
| 1973 | static const char * const error_interrupt_reason[] = { | 1973 | static const char * const error_interrupt_reason[] = { |
| 1974 | "Send CS error", /* APIC Error Bit 0 */ | 1974 | "Send CS error", /* APIC Error Bit 0 */ |
| @@ -1982,21 +1982,20 @@ static inline void __smp_error_interrupt(struct pt_regs *regs) | |||
| 1982 | }; | 1982 | }; |
| 1983 | 1983 | ||
| 1984 | /* First tickle the hardware, only then report what went on. -- REW */ | 1984 | /* First tickle the hardware, only then report what went on. -- REW */ |
| 1985 | v0 = apic_read(APIC_ESR); | ||
| 1986 | apic_write(APIC_ESR, 0); | 1985 | apic_write(APIC_ESR, 0); |
| 1987 | v1 = apic_read(APIC_ESR); | 1986 | v = apic_read(APIC_ESR); |
| 1988 | ack_APIC_irq(); | 1987 | ack_APIC_irq(); |
| 1989 | atomic_inc(&irq_err_count); | 1988 | atomic_inc(&irq_err_count); |
| 1990 | 1989 | ||
| 1991 | apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x(%02x)", | 1990 | apic_printk(APIC_DEBUG, KERN_DEBUG "APIC error on CPU%d: %02x", |
| 1992 | smp_processor_id(), v0 , v1); | 1991 | smp_processor_id(), v); |
| 1993 | 1992 | ||
| 1994 | v1 = v1 & 0xff; | 1993 | v &= 0xff; |
| 1995 | while (v1) { | 1994 | while (v) { |
| 1996 | if (v1 & 0x1) | 1995 | if (v & 0x1) |
| 1997 | apic_printk(APIC_DEBUG, KERN_CONT " : %s", error_interrupt_reason[i]); | 1996 | apic_printk(APIC_DEBUG, KERN_CONT " : %s", error_interrupt_reason[i]); |
| 1998 | i++; | 1997 | i++; |
| 1999 | v1 >>= 1; | 1998 | v >>= 1; |
| 2000 | } | 1999 | } |
| 2001 | 2000 | ||
| 2002 | apic_printk(APIC_DEBUG, KERN_CONT "\n"); | 2001 | apic_printk(APIC_DEBUG, KERN_CONT "\n"); |
