aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include
diff options
context:
space:
mode:
authorCliff Wickman <cpw@sgi.com>2010-06-02 17:22:02 -0400
committerIngo Molnar <mingo@elte.hu>2010-06-08 15:13:45 -0400
commit50fb55acc5bbe5ee29d0a65262f4ec286b14d156 (patch)
tree2099e2a96ae882b206e405976bf01725b7c4167e /arch/x86/include
parente8e5e8a8048006a12d7777a93baebd6e39496101 (diff)
x86, UV: Disable BAU on network congestion
The numalink network can become so congested that TLB shootdown using the Broadcast Assist Unit becomes slower than using IPI's. In that case, disable the use of the BAU for a period of time. The period is tunable. When the period expires the use of the BAU is re-enabled. A count of these actions is added to the statistics file. Signed-off-by: Cliff Wickman <cpw@sgi.com> Cc: gregkh@suse.de LKML-Reference: <E1OJvNy-0004a4-0a@eag09.americas.sgi.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include')
-rw-r--r--arch/x86/include/asm/uv/uv_bau.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
index e5543c1a80ca..9b3e750ef2d8 100644
--- a/arch/x86/include/asm/uv/uv_bau.h
+++ b/arch/x86/include/asm/uv/uv_bau.h
@@ -34,6 +34,7 @@
34 */ 34 */
35 35
36#define UV_ITEMS_PER_DESCRIPTOR 8 36#define UV_ITEMS_PER_DESCRIPTOR 8
37/* the 'throttle' to prevent the hardware stay-busy bug */
37#define MAX_BAU_CONCURRENT 3 38#define MAX_BAU_CONCURRENT 3
38#define UV_CPUS_PER_ACT_STATUS 32 39#define UV_CPUS_PER_ACT_STATUS 32
39#define UV_ACT_STATUS_MASK 0x3 40#define UV_ACT_STATUS_MASK 0x3
@@ -338,6 +339,7 @@ struct bau_control {
338 int timeout_tries; 339 int timeout_tries;
339 int ipi_attempts; 340 int ipi_attempts;
340 int conseccompletes; 341 int conseccompletes;
342 int baudisabled;
341 int set_bau_off; 343 int set_bau_off;
342 short cpu; 344 short cpu;
343 short uvhub_cpu; 345 short uvhub_cpu;
@@ -389,6 +391,8 @@ struct ptc_stats {
389 unsigned long s_busy; /* status stayed busy past s/w timer */ 391 unsigned long s_busy; /* status stayed busy past s/w timer */
390 unsigned long s_throttles; /* waits in throttle */ 392 unsigned long s_throttles; /* waits in throttle */
391 unsigned long s_retry_messages; /* retry broadcasts */ 393 unsigned long s_retry_messages; /* retry broadcasts */
394 unsigned long s_bau_reenabled; /* for bau enable/disable */
395 unsigned long s_bau_disabled; /* for bau enable/disable */
392 /* destination statistics */ 396 /* destination statistics */
393 unsigned long d_alltlb; /* times all tlb's on this cpu were flushed */ 397 unsigned long d_alltlb; /* times all tlb's on this cpu were flushed */
394 unsigned long d_onetlb; /* times just one tlb on this cpu was flushed */ 398 unsigned long d_onetlb; /* times just one tlb on this cpu was flushed */