aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/include/asm/uv
diff options
context:
space:
mode:
authorAndrew Banman <abanman@hpe.com>2017-03-09 11:42:12 -0500
committerThomas Gleixner <tglx@linutronix.de>2017-03-13 09:26:29 -0400
commitdfeb28f068ff9cc4f714c7d1edaf61597ea1768b (patch)
tree738ac9ba84d3e7ff43aabbe29a79fb7fb0063bec /arch/x86/include/asm/uv
parent8e3b21b6dbf0318d5b3a598572acc23f07189c40 (diff)
x86/platform/uv/BAU: Add status mmr location fields to bau_control
The location of the ERROR and BUSY status bits depends on the descriptor index, i.e. the CPU, of the message. Since this index does not change, there is no need to calculate the mmr and index location during message processing. The less work we do in the hot path the better. Add status_mmr and status_index fields to bau_control and compute their values during initialization. Add kerneldoc descriptions for the new fields. Update uv*_wait_completion to use these fields rather than receiving the information as parameters. Signed-off-by: Andrew Banman <abanman@hpe.com> Acked-by: Ingo Molnar <mingo@kernel.org> Acked-by: Mike Travis <mike.travis@hpe.com> Cc: sivanich@hpe.com Cc: rja@hpe.com Cc: akpm@linux-foundation.org Link: http://lkml.kernel.org/r/1489077734-111753-5-git-send-email-abanman@hpe.com Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/x86/include/asm/uv')
-rw-r--r--arch/x86/include/asm/uv/uv_bau.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
index 695b873f4fd3..0ec7631ad651 100644
--- a/arch/x86/include/asm/uv/uv_bau.h
+++ b/arch/x86/include/asm/uv/uv_bau.h
@@ -601,8 +601,12 @@ struct uvhub_desc {
601 struct socket_desc socket[2]; 601 struct socket_desc socket[2];
602}; 602};
603 603
604/* 604/**
605 * one per-cpu; to locate the software tables 605 * struct bau_control
606 * @status_mmr: location of status mmr, determined by uvhub_cpu
607 * @status_index: index of ERR|BUSY bits in status mmr, determined by uvhub_cpu
608 *
609 * Per-cpu control struct containing CPU topology information and BAU tuneables.
606 */ 610 */
607struct bau_control { 611struct bau_control {
608 struct bau_desc *descriptor_base; 612 struct bau_desc *descriptor_base;
@@ -620,6 +624,8 @@ struct bau_control {
620 int timeout_tries; 624 int timeout_tries;
621 int ipi_attempts; 625 int ipi_attempts;
622 int conseccompletes; 626 int conseccompletes;
627 u64 status_mmr;
628 int status_index;
623 bool nobau; 629 bool nobau;
624 short baudisabled; 630 short baudisabled;
625 short cpu; 631 short cpu;