summaryrefslogtreecommitdiffstats
path: root/arch/x86/platform/uv/uv_irq.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@kernel.org>2012-06-18 11:09:49 +0200
committerIngo Molnar <mingo@kernel.org>2012-06-18 11:09:49 +0200
commit8461689c67fc2ad3040bc019cccb541bccb5648f (patch)
treeeafcf756975739ef04aa91be2e053d6e1e8b9ccb /arch/x86/platform/uv/uv_irq.c
parentd48daf37a3d2e2b28a61e615c0fc538301edb0dd (diff)
parent7eb9ae0799b1e9f0b77733b432bc5f6f055b020b (diff)
downloadlinux-8461689c67fc2ad3040bc019cccb541bccb5648f.tar.gz
linux-8461689c67fc2ad3040bc019cccb541bccb5648f.tar.bz2
linux-8461689c67fc2ad3040bc019cccb541bccb5648f.zip
Merge branch 'x86/apic' into x86/platform
Merge in x86/apic to solve a vector_allocation_domain() API change semantic merge 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.c9
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;
}
/*