diff options
author | Dimitri Sivanich <sivanich@sgi.com> | 2009-02-13 09:40:55 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-02-13 13:13:13 -0500 |
commit | c466ed2e4337c5eb03b283da507eb5328ab06c73 (patch) | |
tree | 00b4bac33d8686c6d6d2d603a9083ad82684b61f | |
parent | f8a6b2b9cee298a9663cbe38ce1eb5240987cb62 (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.c | 9 |
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 | ||
115 | static void uv_send_IPI_one(int cpu, int vector) | 115 | static 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 | } |