aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kernel/apic/apic.c17
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 */
1969static inline void __smp_error_interrupt(struct pt_regs *regs) 1969static 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");