public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Dimitri Sivanich <sivanich@hpe.com>
To: Dave Hansen <dave.hansen@intel.com>
Cc: "Linux Kernel Mailing List" <linux-kernel@vger.kernel.org>,
	"Jiri Wiesner" <jwiesner@suse.de>,
	"Steve Wahl" <steve.wahl@hpe.com>,
	"Justin Ernst" <justin.ernst@hpe.com>,
	"Kyle Meyer" <kyle.meyer@hpe.com>,
	"Russ Anderson" <russ.anderson@hpe.com>,
	"Thomas Gleixner" <tglx@linutronix.de>,
	"Ingo Molnar" <mingo@redhat.com>,
	"Borislav Petkov" <bp@alien8.de>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	x86@kernel.org, "H. Peter Anvin" <hpa@zytor.com>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	"Ilpo Järvinen" <ilpo.jarvinen@linux.intel.com>,
	"Marco Elver" <elver@google.com>,
	"Guilherme G. Piccoli" <gpiccoli@igalia.com>,
	"Nikunj A Dadhania" <nikunj@amd.com>,
	"Xin Li (Intel)" <xin@zytor.com>,
	"Dimitri Sivanich" <dimitri.sivanich@hpe.com>
Subject: Re: [PATCH v3] x86/tsc: Disable clocksource watchdog for TSC on recent UV
Date: Tue, 7 Oct 2025 12:42:15 -0500	[thread overview]
Message-ID: <aOVQ9xWyAJzecOY0@hpe.com> (raw)
In-Reply-To: <20264c7b-36dd-4fd3-a755-3f46584f37bc@intel.com>

On Tue, Oct 07, 2025 at 09:48:58AM -0700, Dave Hansen wrote:
> On 10/7/25 09:32, Dimitri Sivanich wrote:
> > +static inline int is_uvx_hub(void) { return 0; }
> > +static inline int is_uvy_hub(void) { return 0; }
> > +static inline int is_uv_hub(void) { return 0; }
> >  
> >  #endif	/* X86_UV */
> >  
> > diff --git a/arch/x86/include/asm/uv/uv_hub.h b/arch/x86/include/asm/uv/uv_hub.h
> > index ea877fd83114..6e085ce8fc02 100644
> > --- a/arch/x86/include/asm/uv/uv_hub.h
> > +++ b/arch/x86/include/asm/uv/uv_hub.h
> > @@ -246,6 +246,7 @@ static inline int is_uv5_hub(void) { return is_uv(UV5); }
> >   * then test if is UV4.
> >   */
> >  
> > +#ifdef CONFIG_X86_UV
> >  /* UVX class: UV2,3,4 */
> >  static inline int is_uvx_hub(void) { return is_uv(UVX); }
> >  
> > @@ -254,6 +255,7 @@ static inline int is_uvy_hub(void) { return is_uv(UVY); }
> >  
> >  /* Any UV Hubbed System */
> >  static inline int is_uv_hub(void) { return is_uv(UV_ANY); }
> > +#endif
> 
> Defining those helpers across two different headers seems like a recipe
> for pain.
> 
> I suspect a big chunk of those stubs (and their #ifdefs could completely
> go away if you _just_ did:
> 
> #ifdef CONFIG_X86_UV
> static inline int uv_hub_type(void)
> {
>         return uv_hub_info->hub_type;
> }
> #else
> static inline int uv_hub_type(void)
> {
> 	return 0;
> }
> #endif
> 
> In any case, this is precisely the kind of patch that would be best
> refactored into two piece: one to expose the is_uv...() function and
> another to actually use it.
> 
> Also, at this point, this:
> 
> >  	if (boot_cpu_has(X86_FEATURE_CONSTANT_TSC) &&
> >  	    boot_cpu_has(X86_FEATURE_NONSTOP_TSC) &&
> >  	    boot_cpu_has(X86_FEATURE_TSC_ADJUST) &&
> > -	    topology_max_packages() <= 4)
> > +	    (topology_max_packages() <= 4 || is_uvy_hub()))
> >  		tsc_disable_clocksource_watchdog();
> 
> has IMNHO gotten out of hand.
> 
> It should probably be:
> 
>  	if (boot_cpu_has(X86_FEATURE_CONSTANT_TSC) &&
>  	    boot_cpu_has(X86_FEATURE_NONSTOP_TSC) &&
>  	    boot_cpu_has(X86_FEATURE_TSC_ADJUST) &&
> 	    platform_is_exempt_from_watchdog())
>  		tsc_disable_clocksource_watchdog();
> 
> In addition, 233756a640be talked quite a bit about *why* the 4-socket
> line was chosen. This needs to have a similar explanation for UV systems.

I will add the following to the description:

"HPE UV hardware and firmware is designed to ensure a reliable and synchronized
 TSC mechanism.  Comparing the TSC against secondary clocksources can result in
 false positives due to variable access latency caused by system traffic.  The
 best course of action against these false positives has been found to simply
 disable watchdog checking of the TSC.  Currently we recommend that customers
 apply 'tsc=nowatchdog' to the kernel command line."

The requested code changes will be forthcoming.

  reply	other threads:[~2025-10-07 17:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-07 16:32 [PATCH v3] x86/tsc: Disable clocksource watchdog for TSC on recent UV Dimitri Sivanich
2025-10-07 16:48 ` Dave Hansen
2025-10-07 17:42   ` Dimitri Sivanich [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-08-20 19:54 Dimitri Sivanich
2025-09-11 13:21 ` 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=aOVQ9xWyAJzecOY0@hpe.com \
    --to=sivanich@hpe.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dimitri.sivanich@hpe.com \
    --cc=elver@google.com \
    --cc=gpiccoli@igalia.com \
    --cc=hpa@zytor.com \
    --cc=ilpo.jarvinen@linux.intel.com \
    --cc=justin.ernst@hpe.com \
    --cc=jwiesner@suse.de \
    --cc=kyle.meyer@hpe.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=nikunj@amd.com \
    --cc=peterz@infradead.org \
    --cc=russ.anderson@hpe.com \
    --cc=steve.wahl@hpe.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    --cc=xin@zytor.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox