summaryrefslogtreecommitdiff
path: root/arch/x86/include/asm/pci_x86.h
diff options
context:
space:
mode:
authorCliff Wickman <cpw@sgi.com>2012-06-22 08:14:59 -0500
committerIngo Molnar <mingo@kernel.org>2012-06-25 14:45:05 +0200
commit8b6e511e51f7e540c8e71022318ee4cc9a4567a7 (patch)
treef87dc032f316f908b83c9033b56aea99f1180157 /arch/x86/include/asm/pci_x86.h
parent26ef85770c765bb8b6b6922f8a413872dd8e3979 (diff)
x86/uv: Work around UV2 BAU hangs
On SGI's UV2 the BAU (Broadcast Assist Unit) driver can hang under a heavy load. To cure this: - Disable the UV2 extended status mode (see UV2_EXT_SHFT), as this mode changes BAU behavior in more ways then just delivering an extra bit of status. Revert status to just two meaningful bits, like UV1. - Use no IPI-style resets on UV2. Just give up the request for whatever the reason it failed and let it be accomplished with the legacy IPI method. - Use no alternate sending descriptor (the former UV2 workaround bcp->using_desc and handle_uv2_busy() stuff). Just disable the use of the BAU for a period of time in favor of the legacy IPI method when the h/w bug leaves a descriptor busy. -- new tunable: giveup_limit determines the threshold at which a hub is so plugged that it should do all requests with the legacy IPI method for a period of time -- generalize disable_for_congestion() (renamed disable_for_period()) for use whenever a hub should avoid using the BAU for a period of time Also: - Fix find_another_by_swack(), which is part of the UV2 bug workaround - Correct and clarify the statistics (new stats s_overipilimit, s_giveuplimit, s_enters, s_ipifordisabled, s_plugged, s_congested) Signed-off-by: Cliff Wickman <cpw@sgi.com> Link: http://lkml.kernel.org/r/20120622131459.GC31884@sgi.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'arch/x86/include/asm/pci_x86.h')
0 files changed, 0 insertions, 0 deletions