aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/io_apic.c
diff options
context:
space:
mode:
authorGeorge Dunlap <george.dunlap@eu.citrix.com>2011-07-26 18:36:58 +0100
committerGeorge Dunlap <george.dunlap@eu.citrix.com>2011-07-26 18:36:58 +0100
commit5028ef1e1b06001c3334d6abd8c5b1037596ca41 (patch)
treea7e50927a141a2db39e03d48a68c4238775ae6b9 /xen/arch/x86/io_apic.c
parent1de95c144458ad8841e85c93736b0c364f285ef2 (diff)
downloadxen-5028ef1e1b06001c3334d6abd8c5b1037596ca41.tar.gz
xen-5028ef1e1b06001c3334d6abd8c5b1037596ca41.tar.bz2
xen-5028ef1e1b06001c3334d6abd8c5b1037596ca41.zip
xen: Infrastructure to allow irqs to share vector maps
Laying the groundwork for per-device vector maps. This generic code allows any irq to point to a vector map; all irqs sharing the same vector map will avoid sharing vectors. Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>
Diffstat (limited to 'xen/arch/x86/io_apic.c')
-rw-r--r--xen/arch/x86/io_apic.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/xen/arch/x86/io_apic.c b/xen/arch/x86/io_apic.c
index 908915a4db..258f341c25 100644
--- a/xen/arch/x86/io_apic.c
+++ b/xen/arch/x86/io_apic.c
@@ -449,6 +449,11 @@ fastcall void smp_irq_move_cleanup_interrupt(struct cpu_user_regs *regs)
irq, vector, smp_processor_id());
__get_cpu_var(vector_irq)[vector] = -1;
+ if ( cfg->used_vectors )
+ {
+ ASSERT(test_bit(vector, cfg->used_vectors));
+ clear_bit(vector, cfg->used_vectors);
+ }
cfg->move_cleanup_count--;
unlock:
spin_unlock(&desc->lock);