diff mbox series

KVM: x86: Sort CPUID_8000_0021_EAX leaf bits properly

Message ID 20250324160617.15379-1-bp@kernel.org (mailing list archive)
State New
Headers show
Series KVM: x86: Sort CPUID_8000_0021_EAX leaf bits properly | expand

Commit Message

Borislav Petkov March 24, 2025, 4:06 p.m. UTC
From: "Borislav Petkov (AMD)" <bp@alien8.de>

WRMSR_XX_BASE_NS is bit 1 so put it there, add some new bits as
comments only.

Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
---
 arch/x86/kvm/cpuid.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Sean Christopherson April 10, 2025, 9:46 p.m. UTC | #1
On Mon, Mar 24, 2025, Borislav Petkov wrote:
> From: "Borislav Petkov (AMD)" <bp@alien8.de>
> 
> WRMSR_XX_BASE_NS is bit 1 so put it there, add some new bits as
> comments only.
> 
> Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
> ---
>  arch/x86/kvm/cpuid.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
> index 121edf1f2a79..e98ab18f784b 100644
> --- a/arch/x86/kvm/cpuid.c
> +++ b/arch/x86/kvm/cpuid.c
> @@ -1160,6 +1160,7 @@ void kvm_set_cpu_caps(void)
>  
>  	kvm_cpu_cap_init(CPUID_8000_0021_EAX,
>  		F(NO_NESTED_DATA_BP),
> +		F(WRMSR_XX_BASE_NS),
>  		/*
>  		 * Synthesize "LFENCE is serializing" into the AMD-defined entry
>  		 * in KVM's supported CPUID, i.e. if the feature is reported as
> @@ -1173,10 +1174,14 @@ void kvm_set_cpu_caps(void)
>  		SYNTHESIZED_F(LFENCE_RDTSC),
>  		/* SmmPgCfgLock */
>  		F(NULL_SEL_CLR_BASE),
> +		/* UpperAddressIgnore */
>  		F(AUTOIBRS),
>  		EMULATED_F(NO_SMM_CTL_MSR),
> +		/* FSRS */
> +		/* FSRC */

I'm going to skip these, as they aren't yet publicly documented, and there are
patches proposed to add actual support.  I wouldn't care all that much if these
didn't collide with Intel's version (the proposed patches name them AMD_FSxx).

https://lore.kernel.org/all/20241204134345.189041-2-davydov-max@yandex-team.ru

>  		/* PrefetchCtlMsr */
> -		F(WRMSR_XX_BASE_NS),
> +		/* GpOnUserCpuid */
> +		/* EPSF */

FWIW, this one's also not in the APM (though the only APM I can find is a year old),
though it's in tools/x86/kcpuid.

>  		SYNTHESIZED_F(SBPB),
>  		SYNTHESIZED_F(IBPB_BRTYPE),
>  		SYNTHESIZED_F(SRSO_NO),
> -- 
> 2.43.0
>
Borislav Petkov April 11, 2025, 9:45 a.m. UTC | #2
On Thu, Apr 10, 2025 at 02:46:39PM -0700, Sean Christopherson wrote:
> I'm going to skip these, as they aren't yet publicly documented,

https://www.amd.com/content/dam/amd/en/documents/epyc-technical-docs/programmer-references/57238.zip

> and there are patches proposed to add actual support.  I wouldn't care all
> that much if these didn't collide with Intel's version (the proposed patches
> name them AMD_FSxx).
>
> https://lore.kernel.org/all/20241204134345.189041-2-davydov-max@yandex-team.ru

Pff, I think the right thing to do is to detect those and when set, set the
Intel flags because they're basically the same.

Lemme go reply there.

... goes and replies...

> 
> >  		/* PrefetchCtlMsr */
> > -		F(WRMSR_XX_BASE_NS),
> > +		/* GpOnUserCpuid */
> > +		/* EPSF */
> 
> FWIW, this one's also not in the APM (though the only APM I can find is a year old),
> though it's in tools/x86/kcpuid.

See above. Yeah, the PPRs have them earlier than the APM.

Thx.
diff mbox series

Patch

diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c
index 121edf1f2a79..e98ab18f784b 100644
--- a/arch/x86/kvm/cpuid.c
+++ b/arch/x86/kvm/cpuid.c
@@ -1160,6 +1160,7 @@  void kvm_set_cpu_caps(void)
 
 	kvm_cpu_cap_init(CPUID_8000_0021_EAX,
 		F(NO_NESTED_DATA_BP),
+		F(WRMSR_XX_BASE_NS),
 		/*
 		 * Synthesize "LFENCE is serializing" into the AMD-defined entry
 		 * in KVM's supported CPUID, i.e. if the feature is reported as
@@ -1173,10 +1174,14 @@  void kvm_set_cpu_caps(void)
 		SYNTHESIZED_F(LFENCE_RDTSC),
 		/* SmmPgCfgLock */
 		F(NULL_SEL_CLR_BASE),
+		/* UpperAddressIgnore */
 		F(AUTOIBRS),
 		EMULATED_F(NO_SMM_CTL_MSR),
+		/* FSRS */
+		/* FSRC */
 		/* PrefetchCtlMsr */
-		F(WRMSR_XX_BASE_NS),
+		/* GpOnUserCpuid */
+		/* EPSF */
 		SYNTHESIZED_F(SBPB),
 		SYNTHESIZED_F(IBPB_BRTYPE),
 		SYNTHESIZED_F(SRSO_NO),