diff options
author | Jan Beulich <jbeulich@suse.com> | 2011-12-13 11:38:57 +0100 |
---|---|---|
committer | Jan Beulich <jbeulich@suse.com> | 2011-12-13 11:38:57 +0100 |
commit | 3c419d3521b66c78e22da14fcf287b586e5df4b7 (patch) | |
tree | 2a367d69aad197034ed1b999c8de62d19d50fb81 /xen/arch/x86/io_apic.c | |
parent | dd02b58523c43bf517bb6e9d69b4983068e6b89c (diff) | |
download | xen-3c419d3521b66c78e22da14fcf287b586e5df4b7.tar.gz xen-3c419d3521b66c78e22da14fcf287b586e5df4b7.tar.bz2 xen-3c419d3521b66c78e22da14fcf287b586e5df4b7.zip |
VT-d: bind IRQs to CPUs local to the node the IOMMU is on
This extends create_irq() to take a node parameter, allowing the
resulting IRQ to have its destination set to a CPU on that node right
away, which is more natural than having to post-adjust this (and
get e.g. a new IRQ vector assigned despite a fresh one was just
obtained).
All other callers of create_irq() pass NUMA_NO_NODE for the time being.
Signed-off-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/io_apic.c')
-rw-r--r-- | xen/arch/x86/io_apic.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c index 752b3f4758..f5c03b4b35 100644 --- a/xen/arch/x86/io_apic.c +++ b/xen/arch/x86/io_apic.c @@ -995,7 +995,7 @@ static void __init setup_IO_APIC_irqs(void) continue; if (IO_APIC_IRQ(irq)) { - vector = assign_irq_vector(irq); + vector = assign_irq_vector(irq, NULL); BUG_ON(vector < 0); entry.vector = vector; ioapic_register_intr(irq, IOAPIC_AUTO); @@ -2188,7 +2188,7 @@ int io_apic_set_pci_routing (int ioapic, int pin, int irq, int edge_level, int a if (!platform_legacy_irq(irq)) add_pin_to_irq(irq, ioapic, pin); - vector = assign_irq_vector(irq); + vector = assign_irq_vector(irq, NULL); if (vector < 0) return vector; entry.vector = vector; @@ -2340,7 +2340,7 @@ int ioapic_guest_write(unsigned long physbase, unsigned int reg, u32 val) if ( desc->arch.vector <= 0 || desc->arch.vector > LAST_DYNAMIC_VECTOR ) { add_pin_to_irq(irq, apic, pin); - vector = assign_irq_vector(irq); + vector = assign_irq_vector(irq, NULL); if ( vector < 0 ) return vector; |