x86, UV: Remove BAU check for stay-busy

Remove a faulty assumption that a long running BAU request has
encountered a hardware problem and will never finish.

Numalink congestion can make a request appear to have
encountered such a problem, but it is not safe to cancel the
request. If such a cancel is done but a reply is later received
we can miss a TLB shootdown.

We depend upon the max_bau_concurrent 'throttle' to prevent the
stay-busy case from happening.

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

authored by Cliff Wickman and committed by Ingo Molnar 90cc7d94 a8328ee5

-24
-1
arch/x86/include/asm/uv/uv_bau.h
··· 402 402 unsigned short uvhub_quiesce; 403 403 short socket_acknowledge_count[DEST_Q_SIZE]; 404 404 cycles_t send_message; 405 - spinlock_t masks_lock; 406 405 spinlock_t uvhub_lock; 407 406 spinlock_t queue_lock; 408 407 /* tunables */
-23
arch/x86/kernel/tlb_uv.c
··· 405 405 unsigned long mmr; 406 406 unsigned long mask; 407 407 cycles_t ttime; 408 - cycles_t timeout_time; 409 408 struct ptc_stats *stat = bcp->statp; 410 409 struct bau_control *hmaster; 411 410 412 411 hmaster = bcp->uvhub_master; 413 - timeout_time = get_cycles() + bcp->timeout_interval; 414 412 415 413 /* spin on the status MMR, waiting for it to go idle */ 416 414 while ((descriptor_status = (((unsigned long) ··· 448 450 * descriptor_status is still BUSY 449 451 */ 450 452 cpu_relax(); 451 - relaxes++; 452 - if (relaxes >= 10000) { 453 - relaxes = 0; 454 - if (get_cycles() > timeout_time) { 455 - quiesce_local_uvhub(hmaster); 456 - 457 - /* single-thread the register change */ 458 - spin_lock(&hmaster->masks_lock); 459 - mmr = uv_read_local_mmr(mmr_offset); 460 - mask = 0UL; 461 - mask |= (3UL < right_shift); 462 - mask = ~mask; 463 - mmr &= mask; 464 - uv_write_local_mmr(mmr_offset, mmr); 465 - spin_unlock(&hmaster->masks_lock); 466 - end_uvhub_quiesce(hmaster); 467 - stat->s_busy++; 468 - return FLUSH_GIVEUP; 469 - } 470 - } 471 453 } 472 454 } 473 455 bcp->conseccompletes++; ··· 1558 1580 for_each_present_cpu(cpu) { 1559 1581 bcp = &per_cpu(bau_control, cpu); 1560 1582 memset(bcp, 0, sizeof(struct bau_control)); 1561 - spin_lock_init(&bcp->masks_lock); 1562 1583 pnode = uv_cpu_hub_info(cpu)->pnode; 1563 1584 uvhub = uv_cpu_hub_info(cpu)->numa_blade_id; 1564 1585 uvhub_mask |= (1 << uvhub);