# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1283154997 -3600
# Node ID ab1fb1b8b569ef78ac352a5ff4524d0fae80945a
# Parent 9ff9b57ddddfd3693698ece28ae44542fba6ee0f
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 <sheng@linux.intel.com>
xen-unstable: changeset: 3eb5127e4636
xen-unstable: date: Thu Aug 26 11:16:14 2010 +0100
--- a/xen/arch/x86/irq.c Mon Aug 30 08:56:07 2010 +0100
+++ b/xen/arch/x86/irq.c Mon Aug 30 08:56:37 2010 +0100
@@ -90,14 +90,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;
# HG changeset patch
# User Keir Fraser <keir.fraser@citrix.com>
# Date 1284396688 -3600
# Node ID 965d47d5d7c2e3d97ea1c70c9261ae76e2abf6ac
# Parent 208129cefcb30ae476af9a934008addf04e77cdc
Fix serial interrupt's destination
Lowest Priority can't use with invalid cpu_mask, and the default value
of CPU_MASK_ALL may cover CPU which wasn't online.
From: "Yang, Sheng" <sheng.yang@intel.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
xen-unstable changeset: 22148:a254d1236c1a
xen-unstable date: Mon Sep 13 17:37:25 2010 +0100
--- a/xen/arch/x86/smpboot.c Mon Sep 13 17:50:14 2010 +0100
+++ b/xen/arch/x86/smpboot.c Mon Sep 13 17:51:28 2010 +0100
@@ -1602,7 +1602,7 @@ void __init smp_intr_init(void)
irq_vector[irq] = FIRST_HIPRIORITY_VECTOR + seridx + 1;
per_cpu(vector_irq, cpu)[FIRST_HIPRIORITY_VECTOR + seridx + 1] = irq;
irq_cfg[irq].vector = FIRST_HIPRIORITY_VECTOR + seridx + 1;
- irq_cfg[irq].domain = (cpumask_t)CPU_MASK_ALL;
+ irq_cfg[irq].domain = cpu_online_map;
}
/* IPI for cleanuping vectors after irq move */