[PATCH 0/6] x86/platform/uv/BAU: UV4 message completion and initialization updates

From: Andrew Banman
Date: Tue Feb 14 2017 - 20:59:19 EST

The following patch series adds the necessary functionality to make the BAU
on UV4 operational. The purpose of these patches is to implement the correct
message completion logic on UV4 and to fix two initialization errors.

As of this patch set, the BAU operates without errors and performance tests
show TLB shootdowns take up to 42% less time with the BAU enabled.

The patches are summarized as follows:

(1) Make the wait_completion routine part of the bau_operations interface,
and add a uv4_wait_completion routine to employ new completion logic.

The message completion logic for previous generations relies on software-
defined timeouts that are not implemented on UV4. Without these patches,
the BAU driver on UV4 erroneously identifies a UV2-WAR timeout during
normal operation.

[PATCH 1/6] x86/platform/uv/BAU: Declare bau_operations struct after
[PATCH 2/6] x86/platform/uv/BAU: Add status_mmr_loc to locate message
[PATCH 3/6] x86/platform/uv/BAU: Add wait_completion to bau_operations
[PATCH 4/6] x86/platform/uv/BAU: Implement uv4_wait_completion with

(2) Fix an initialization error in which writing to the software acknowledge
clear register causes a HUB error to assert, resulting in an NMI.

[PATCH 5/6] x86/platform/uv/BAU: Remove initial write to swack

(3) Populate a message payload field to verify messages at the destination.
Without this verification, the destination agent triggers a HUB error,
resulting in an NMI.

[PATCH 6/6] x86/platform/uv/BAU: Add payload descriptor qualifier

Please see the commit messages for details on the motivation and content of
each patch.

Thank you,

Andrew Banman
Linux Kernel Engineer
Hewlett Packard Enterprise