aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/io_apic.c
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2011-12-13 11:38:57 +0100
committerJan Beulich <jbeulich@suse.com>2011-12-13 11:38:57 +0100
commit3c419d3521b66c78e22da14fcf287b586e5df4b7 (patch)
tree2a367d69aad197034ed1b999c8de62d19d50fb81 /xen/arch/x86/io_apic.c
parentdd02b58523c43bf517bb6e9d69b4983068e6b89c (diff)
downloadxen-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.c6
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;