All of lore.kernel.org
 help / color / mirror / Atom feed
From: tip-bot for Andrew Banman <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: mingo@kernel.org, tglx@linutronix.de,
	torvalds@linux-foundation.org, hpa@zytor.com,
	peterz@infradead.org, sivanich@sgi.com, travis@sgi.com,
	abanman@sgi.com, linux-kernel@vger.kernel.org
Subject: [tip:x86/platform] x86/platform/uv/BAU: Add generic function pointers
Date: Thu, 22 Sep 2016 03:30:34 -0700	[thread overview]
Message-ID: <tip-5e4f96fe2a61c759d5d47f8112813618805c85a0@git.kernel.org> (raw)
In-Reply-To: <1474474161-265604-6-git-send-email-abanman@sgi.com>

Commit-ID:  5e4f96fe2a61c759d5d47f8112813618805c85a0
Gitweb:     http://git.kernel.org/tip/5e4f96fe2a61c759d5d47f8112813618805c85a0
Author:     Andrew Banman <abanman@sgi.com>
AuthorDate: Wed, 21 Sep 2016 11:09:16 -0500
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Thu, 22 Sep 2016 11:16:13 +0200

x86/platform/uv/BAU: Add generic function pointers

Many BAU functions have different implementations depending on the UV
version. Rather than switching on the uvhub_version throughout the driver,
we can define a set of operations for each version. This is especially
beneficial for UV4, which will require many new MMR read/write functions.

Currently, the set of abstracted functions are the same for UV1, UV2, and
UV3. The functions were chosen because each one will have a different
implementation for UV4. Other functions will be added as needed to handle
new implementations or to cleanup the existing differences between UV1,
UV2, and UV3, i.e. read_status and wait_completion.

Signed-off-by: Andrew Banman <abanman@sgi.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Mike Travis <travis@sgi.com>
Acked-by: Dimitri Sivanich <sivanich@sgi.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: akpm@linux-foundation.org
Cc: rja@sgi.com
Link: http://lkml.kernel.org/r/1474474161-265604-6-git-send-email-abanman@sgi.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/include/asm/uv/uv_bau.h | 11 +++++++++++
 arch/x86/platform/uv/tlb_uv.c    | 19 +++++++++++++++++++
 2 files changed, 30 insertions(+)

diff --git a/arch/x86/include/asm/uv/uv_bau.h b/arch/x86/include/asm/uv/uv_bau.h
index a46f270..a7a93a5 100644
--- a/arch/x86/include/asm/uv/uv_bau.h
+++ b/arch/x86/include/asm/uv/uv_bau.h
@@ -385,6 +385,17 @@ struct uv2_3_bau_msg_header {
 	/* bits 127:120 */
 };
 
