# HG changeset patch # User Keir Fraser # Date 1282817774 -3600 # Node ID 3eb5127e46365242401e37df292fbe290fa0a974 # Parent eccfdeb41b803d07bcb4f7fa912a8341fdb19162 Fix bind_irq_vector() destination The "mask" covered all online cpus in the "domain". It should be used as destination later, instead of using "domain" directly. Signed-off-by: Sheng Yang --- a/xen/arch/x86/irq.c +++ b/xen/arch/x86/irq.c @@ -88,14 +88,14 @@ static int __bind_irq_vector(int irq, in cpus_and(mask, domain, cpu_online_map); if (cpus_empty(mask)) return -EINVAL; - if ((cfg->vector == vector) && cpus_equal(cfg->domain, domain)) + if ((cfg->vector == vector) && cpus_equal(cfg->domain, mask)) return 0; if (cfg->vector != IRQ_VECTOR_UNASSIGNED) return -EBUSY; for_each_cpu_mask(cpu, mask) per_cpu(vector_irq, cpu)[vector] = irq; cfg->vector = vector; - cfg->domain = domain; + cfg->domain = mask; irq_status[irq] = IRQ_USED; if (IO_APIC_IRQ(irq)) irq_vector[irq] = vector;