]> xenbits.xensource.com Git - people/julieng/xen-unstable.git/commit
x86/IO-APIC: fix setup of Xen internally used IRQs (take 2)
authorJan Beulich <jbeulich@suse.com>
Mon, 16 Nov 2015 12:11:08 +0000 (13:11 +0100)
committerJan Beulich <jbeulich@suse.com>
Mon, 16 Nov 2015 12:11:08 +0000 (13:11 +0100)
commitfc0c3fa2ad5cdb7e9ccb068e3301499acf643bec
treed520188dcb4eb0716e98b0917ed923fbd88fc57a
parent6853c9bf9ff06f7e24830ae91ca95af5f1642ca5
x86/IO-APIC: fix setup of Xen internally used IRQs (take 2)

..., i.e. namely that of a PCI serial card with an IRQ above the
legacy range. This had got broken by the switch to cpumask_any() in
cpu_mask_to_apicid_phys(). Fix this by allowing all CPUs for that IRQ
(via setup_vector_irq() properly updating a booting CPU's vector_irq[],
thus avoiding "No irq handler for vector" messages and the interrupt
not working).

Cleanup coding style and types there at once.

While doing this I also noticed that io_apic_set_pci_routing() can't
be quite right: It sets up the destination _before_ getting a vector
allocated (which on other than systems using the flat APIC mode
affects the possible destinations), and also didn't restrict affinity
to ->arch.cpu_mask (as established by assign_irq_vector()).

Signed-off-by: Jan Beulich <jbeulich@suse.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
xen/arch/x86/io_apic.c
xen/arch/x86/irq.c
xen/arch/x86/smpboot.c
xen/include/asm-x86/irq.h