diff options
author | Ingo Molnar <mingo@kernel.org> | 2012-07-25 21:40:40 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2012-07-25 21:40:40 +0200 |
commit | d431adfbc9b7de651f3164c6b7ffcad75805d7e4 (patch) | |
tree | 29bce222c81a3a392e51c11e2188659aa6d1bded /arch/x86/platform/uv/uv_irq.c | |
parent | x86, nops: Missing break resulting in incorrect selection on Intel (diff) | |
parent | Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kern... (diff) | |
download | linux-d431adfbc9b7de651f3164c6b7ffcad75805d7e4.tar.xz linux-d431adfbc9b7de651f3164c6b7ffcad75805d7e4.zip |
Merge branch 'linus' into x86/urgent
Merge in Linus's tree to avoid a conflict.
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/platform/uv/uv_irq.c')
-rw-r--r-- | arch/x86/platform/uv/uv_irq.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/platform/uv/uv_irq.c b/arch/x86/platform/uv/uv_irq.c index f25c2765a5c9..acf7752da952 100644 --- a/arch/x86/platform/uv/uv_irq.c +++ b/arch/x86/platform/uv/uv_irq.c @@ -135,6 +135,7 @@ arch_enable_uv_irq(char *irq_name, unsigned int irq, int cpu, int mmr_blade, unsigned long mmr_value; struct uv_IO_APIC_route_entry *entry; int mmr_pnode, err; + unsigned int dest; BUILD_BUG_ON(sizeof(struct uv_IO_APIC_route_entry) != sizeof(unsigned long)); @@ -143,6 +144,10 @@ arch_enable_uv_irq(char *irq_name, unsigned int irq, int cpu, int mmr_blade, if (err != 0) return err; + err = apic->cpu_mask_to_apicid_and(eligible_cpu, eligible_cpu, &dest); + if (err != 0) + return err; + if (limit == UV_AFFINITY_CPU) irq_set_status_flags(irq, IRQ_NO_BALANCING); else @@ -159,7 +164,7 @@ arch_enable_uv_irq(char *irq_name, unsigned int irq, int cpu, int mmr_blade, entry->polarity = 0; entry->trigger = 0; entry->mask = 0; - entry->dest = apic->cpu_mask_to_apicid(eligible_cpu); + entry->dest = dest; mmr_pnode = uv_blade_to_pnode(mmr_blade); uv_write_global_mmr64(mmr_pnode, mmr_offset, mmr_value); @@ -222,7 +227,7 @@ uv_set_irq_affinity(struct irq_data *data, const struct cpumask *mask, if (cfg->move_in_progress) send_cleanup_vector(cfg); - return 0; + return IRQ_SET_MASK_OK_NOCOPY; } /* |