Re: [RFC PATCH 23/23] x86/process: Reset hardware history in context switch

From: Ricardo Neri
Date: Thu Oct 06 2022 - 18:49:29 EST


On Thu, Oct 06, 2022 at 10:35:36AM +0200, Peter Zijlstra wrote:
> On Mon, Oct 03, 2022 at 04:07:58PM -0700, Ricardo Neri wrote:
> > On Tue, Sep 27, 2022 at 02:52:24PM +0200, Peter Zijlstra wrote:
> > > On Fri, Sep 09, 2022 at 04:12:05PM -0700, Ricardo Neri wrote:
> > >
> > > > +void reset_hardware_history(void)
> > > > +{
> > > > + if (!static_cpu_has(X86_FEATURE_HRESET))
> > > > + return;
> >
> > If I used cpu_feature_enabled(X86_FEATURE_ITD) along with the CONFIG_HFI_
> > THERMAL and its corresponding DISABLE_MASK bit the code below would be
> > compiled out.
>
> Nobody cares about compiled out -- distro's must enable all this.

I see.

> So
> what counts is the code size, and the alternative is smaller.
>
> > > > +
> > > > + asm volatile("mov %0, %%eax;" __ASM_HRESET "\n" : :
> > > > + "r" (hardware_history_features) : "%rax");
> > > > +}
> > >
> > > asm_inline volatile (ALTERNATIVE("", __ASM_HRESET, X86_FEATURE_HRESET)
> > > : : "a" (hardware_history_features) : "memory");
> >
> > Do you still prefer have implemented as an ALTERNATIVE?
>
> Yes, look at the generated code.

I did compare the sizes of the two options as several NOPs are added at
the end. I will take your code.

Thanks and BR,
Ricardo