diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-06-29 13:16:22 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-06-29 13:16:22 +0100 |
commit | 4580002f0f82881ca18d95336e03c661a1a6fb25 (patch) | |
tree | ed4df30b2ed64b58f1275064d010f4ed03dce282 /xen/arch/x86/smp.c | |
parent | 2aaf60746f7a9586a064e8f680f0c4aab4accc4b (diff) | |
download | xen-4580002f0f82881ca18d95336e03c661a1a6fb25.tar.gz xen-4580002f0f82881ca18d95336e03c661a1a6fb25.tar.bz2 xen-4580002f0f82881ca18d95336e03c661a1a6fb25.zip |
x86: send_IPI_mask() ignores offline CPUs in given cpumask.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/arch/x86/smp.c')
-rw-r--r-- | xen/arch/x86/smp.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/xen/arch/x86/smp.c b/xen/arch/x86/smp.c index 239dde6fb7..1c231b00b1 100644 --- a/xen/arch/x86/smp.c +++ b/xen/arch/x86/smp.c @@ -144,6 +144,7 @@ void send_IPI_mask_flat(const cpumask_t *cpumask, int vector) unsigned long cfg; unsigned long flags; + mask &= cpus_addr(cpu_online_map)[0]; mask &= ~(1UL << smp_processor_id()); if ( mask == 0 ) return; @@ -183,7 +184,7 @@ void send_IPI_mask_phys(const cpumask_t *mask, int vector) for_each_cpu_mask ( query_cpu, *mask ) { - if ( query_cpu == smp_processor_id() ) + if ( !cpu_online(query_cpu) || (query_cpu == smp_processor_id()) ) continue; /* |