[PATCH v2] x86, UV: BAU performance and error recovery

Previous thread: [PATCH 1/3 v4] Add tracing_off_event() to stop tracing when a bug or warning occur by Chase Douglas on Wednesday, April 14, 2010 - 9:20 am. (19 messages)

Next thread: Re: USB transfer_buffer allocations on 64bit systems by Alan Stern on Wednesday, April 14, 2010 - 11:15 am. (7 messages)
From: Cliff Wickman
Date: Wednesday, April 14, 2010 - 9:35 am

This patch updates 2.6.34 up to what we've learned about
BAU handling up to 4/14/2010.   -cw

- increases performance of the interrupt handler
- releases timed-out software acknowledge resources
- recovers from continuous-busy status due to a hardware issue
- adds a 'throttle' to keep a uvhub from sending more than a specified number
  of broadcasts concurrently (work around the hardware issue)
- provides a 'nobau' boot command line option
- renames 'pnode' and 'node' to 'uvhub' (the 'node' terminology is ambiguous)
- adds some new statistics about the scope of broadcasts, retries, the
  hardware issue and the 'throttle'

(Ingo, these are cleanups you suggested on 3/12)
- splits off new function uv_bau_retry_msg() from uv_bau_process_message()
  per community coding style feedback.
- simplifies the argument list to uv_bau_process_message(), per community
  coding style feedback.

This patch depends on patch
   http://marc.info/?l=linux-kernel&m=126825393617669&w=2
   x86, UV: Cleanup of UV header for MMR definitions

Diffed against 2.6.34-rc4

Signed-off-by: Cliff Wickman <cpw@sgi.com>
---
 arch/x86/include/asm/uv/uv_bau.h |  249 +++++--
 arch/x86/kernel/tlb_uv.c         | 1265 +++++++++++++++++++++++++++------------
 2 files changed, 1073 insertions(+), 441 deletions(-)

Index: 100414.linux.2.6.34-rc4/arch/x86/include/asm/uv/uv_bau.h
===================================================================
--- 100414.linux.2.6.34-rc4.orig/arch/x86/include/asm/uv/uv_bau.h
+++ 100414.linux.2.6.34-rc4/arch/x86/include/asm/uv/uv_bau.h
@@ -27,13 +27,14 @@
  * set 2 is at BASE + 2*512, set 3 at BASE + 3*512, and so on.
  *
  * We will use 31 sets, one for sending BAU messages from each of the 32
- * cpu's on the node.
+ * cpu's on the uvhub.
  *
  * TLB shootdown will use the first of the 8 descriptors of each set.
  * Each of the descriptors is 64 bytes in size (8*64 = 512 bytes in a set).
  */
 
 #define UV_ITEMS_PER_DESCRIPTOR		8
+#define MAX_BAU_CONCURRENT		3
 ...
From: Ingo Molnar
Date: Wednesday, April 14, 2010 - 9:51 am

I've queued it up for v2.6.35.

Thanks,

	Ingo
--

From: tip-bot for Cliff Wickman
Date: Wednesday, April 14, 2010 - 12:13 pm

Commit-ID:  b8f7fb13d2d7ff14818fd1d3edd8b834d38b0217
Gitweb:     http://git.kernel.org/tip/b8f7fb13d2d7ff14818fd1d3edd8b834d38b0217
Author:     Cliff Wickman <cpw@sgi.com>
AuthorDate: Wed, 14 Apr 2010 11:35:46 -0500
Committer:  Ingo Molnar <mingo@elte.hu>
CommitDate: Wed, 14 Apr 2010 18:49:53 +0200

x86, UV: Improve BAU performance and error recovery

- increase performance of the interrupt handler

- release timed-out software acknowledge resources

- recover from continuous-busy status due to a hardware issue

- add a 'throttle' to keep a uvhub from sending more than a
  specified number of broadcasts concurrently (work around the hardware issue)

- provide a 'nobau' boot command line option

- rename 'pnode' and 'node' to 'uvhub' (the 'node' terminology
  is ambiguous)

- add some new statistics about the scope of broadcasts, retries, the
  hardware issue and the 'throttle'

- split off new function uv_bau_retry_msg() from
  uv_bau_process_message() per community coding style feedback.

- simplify the argument list to uv_bau_process_message(), per
  community coding style feedback.

Signed-off-by: Cliff Wickman <cpw@sgi.com>
Cc: linux-mm@kvack.org
Cc: Jack Steiner <steiner@sgi.com>
Cc: Russ Anderson <rja@sgi.com>
Cc: Mike Travis <travis@sgi.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
LKML-Reference: <E1O25Z4-0004Ur-PB@eag09.americas.sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/include/asm/uv/uv_bau.h |  247 ++++++---
 arch/x86/kernel/tlb_uv.c         | 1270 +++++++++++++++++++++++++++-----------
 2 files changed, 1075 insertions(+), 442 deletions(-)

diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
index b414d2b..aa558ac 100644
--- a/arch/x86/include/asm/uv/uv_bau.h
+++ b/arch/x86/include/asm/uv/uv_bau.h
@@ -27,13 +27,14 @@
  * set 2 is at BASE + 2*512, set 3 at BASE + 3*512, and so on.
  *
  * We will use 31 sets, one for sending BAU messages from each of the ...
Previous thread: [PATCH 1/3 v4] Add tracing_off_event() to stop tracing when a bug or warning occur by Chase Douglas on Wednesday, April 14, 2010 - 9:20 am. (19 messages)

Next thread: Re: USB transfer_buffer allocations on 64bit systems by Alan Stern on Wednesday, April 14, 2010 - 11:15 am. (7 messages)