RE: [PATCH 4.4 10/24] x86/fpu: Hard-disable lazy FPU mode

From: Daniel Sangorrin
Date: Fri Jun 15 2018 - 05:50:44 EST


> -----Original Message-----
> From: 'Greg Kroah-Hartman' [mailto:gregkh@xxxxxxxxxxxxxxxxxxx]
> Sent: Friday, June 15, 2018 4:06 PM
> To: Daniel Sangorrin <daniel.sangorrin@xxxxxxxxxxxxx>
> Cc: linux-kernel@xxxxxxxxxxxxxxx; stable@xxxxxxxxxxxxxxx; 'Andy Lutomirski'
> <luto@xxxxxxxxxx>; 'Rik van Riel' <riel@xxxxxxxxxx>; 'Borislav Petkov'
> <bp@xxxxxxxxx>; 'Brian Gerst' <brgerst@xxxxxxxxx>; 'Dave Hansen'
> <dave.hansen@xxxxxxxxxxxxxxx>; 'Denys Vlasenko' <dvlasenk@xxxxxxxxxx>;
> 'Fenghua Yu' <fenghua.yu@xxxxxxxxx>; 'H. Peter Anvin' <hpa@xxxxxxxxx>; 'Josh
> Poimboeuf' <jpoimboe@xxxxxxxxxx>; 'Linus Torvalds'
> <torvalds@xxxxxxxxxxxxxxxxxxxx>; 'Oleg Nesterov' <oleg@xxxxxxxxxx>; 'Peter
> Zijlstra' <peterz@xxxxxxxxxxxxx>; 'Quentin Casasnovas'
> <quentin.casasnovas@xxxxxxxxxx>; 'Thomas Gleixner' <tglx@xxxxxxxxxxxxx>;
> pbonzini@xxxxxxxxxx; 'Ingo Molnar' <mingo@xxxxxxxxxx>
> Subject: Re: [PATCH 4.4 10/24] x86/fpu: Hard-disable lazy FPU mode
>
> On Fri, Jun 15, 2018 at 02:23:08PM +0900, Daniel Sangorrin wrote:
> > > -----Original Message-----
> > > From: stable-owner@xxxxxxxxxxxxxxx [mailto:stable-owner@xxxxxxxxxxxxxxx]
> On
> > > Behalf Of 'Greg Kroah-Hartman'
> > > Sent: Friday, June 15, 2018 1:56 PM
> > > To: Daniel Sangorrin <daniel.sangorrin@xxxxxxxxxxxxx>
> > > Cc: linux-kernel@xxxxxxxxxxxxxxx; stable@xxxxxxxxxxxxxxx; 'Andy Lutomirski'
> > > <luto@xxxxxxxxxx>; 'Rik van Riel' <riel@xxxxxxxxxx>; 'Borislav Petkov'
> > > <bp@xxxxxxxxx>; 'Brian Gerst' <brgerst@xxxxxxxxx>; 'Dave Hansen'
> > > <dave.hansen@xxxxxxxxxxxxxxx>; 'Denys Vlasenko' <dvlasenk@xxxxxxxxxx>;
> > > 'Fenghua Yu' <fenghua.yu@xxxxxxxxx>; 'H. Peter Anvin' <hpa@xxxxxxxxx>;
> 'Josh
> > > Poimboeuf' <jpoimboe@xxxxxxxxxx>; 'Linus Torvalds'
> > > <torvalds@xxxxxxxxxxxxxxxxxxxx>; 'Oleg Nesterov' <oleg@xxxxxxxxxx>; 'Peter
> > > Zijlstra' <peterz@xxxxxxxxxxxxx>; 'Quentin Casasnovas'
> > > <quentin.casasnovas@xxxxxxxxxx>; 'Thomas Gleixner' <tglx@xxxxxxxxxxxxx>;
> > > pbonzini@xxxxxxxxxx; 'Ingo Molnar' <mingo@xxxxxxxxxx>
> > > Subject: Re: [PATCH 4.4 10/24] x86/fpu: Hard-disable lazy FPU mode
> > >
> > > On Fri, Jun 15, 2018 at 01:24:27PM +0900, Daniel Sangorrin wrote:
> > > > Hi Greg,
> > > >
> > > > > /* Intel-defined CPU features, CPUID level 0x00000001 (ecx), word 4 */
> > > > > --- a/arch/x86/include/asm/fpu/internal.h
> > > > > +++ b/arch/x86/include/asm/fpu/internal.h
> > > > > @@ -58,7 +58,7 @@ extern u64 fpu__get_supported_xfeatures_
> > > > > */
> > > > > static __always_inline __pure bool use_eager_fpu(void)
> > > > > {
> > > > > - return static_cpu_has_safe(X86_FEATURE_EAGER_FPU);
> > > > > + return true;
> > > > > }
> > > >
> > > > Since this function returns always true then we can remove the code
> depending on
> > > lazy FPU mode.
> > > > Actually this has already been done in "x86/fpu: Remove use_eager_fpu()"
> > > > Ref: https://patchwork.kernel.org/patch/9365883/
> > > >
> > > > > static void __init fpu__init_parse_early_param(void)
> > > > > {
> > > > > - if (cmdline_find_option_bool(boot_command_line,
> "eagerfpu=off")) {
> > > > > - eagerfpu = DISABLE;
> > > > > - fpu__clear_eager_fpu_features();
> > > > > - }
> > > >
> > > > Since this patch removes the kernel boot parameter "eagerfpu", maybe we
> should
> > > remove it from the Documentation.
> > > > This has also been done by commit "x86/fpu: Finish excising 'eagerfpu'"
> > > > Ref: https://patchwork.kernel.org/patch/9380673/
> > > >
> > > > I will try backporting those patches unless anyone has any objections.
> > >
> > > What are the git commit ids of those patches in Linus's tree? No need
> > > to point to patchwork links, I don't use that tool.
> >
> > OK, I got it.
> >
> > "x86/fpu: Remove use_eager_fpu()":
> c592b57347069abfc0dcad3b3a302cf882602597
> > "x86/fpu: Finish excising 'eagerfpu'":
> e63650840e8b053aa09ad934877e87e9941ed135
>
> Minor nit. For kernel commits, the "normal" way we reference them looks
> like this:
> c592b5734706 ("x86/fpu: Remove use_eager_fpu()")
> e63650840e8b ("x86/fpu: Finish excising 'eagerfpu'")
>
> Which makes it much easier to read and understand. That's what we use
> for the "Fixes:" tag in commits and in other places (text in commit
> messages.)
>
> To automatically generate that format, you can just do:
> git show -s --abbrev-commit --abbrev=12 --pretty=format:"%h
> (\"%s\")%n"
>
> I recommend just setting up an alias for the above line, otherwise it's
> a pain to have to remember how to do it all the time. Here's what I do:
> $ alias gsr='git show -s --abbrev-commit --abbrev=12 --pretty=format:"%h
> (\"%s\")%n"'
> $ gsr c592b57347069abfc0dcad3b3a302cf882602597
> c592b5734706 ("x86/fpu: Remove use_eager_fpu()")
>

Thanks a lot for the detailed explanation.

> > Unfortunately, they don't apply cleanly to stable kernels.
>
> Should be very simple to backport if you want to. Also I need copies
> for the 4.9.y tree as well if you do so.

OK, I will do it after the OSS Japan next week if you don't mind. I also want to run some tests for the FPU and try different boot parameter combinations (e.g. no387, nofxsr etc) to check I didn't break anything.

Thanks,
Daniel



>
> thanks,
>
> greg k-h