On Wed, 4 Oct 2017, Mike Travis wrote:
> On 10/4/2017 2:27 AM, Peter Zijlstra wrote:
> > On Mon, Oct 02, 2017 at 10:12:18AM -0500, mike.tra...@hpe.com wrote:
> > >   static void detect_art(void)
> > >   {
> > >           unsigned int unused[2];
> > >   -       if (boot_cpu_data.cpuid_level < ART_CPUID_LEAF)
> > > + if (boot_cpu_data.cpuid_level < ART_CPUID_LEAF || tsc_art_disabled)
> > >                   return;
> > >           /* Don't enable ART in a VM, non-stop TSC and TSC_ADJUST
> > > required */
> > 
> > 
> > So why can't we use is_uv_system() here an for the tsc_adjust thing?
> 
> I could.  I just thought that there may be future system arches that
> need the same facility?
> > 
> > Also (and I hate the name) tsc_multi_sync_resets is the reason you
> > cannot use ART, I don't think it makes sense to introduce yet another
> > knob.
> > 
> Okay.  I wasn't sure if there might be different causes for wanting one
> condition over the other.  So does this mean change this later test to
> use is_uv_system() or tsc_multi_sync_resets?

tsc_multi_sync_resets because that's the reason to disable ART as not all
sockets have the same TSC <-> ART offset.

Btw, your changelog is slightly wrong here:

> On systems where multiple chassis are reset asynchronously there is not a
> constant ratio between the ART frequency and the TSC time that can be
> provided by the boot cpu.

The ratio is actually the same as the frequencies should be the
same. Though the offset in that equation:

                            n
      TSC = offset + ART * ---
                            d

is different because that offset is basically TSC_ADJUST.

Thanks,

        tglx

Reply via email to