+/* Abstracted BAU functions */
+struct bau_operations {
+	unsigned long (*read_l_sw_ack)(void);
+	unsigned long (*read_g_sw_ack)(int pnode);
+	unsigned long (*bau_gpa_to_offset)(unsigned long vaddr);
+	void (*write_l_sw_ack)(unsigned long mmr);
+	void (*write_g_sw_ack)(int pnode, unsigned long mmr);
+	void (*write_payload_first)(int pnode, unsigned long mmr);
+	void (*write_payload_last)(int pnode, unsigned long mmr);
+};
+
 /*
  * The activation descriptor:
  * The format of the message to send, plus all accompanying control
diff --git a/arch/x86/platform/uv/tlb_uv.c b/arch/x86/platform/uv/tlb_uv.c
index 34b2a48..a33a433 100644
--- a/arch/x86/platform/uv/tlb_uv.c
+++ b/arch/x86/platform/uv/tlb_uv.c
@@ -24,6 +24,18 @@
 #include <asm/irq_vectors.h>
 #include <asm/timer.h>
 
+static struct bau_operations ops;
+
+static struct bau_operations uv123_bau_ops = {
+	.bau_gpa_to_offset       = uv_gpa_to_offset,
+	.read_l_sw_ack           = read_mmr_sw_ack,
+	.read_g_sw_ack           = read_gmmr_sw_ack,
+	.write_l_sw_ack          = write_mmr_sw_ack,
+	.write_g_sw_ack          = write_gmmr_sw_ack,
+	.write_payload_first     = write_mmr_payload_first,
+	.write_payload_last      = write_mmr_payload_last,
+};
+
 /* timeouts in nanoseconds (indexed by UVH_AGING_PRESCALE_SEL urgency7 30:28) */
 static int timeout_base_ns[] = {
 		20,
@@ -2135,6 +2147,13 @@ static int __init uv_bau_init(void)
 	if (!is_uv_system())
 		return 0;
 
+	if (is_uv3_hub())
+		ops = uv123_bau_ops;
+	else if (is_uv2_hub())
+		ops = uv123_bau_ops;
+	else if (is_uv1_hub())
+		ops = uv123_bau_ops;
+
 	for_each_possible_cpu(cur_cpu) {
 		mask = &per_cpu(uv_flush_tlb_mask, cur_cpu);
 		zalloc_cpumask_var_node(mask, GFP_KERNEL, cpu_to_node(cur_cpu));

  reply	other threads:[~2016-09-22 10:31 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-20 22:31 [PATCH 0/9] arch/x86/platform/uv: add UV4 support to BAU Andrew Banman
2016-09-20 22:31 ` [PATCH 1/9] arch/x86/platform/uv: BAU cleanup: update printks Andrew Banman
2016-09-20 22:31 ` [PATCH 2/9] arch/x86/platform/uv: BAU cleanup: pq_init Andrew Banman
2016-09-20 22:31 ` [PATCH 3/9] arch/x86/platform/uv: BAU replace uv_physnodeaddr Andrew Banman
2016-09-20 22:31 ` [PATCH 4/9] arch/x86/platform/uv: BAU add generic function pointers Andrew Banman
2016-09-20 22:31 ` [PATCH 5/9] arch/x86/platform/uv: BAU use " Andrew Banman
2016-09-20 22:31 ` [PATCH 6/9] arch/x86/platform/uv: BAU UV4 populate uvhub_version Andrew Banman
2016-09-20 22:31 ` [PATCH 7/9] arch/x86/platform/uv: BAU UV4 disable software timeout Andrew Banman
2016-09-20 22:31 ` [PATCH 8/9] arch/x86/platform/uv: BAU UV4 fix payload queue setup Andrew Banman
2016-09-20 22:32 ` [PATCH 9/9] arch/x86/platform/uv: BAU UV4 add version-specific functions Andrew Banman
2016-09-21 12:55   ` Ingo Molnar
2016-09-21 15:53     ` andrew banman
2016-09-21 14:55 ` [PATCH 0/9] arch/x86/platform/uv: add UV4 support to BAU Thomas Gleixner
2016-09-21 16:09 ` [PATCHv2 0/10] " Andrew Banman
2016-09-21 16:09   ` [PATCH 01/10] arch/x86/platform/uv: BAU cleanup: vertical alignment Andrew Banman
2016-09-22 10:28     ` [tip:x86/platform] x86/platform/uv/BAU: Clean up " tip-bot for Andrew Banman
2016-09-21 16:09   ` [PATCH 02/10] arch/x86/platform/uv: BAU cleanup: update printks Andrew Banman
2016-09-22 10:29     ` [tip:x86/platform] x86/platform/uv/BAU: Clean up and " tip-bot for Andrew Banman
2016-09-21 16:09   ` [PATCH 03/10] arch/x86/platform/uv: BAU cleanup: pq_init Andrew Banman
2016-09-22 10:29     ` [tip:x86/platform] x86/platform/uv/BAU: Clean up pq_init() tip-bot for Andrew Banman
2016-09-21 16:09   ` [PATCH 04/10] arch/x86/platform/uv: BAU replace uv_physnodeaddr Andrew Banman
2016-09-22 10:30     ` [tip:x86/platform] x86/platform/uv/BAU: Convert uv_physnodeaddr() use to uv_gpa_to_offset() tip-bot for Andrew Banman
2016-09-21 16:09   ` [PATCH 05/10] arch/x86/platform/uv: BAU add generic function pointers Andrew Banman
2016-09-22 10:30     ` tip-bot for Andrew Banman [this message]
2016-09-21 16:09   ` [PATCH 06/10] arch/x86/platform/uv: BAU use " Andrew Banman
2016-09-22 10:31     ` [tip:x86/platform] x86/platform/uv/BAU: Use " tip-bot for Andrew Banman
2016-09-21 16:09   ` [PATCH 07/10] arch/x86/platform/uv: BAU UV4 populate uvhub_version Andrew Banman
2016-09-22 10:31     ` [tip:x86/platform] x86/platform/uv/BAU: Populate ->uvhub_version with UV4 version information tip-bot for Andrew Banman
2016-09-21 16:09   ` [PATCH 08/10] arch/x86/platform/uv: BAU UV4 disable software timeout Andrew Banman
2016-09-22 10:32     ` [tip:x86/platform] x86/platform/uv/BAU: Disable software timeout on UV4 hardware tip-bot for Andrew Banman
2016-09-21 16:09   ` [PATCH 09/10] arch/x86/platform/uv: BAU UV4 fix payload queue setup Andrew Banman
2016-09-22 10:32     ` [tip:x86/platform] x86/platform/uv/BAU: Fix payload queue setup on UV4 hardware tip-bot for Andrew Banman
2016-09-21 16:09   ` [PATCH 10/10] arch/x86/platform/uv: BAU UV4 add version-specific functions Andrew Banman
2016-09-22 10:33     ` [tip:x86/platform] x86/platform/uv/BAU: Add UV4-specific functions tip-bot for Andrew Banman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=tip-5e4f96fe2a61c759d5d47f8112813618805c85a0@git.kernel.org \
    --to=tipbot@zytor.com \
    --cc=abanman@sgi.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=peterz@infradead.org \
    --cc=sivanich@sgi.com \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=travis@sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.