aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri Sivanich <sivanich@sgi.com>2009-02-13 09:40:55 -0500
committerIngo Molnar <mingo@elte.hu>2009-02-13 13:13:13 -0500
commitc466ed2e4337c5eb03b283da507eb5328ab06c73 (patch)
tree00b4bac33d8686c6d6d2d603a9083ad82684b61f
parentf8a6b2b9cee298a9663cbe38ce1eb5240987cb62 (diff)
x86, UV: set full apicid in uv_hub_send_ipi
The uv_hub_send_ipi() function needs to set the full apicid in the UVH_IPI_INT mmr. Signed-off-by: Dimitri Sivanich <sivanich@sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r--arch/x86/kernel/genx2apic_uv_x.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/x86/kernel/genx2apic_uv_x.c b/arch/x86/kernel/genx2apic_uv_x.c
index 6adb5e6f4d92..89b84e004f04 100644
--- a/arch/x86/kernel/genx2apic_uv_x.c
+++ b/arch/x86/kernel/genx2apic_uv_x.c
@@ -114,16 +114,15 @@ int uv_wakeup_secondary(int phys_apicid, unsigned int start_rip)
114 114
115static void uv_send_IPI_one(int cpu, int vector) 115static void uv_send_IPI_one(int cpu, int vector)
116{ 116{
117 unsigned long val, apicid, lapicid; 117 unsigned long val, apicid;
118 int pnode; 118 int pnode;
119 119
120 apicid = per_cpu(x86_cpu_to_apicid, cpu); 120 apicid = per_cpu(x86_cpu_to_apicid, cpu);
121 lapicid = apicid & 0x3f; /* ZZZ macro needed */
122 pnode = uv_apicid_to_pnode(apicid); 121 pnode = uv_apicid_to_pnode(apicid);
123 122
124 val = ( 1UL << UVH_IPI_INT_SEND_SHFT ) | 123 val = (1UL << UVH_IPI_INT_SEND_SHFT) |
125 ( lapicid << UVH_IPI_INT_APIC_ID_SHFT ) | 124 (apicid << UVH_IPI_INT_APIC_ID_SHFT) |
126 ( vector << UVH_IPI_INT_VECTOR_SHFT ); 125 (vector << UVH_IPI_INT_VECTOR_SHFT);
127 126
128 uv_write_global_mmr64(pnode, UVH_IPI_INT, val); 127 uv_write_global_mmr64(pnode, UVH_IPI_INT, val);
129} 128}