From: Jan Beulich Date: Thu, 19 Nov 2015 15:46:10 +0000 (+0100) Subject: x86/IO-APIC: fix setting of destinations X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~2242 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=65288cf610ccf1aae423f65ac67ee5dbeff252a1;p=xen.git x86/IO-APIC: fix setting of destinations In commit a85da715cf ("x86/IO-APIC: adjust setting of destinations") I made a pretty blatant mistake: get_apic_id() can be used there only when running APICs in physical mode. For both flat and clustered modes the change was wrong, causing different kinds of boot problems on affected systems. Don't revert that change though, but use TARGET_CPUS (equaling cpu_online_map, and with there only being a single online CPU fulfilling the original commits intention). Signed-off-by: Jan Beulich Tested-by: Boris Ostrovsky Reviewed-by: Andrew Cooper --- diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 11a0e5d714..c2229adbac 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -1039,7 +1039,7 @@ static void __init setup_IO_APIC_irqs(void) disable_8259A_irq(irq_to_desc(irq)); desc = irq_to_desc(irq); - SET_DEST(entry, logical, get_apic_id()); + SET_DEST(entry, logical, cpu_mask_to_apicid(TARGET_CPUS)); spin_lock_irqsave(&ioapic_lock, flags); __ioapic_write_entry(apic, pin, 0, entry); set_native_irq_info(irq, TARGET_CPUS);