Messages in this thread | | | Date | Mon, 21 Aug 2023 16:49:57 +0000 | Subject | Re: [PATCH 03/22] KVM: x86: Support IBPB_BRTYPE and SBPB | From | Sean Christopherson <> |
| |
On Sun, Aug 20, 2023, Josh Poimboeuf wrote: > The IBPB_BRTYPE and SBPB CPUID bits aren't set by HW. > > From the AMD SRSO whitepaper: > > "Hypervisor software should synthesize the value of both the > IBPB_BRTYPE and SBPB CPUID bits on these platforms for use by guest > software." > > These bits are already set during kernel boot. Manually propagate them > to the guest.
Setting the bits in kvm_cpu_caps just advertises them to userspace, i.e. it doesn't propagate them to the guest, that's up to userspace.
> Also, propagate PRED_CMD_SBPB writes. > > Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org> > --- > arch/x86/kvm/cpuid.c | 4 ++++ > arch/x86/kvm/x86.c | 9 +++++---- > 2 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c > index d3432687c9e6..cdf703eec42d 100644 > --- a/arch/x86/kvm/cpuid.c > +++ b/arch/x86/kvm/cpuid.c > @@ -729,6 +729,10 @@ void kvm_set_cpu_caps(void) > F(NULL_SEL_CLR_BASE) | F(AUTOIBRS) | 0 /* PrefetchCtlMsr */ > ); > > + if (cpu_feature_enabled(X86_FEATURE_SBPB)) > + kvm_cpu_cap_set(X86_FEATURE_SBPB);
This can simply be:
kvm_cpu_cap_check_and_set(X86_FEATURE_SBPB);
If there's a strong desire to use cpu_feature_enabled() instead of boot_cpu_has(), then I would rather make than change in kvm_cpu_cap_check_and_set() for all features.
> + if (cpu_feature_enabled(X86_FEATURE_IBPB_BRTYPE)) > + kvm_cpu_cap_set(X86_FEATURE_IBPB_BRTYPE);
Assuming IBPB_BRTYPE doesn't require any extra support, it's probably best to add that one in a separate patch, as SBPB support is likely going to be a bit more involved.
> if (cpu_feature_enabled(X86_FEATURE_SRSO_NO)) > kvm_cpu_cap_set(X86_FEATURE_SRSO_NO);
Ah, this snuck in without going through the normal review channels. This too can use kvm_cpu_cap_check_and_set().
| |