mirror of
https://github.com/xen-project/xen.git
synced 2026-10-28 02:01:24 +01:00
x86/APIC: modify error_interrupt() to output using single printk()
This takes care of the issue of APIC errors tending to occur on multiple cores at once. In turn this tends to causes the error messages to be merged together, making understanding them difficult. Signed-off-by: Elliott Mitchell <ehem+xen@m5p.com> Acked-by: Jan Beulich <jbeulich@suse.com>
This commit is contained in:
1 parent
013670adf5
commit
6960e343d6
1 file changed
+7
-5
+7
-5
@@ -1410,6 +1410,7 @@ static void cf_check error_interrupt(struct cpu_user_regs *regs)
|
||||
", Received illegal vector",
|
||||
", Illegal register address",
|
||||
};
|
||||
const char *entries[ARRAY_SIZE(esr_fields)];
|
||||
unsigned int v, v1;
|
||||
int i;
|
||||
|
||||
@@ -1419,12 +1420,13 @@ static void cf_check error_interrupt(struct cpu_user_regs *regs)
|
||||
v1 = apic_read(APIC_ESR);
|
||||
ack_APIC_irq();
|
||||
|
||||
printk(XENLOG_DEBUG "APIC error on CPU%u: %02x(%02x)",
|
||||
smp_processor_id(), v , v1);
|
||||
for ( i = 7; i >= 0; --i )
|
||||
if ( v1 & (1 << i) )
|
||||
printk("%s", esr_fields[i]);
|
||||
printk("\n");
|
||||
entries[i] = v1 & (1 << i) ? esr_fields[i] : "";
|
||||
printk(XENLOG_DEBUG
|
||||
"APIC error on CPU%u: %02x(%02x)%s%s%s%s%s%s%s%s\n",
|
||||
smp_processor_id(), v, v1,
|
||||
entries[7], entries[6], entries[5], entries[4],
|
||||
entries[3], entries[2], entries[1], entries[0]);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||