mbox series

[v2,0/5] x86: cpuid: improve support for broken CPUID configurations

Message ID 20220718141123.136106-1-mlevitsk@redhat.com
Headers show
Series x86: cpuid: improve support for broken CPUID configurations | expand

Message

Maxim Levitsky July 18, 2022, 2:11 p.m. UTC
This patch series aims to harden the cpuid code against the case when
the hypervisor exposes a broken CPUID configuration to the guest,
in the form of having a feature disabled but not features that depend on it.

This is the more generic way to fix kernel panic in aes-ni kernel driver,
which was triggered by CPUID configuration in which AVX is disabled but
not AVX2.

https://lore.kernel.org/all/20211103145231.GA4485@gondor.apana.org.au/T/

This was tested by booting a guest with AVX disabled and not AVX2,
and observing that both a warning is now printed in dmesg, and
that avx2 is gone from /proc/cpuinfo.

V2:

I hopefully addressed all the (very good) review feedback.

Best regards,
	Maxim Levitsky

Maxim Levitsky (5):
  perf/x86/intel/lbr: use setup_clear_cpu_cap instead of clear_cpu_cap
  x86/cpuid: refactor setup_clear_cpu_cap()/clear_cpu_cap()
  x86/cpuid: move filter_cpuid_features to cpuid-deps.c
  x86/cpuid: remove 'warn' parameter from filter_cpuid_features
  x86/cpuid: check for dependencies violations in CPUID and attempt to
    fix them

 arch/x86/events/intel/lbr.c       |  2 +-
 arch/x86/include/asm/cpufeature.h |  1 +
 arch/x86/kernel/cpu/common.c      | 51 +-------------------
 arch/x86/kernel/cpu/cpuid-deps.c  | 80 +++++++++++++++++++++++++++----
 4 files changed, 74 insertions(+), 60 deletions(-)

Comments

Maxim Levitsky July 28, 2022, 7:30 a.m. UTC | #1
On Mon, 2022-07-18 at 17:11 +0300, Maxim Levitsky wrote:
> This patch series aims to harden the cpuid code against the case when
> the hypervisor exposes a broken CPUID configuration to the guest,
> in the form of having a feature disabled but not features that depend on it.
> 
> This is the more generic way to fix kernel panic in aes-ni kernel driver,
> which was triggered by CPUID configuration in which AVX is disabled but
> not AVX2.
> 
> https://lore.kernel.org/all/20211103145231.GA4485@gondor.apana.org.au/T/
> 
> This was tested by booting a guest with AVX disabled and not AVX2,
> and observing that both a warning is now printed in dmesg, and
> that avx2 is gone from /proc/cpuinfo.
> 
> V2:
> 
> I hopefully addressed all the (very good) review feedback.
> 
> Best regards,
> 	Maxim Levitsky
> 
> Maxim Levitsky (5):
>   perf/x86/intel/lbr: use setup_clear_cpu_cap instead of clear_cpu_cap
>   x86/cpuid: refactor setup_clear_cpu_cap()/clear_cpu_cap()
>   x86/cpuid: move filter_cpuid_features to cpuid-deps.c
>   x86/cpuid: remove 'warn' parameter from filter_cpuid_features
>   x86/cpuid: check for dependencies violations in CPUID and attempt to
>     fix them
> 
>  arch/x86/events/intel/lbr.c       |  2 +-
>  arch/x86/include/asm/cpufeature.h |  1 +
>  arch/x86/kernel/cpu/common.c      | 51 +-------------------
>  arch/x86/kernel/cpu/cpuid-deps.c  | 80 +++++++++++++++++++++++++++----
>  4 files changed, 74 insertions(+), 60 deletions(-)
> 
> -- 
> 2.34.3
> 
> 
A very kind ping on these patches.

Best regards,
	Maxim Levitsky
Maxim Levitsky Aug. 1, 2022, 4:05 p.m. UTC | #2
On Thu, 2022-07-28 at 10:30 +0300, Maxim Levitsky wrote:
> On Mon, 2022-07-18 at 17:11 +0300, Maxim Levitsky wrote:
> > This patch series aims to harden the cpuid code against the case when
> > the hypervisor exposes a broken CPUID configuration to the guest,
> > in the form of having a feature disabled but not features that depend on it.
> > 
> > This is the more generic way to fix kernel panic in aes-ni kernel driver,
> > which was triggered by CPUID configuration in which AVX is disabled but
> > not AVX2.
> > 
> > https://lore.kernel.org/all/20211103145231.GA4485@gondor.apana.org.au/T/
> > 
> > This was tested by booting a guest with AVX disabled and not AVX2,
> > and observing that both a warning is now printed in dmesg, and
> > that avx2 is gone from /proc/cpuinfo.
> > 
> > V2:
> > 
> > I hopefully addressed all the (very good) review feedback.
> > 
> > Best regards,
> > 	Maxim Levitsky
> > 
> > Maxim Levitsky (5):
> >   perf/x86/intel/lbr: use setup_clear_cpu_cap instead of clear_cpu_cap
> >   x86/cpuid: refactor setup_clear_cpu_cap()/clear_cpu_cap()
> >   x86/cpuid: move filter_cpuid_features to cpuid-deps.c
> >   x86/cpuid: remove 'warn' parameter from filter_cpuid_features
> >   x86/cpuid: check for dependencies violations in CPUID and attempt to
> >     fix them
> > 
> >  arch/x86/events/intel/lbr.c       |  2 +-
> >  arch/x86/include/asm/cpufeature.h |  1 +
> >  arch/x86/kernel/cpu/common.c      | 51 +-------------------
> >  arch/x86/kernel/cpu/cpuid-deps.c  | 80 +++++++++++++++++++++++++++----
> >  4 files changed, 74 insertions(+), 60 deletions(-)
> > 
> > -- 
> > 2.34.3
> > 
> > 
> A very kind ping on these patches.

Another kind ping on these patches.


Best regards,
	Maxim Levitsky
> 
> Best regards,
> 	Maxim Levitsky
Dave Hansen Aug. 1, 2022, 4:31 p.m. UTC | #3
On 8/1/22 09:05, Maxim Levitsky wrote:
>> A very kind ping on these patches.
> Another kind ping on these patches.

Maxim,

This series is not forgotten.  Its latest version was simply posted too
close to the merge window.  It'll get looked at in a week or two when
things calm down.

Please be patient.
Maxim Levitsky Aug. 1, 2022, 4:41 p.m. UTC | #4
On Mon, 2022-08-01 at 09:31 -0700, Dave Hansen wrote:
> On 8/1/22 09:05, Maxim Levitsky wrote:
> > > A very kind ping on these patches.
> > Another kind ping on these patches.
> 
> Maxim,
> 
> This series is not forgotten.  Its latest version was simply posted too
> close to the merge window.  It'll get looked at in a week or two when
> things calm down.
> 
> Please be patient.
> 

Thanks!

Best regards,
	Maxim Levitsky
Maxim Levitsky Sept. 19, 2022, 1:43 p.m. UTC | #5
On Mon, 2022-08-01 at 19:05 +0300, Maxim Levitsky wrote:
> On Thu, 2022-07-28 at 10:30 +0300, Maxim Levitsky wrote:
> > On Mon, 2022-07-18 at 17:11 +0300, Maxim Levitsky wrote:
> > > This patch series aims to harden the cpuid code against the case when
> > > the hypervisor exposes a broken CPUID configuration to the guest,
> > > in the form of having a feature disabled but not features that depend on it.
> > > 
> > > This is the more generic way to fix kernel panic in aes-ni kernel driver,
> > > which was triggered by CPUID configuration in which AVX is disabled but
> > > not AVX2.
> > > 
> > > https://lore.kernel.org/all/20211103145231.GA4485@gondor.apana.org.au/T/
> > > 
> > > This was tested by booting a guest with AVX disabled and not AVX2,
> > > and observing that both a warning is now printed in dmesg, and
> > > that avx2 is gone from /proc/cpuinfo.
> > > 
> > > V2:
> > > 
> > > I hopefully addressed all the (very good) review feedback.
> > > 
> > > Best regards,
> > > 	Maxim Levitsky
> > > 
> > > Maxim Levitsky (5):
> > >   perf/x86/intel/lbr: use setup_clear_cpu_cap instead of clear_cpu_cap
> > >   x86/cpuid: refactor setup_clear_cpu_cap()/clear_cpu_cap()
> > >   x86/cpuid: move filter_cpuid_features to cpuid-deps.c
> > >   x86/cpuid: remove 'warn' parameter from filter_cpuid_features
> > >   x86/cpuid: check for dependencies violations in CPUID and attempt to
> > >     fix them
> > > 
> > >  arch/x86/events/intel/lbr.c       |  2 +-
> > >  arch/x86/include/asm/cpufeature.h |  1 +
> > >  arch/x86/kernel/cpu/common.c      | 51 +-------------------
> > >  arch/x86/kernel/cpu/cpuid-deps.c  | 80 +++++++++++++++++++++++++++----
> > >  4 files changed, 74 insertions(+), 60 deletions(-)
> > > 
> > > -- 
> > > 2.34.3
> > > 
> > > 
> > A very kind ping on these patches.
> 
> Another kind ping on these patches.

Another very gentle ping on these patches.

Best regards,
	Maxim Levitsky
> 
> 
> Best regards,
> 	Maxim Levitsky
> > Best regards,
> > 	Maxim Levitsky