From: Mike Travis <travis@sgi.com>
To: Ingo Molnar <mingo@kernel.org>
Cc: Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Thomas Gleixner <tglx@linutronix.de>,
Andrew Morton <akpm@linux-foundation.org>,
Len Brown <len.brown@intel.com>,
Dimitri Sivanich <sivanich@sgi.com>, Russ Anderson <rja@sgi.com>,
John Estabrook <estabrook@sgi.com>,
Andrew Banman <abanman@sgi.com>, Nathan Zimmer <nzimmer@sgi.com>,
x86@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 07/21] X86_64, UV: Disable Obsolete APIC ID fixup code used only on UV1
Date: Tue, 3 May 2016 07:43:12 -0700 [thread overview]
Message-ID: <5728B900.8050102@sgi.com> (raw)
In-Reply-To: <20160503073512.GA13474@gmail.com>
On 5/3/2016 12:35 AM, Ingo Molnar wrote:
>
> * Mike Travis <travis@sgi.com> wrote:
>
>> +config X86_UV1_SUPPORTED
>> + bool "SGI Ultraviolet Series 1 Supported"
>> + depends on X86_UV
>
> So I still think it's much simpler if we simply eliminate this Kconfig
> complication and have it all compatible. AFAICS the runtime impact on newer
> systems comes down mostly to a single unlikely branch:
>
>> static unsigned int x2apic_get_apic_id(unsigned long x)
>> {
>> - unsigned int id;
>> + if (likely(!uv1_apic_driver))
>> + return x;
>
> Thanks,
>
> Ingo
>
The total removal of the Kconfig option affects approximately 84 total
references not counting further references to definitions that include
the is_uv1_hub() function call. Here are some of the ones not used
within MMR address or field selection defines:
31> hunt is_uv1_hub | grep -v arch/x86/include/asm/uv/uv_mmrs.h
arch/x86/include/asm/uv/uv_bau.h:#define UV_NET_ENDPOINT_INTD (is_uv1_hub() ? \
arch/x86/include/asm/uv/uv_bau.h:#define UV_INTD_SOFT_ACK_TIMEOUT_PERIOD (is_uv1_hub() ? \
arch/x86/kernel/apic/x2apic_uv_x.c: if (is_uv1_hub()) {
arch/x86/kernel/apic/x2apic_uv_x.c: } else if (is_uv1_hub()) {
arch/x86/kernel/apic/x2apic_uv_x.c: if (is_uv1_hub() || is_uv2_hub() || is_uv3_hub()) {
arch/x86/kernel/apic/x2apic_uv_x.c: is_uv1_hub() ? "UV100/1000" : NULL;
arch/x86/platform/uv/tlb_uv.c: if (is_uv1_hub())
arch/x86/platform/uv/tlb_uv.c: if (is_uv1_hub()) {
arch/x86/platform/uv/tlb_uv.c: if (is_uv1_hub())
arch/x86/platform/uv/tlb_uv.c: if (!is_uv1_hub())
arch/x86/platform/uv/uv_time.c: if (is_uv1_hub())
arch/x86/platform/uv/uv_time.c: if (is_uv1_hub())
sgikmods/gru/kernel/gru_rev_2_wars.h:#define UV_GR0_HRB_MMR_CONFIG (is_uv1_hub() ? 0x400128 : 0xc00128)
sgikmods/gru/kernel/gru_rev_2_wars.h:#define UV_GR1_HRB_MMR_CONFIG (is_uv1_hub() ? 0x800128 : 0x1000128)
sgikmods/gru/kernel/gru_ugly_kabi_hack.h:#define is_uv1_hub() 1
sgikmods/gru/kernel/gru_ugly_kabi_hack.h:#define is_uv3_hub() (!(is_uv1_hub() || is_uv2_hub()))
sgikmods/gru/kernel/gruhandles.c: if (is_uv1_hub()) {
sgikmods/gru/kernel/grukservices.c: if (is_uv1_hub() && head == 0) {
sgikmods/gru/kernel/grukservices.c: if (is_uv1_hub() && (mq->head.head == 0)) {
sgikmods/gru/kernel/grufile.c: vdata->vd_tlb_preload_count = !is_uv1_hub() ? req.tlb_preload_count : 0;
sgikmods/gru/kernel/grufile.c: tlb_preload_count = is_uv1_hub() ? 0 : GRUTLBPRELOADCNT;
sgikmods/gru/kernel/grumain.c: if (is_uv1_hub() || is_uv2_hub()) {
sgikmods/hwperf/kernel/dashboard_mmrs.h: * #define UVHxxx (is_uv1_hub() ? UV1Hxxx :
sgikmods/hwperf/kernel/uv2_mmrs_hwperf.h: * #define UVH_xxx (is_uv1_hub() ? UV1H_xxx : UV2H_xxx)
sgikmods/hwperf/kernel/hwperf_main.c: return !(is_uv1_hub() || is_uv2_hub()); // uv_hub_info->hub_revision >= UV3_HUB_REVISION_BASE;
sgikmods/hwperf/kernel/hwperf_main.c: if (is_uv1_hub()) {
There are 55 references within uv_mmrs.h that affect any references to
UV1 via MMR address or field selection, such as this one:
#define UV1H_GR0_TLB_MMR_CONTROL 0x401080UL
#define UV2H_GR0_TLB_MMR_CONTROL 0xc01080UL
#define UV3H_GR0_TLB_MMR_CONTROL 0xc01080UL
#define UV4H_GR0_TLB_MMR_CONTROL 0x601080UL
#define UVH_GR0_TLB_MMR_CONTROL ( \
is_uv1_hub() ? UV1H_GR0_TLB_MMR_CONTROL : \
is_uv2_hub() ? UV2H_GR0_TLB_MMR_CONTROL : \
is_uv3_hub() ? UV3H_GR0_TLB_MMR_CONTROL : \
/*is_uv4_hub*/ UV4H_GR0_TLB_MMR_CONTROL)
Therefore would it be all right to at least leave in the Kconfig
option and default it to "UV1" enabled? Or do you feel strongly that
the simplification by removing the Kconfig option is worth whatever
performance hit will be encountered by distros, that will never be
supporting UV1 systems in any future kernel releases? And to
further that point, it will also impose an artificial performance
hit on SGI UV systems in performance benchmark comparisons?
Please let me know what you decide and I will post the updated
patches immediately.
Thanks!
Mike
next prev parent reply other threads:[~2016-05-03 14:43 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-29 21:54 [PATCH 00/21] X86_64, UV: Update kernel for SGI UV4 support Mike Travis
2016-04-29 21:54 ` [PATCH 01/21] X86_64, UV: Add Initial UV4 definitions Mike Travis
2016-05-04 7:15 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 02/21] X86_64, UV: Add UV Architecture Defines Mike Travis
2016-05-04 7:15 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 03/21] X86_64, UV: Add UV4 Specific Defines Mike Travis
2016-05-04 7:16 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 04/21] X86_64, UV: Add UV MMR Illegal Access Function Mike Travis
2016-05-04 7:16 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 05/21] X86_64, UV: Prep for UV4 MMR updates Mike Travis
2016-05-04 7:16 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 06/21] X86_64, UV: Add UV4 Specific MMR definitions Mike Travis
2016-05-04 7:17 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 07/21] X86_64, UV: Disable Obsolete APIC ID fixup code used only on UV1 Mike Travis
2016-05-03 7:35 ` Ingo Molnar
2016-05-03 14:43 ` Mike Travis [this message]
2016-04-29 21:54 ` [PATCH 08/21] X86_64, UV: Clean up redunduncies after merge of UV4 MMR definitions Mike Travis
2016-05-04 7:17 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 09/21] X86_64, UV: Update MMIOH setup function to work for both UV3 and UV4 Mike Travis
2016-05-04 7:18 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 10/21] X86_64, UV: Create per cpu info structs to replace per hub info structs Mike Travis
2016-05-04 7:18 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 11/21] X86_64, UV: Move scir info to the per cpu info struct Mike Travis
2016-05-04 7:18 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 12/21] X86_64, UV: Move blade local processor ID " Mike Travis
2016-05-04 7:19 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 13/21] X86_64, UV: Allocate common per node hub info structs on local node Mike Travis
2016-05-04 7:19 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 14/21] X86_64, UV: Fold blade info into per node hub info structs Mike Travis
2016-05-04 7:19 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 15/21] X86_64, UV: Add UV4 addressing discovery function Mike Travis
2016-05-04 7:20 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 16/21] X86_64, UV: Add obtaining GAM Range Table from UV BIOS Mike Travis
2016-05-04 7:20 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 17/21] X86_64, UV: Support UV4 socket address changes Mike Travis
2016-05-04 7:21 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 18/21] X86_64, UV: Build GAM reference tables Mike Travis
2016-05-04 7:21 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 19/21] X86_64, UV: Update physical address conversions for UV4 Mike Travis
2016-05-04 7:21 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Mike Travis
2016-04-29 21:54 ` [PATCH 20/21] X86_64, UV: Remove Obsolete GRU MMR address translation Mike Travis
2016-05-04 7:22 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Dimitri Sivanich
2016-04-29 21:54 ` [PATCH 21/21] X86_64, UV: Fix incorrect nodes and pnodes for cpuless and memoryless nodes Mike Travis
2016-05-04 7:22 ` [tip:x86/platform] x86/platform/UV: " tip-bot for Dimitri Sivanich
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=5728B900.8050102@sgi.com \
--to=travis@sgi.com \
--cc=abanman@sgi.com \
--cc=akpm@linux-foundation.org \
--cc=estabrook@sgi.com \
--cc=hpa@zytor.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=nzimmer@sgi.com \
--cc=rja@sgi.com \
--cc=sivanich@sgi.com \
--cc=tglx@linutronix.de \
--cc=x86@kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox