x86, UV: Correct BAU software acknowledge

Correct the acknowledgment and the reset of a BAU
software-acknowledged message.

A retry message should be testing only for timed-out resources
(mask << 8). (And we delete a log message that might cause
unnecessary concern) The acknowledge MMR is
|--timed-out--|---pending--|, each is 8 bits.

The IPI-driven reset of software acknowledge resources frees
both timed out and pending resources.

Signed-off-by: Cliff Wickman <cpw@sgi.com>
Cc: gregkh@suse.de
LKML-Reference: <E1OJvNy-0004aP-7O@eag09.americas.sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

authored by Cliff Wickman and committed by Ingo Molnar 39847e7f 4faca155

+8 -9
+8 -9
arch/x86/kernel/tlb_uv.c
··· 161 161 slot2 = msg2 - mdp->va_queue_first; 162 162 mmr = uv_read_local_mmr 163 163 (UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE); 164 - msg_res = ((msg2->sw_ack_vector << 8) | 165 - msg2->sw_ack_vector); 164 + msg_res = msg2->sw_ack_vector; 166 165 /* 167 166 * This is a message retry; clear the resources held 168 167 * by the previous message only if they timed out. 169 168 * If it has not timed out we have an unexpected 170 169 * situation to report. 171 170 */ 172 - if (mmr & (msg_res << 8)) { 171 + if (mmr & (msg_res << UV_SW_ACK_NPENDING)) { 173 172 /* 174 173 * is the resource timed out? 175 174 * make everyone ignore the cancelled message. ··· 178 179 cancel_count++; 179 180 uv_write_local_mmr( 180 181 UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, 181 - (msg_res << 8) | msg_res); 182 - } else 183 - printk(KERN_INFO "note bau retry: no effect\n"); 182 + (msg_res << UV_SW_ACK_NPENDING) | 183 + msg_res); 184 + } 184 185 } 185 186 } 186 187 if (!cancel_count) ··· 316 317 */ 317 318 mmr = uv_read_local_mmr 318 319 (UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE); 319 - msg_res = ((msg->sw_ack_vector << 8) | 320 - msg->sw_ack_vector); 320 + msg_res = msg->sw_ack_vector; 321 321 if (mmr & msg_res) { 322 322 stat->d_rcanceled++; 323 323 uv_write_local_mmr( 324 324 UVH_LB_BAU_INTD_SOFTWARE_ACKNOWLEDGE_ALIAS, 325 - msg_res); 325 + (msg_res << UV_SW_ACK_NPENDING) | 326 + msg_res); 326 327 } 327 328 } 328 329 }