[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH] x86: Disable IOAPIC earlier during shutdown

Commit fc0c3fa2ad5c ("x86/IO-APIC: fix setup of Xen internally used IRQs
(take 2)") introduced a regression on some hardware where Xen would hang
during shutdown, repeating the following message:
APIC error on CPU0: 08(08), Receive accept error

This appears to be because an interrupt (in this case from the serial
console) destined for a CPU other than the boot CPU is left unhandled so
an APIC error on CPU 0 is generated instead.

To fix this, disable the IOAPIC before each CPU's local APIC is
disabled so that these interrupts are not generated.

Signed-off-by: Ross Lagerwall <ross.lagerwall@xxxxxxxxxx>
 xen/arch/x86/smp.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c
index 50ff6c2..5dfdc96 100644
--- a/xen/arch/x86/smp.c
+++ b/xen/arch/x86/smp.c
@@ -299,6 +299,10 @@ void smp_send_stop(void)
     int timeout = 10;
+    local_irq_disable();
+    disable_IO_APIC();
+    local_irq_enable();
     smp_call_function(stop_this_cpu, NULL, 0);
     /* Wait 10ms for all other CPUs to go offline. */
@@ -306,7 +310,6 @@ void smp_send_stop(void)
-    disable_IO_APIC();

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.