On Wed, Oct 12, 2022 at 10:36:57AM +0200, Jan Beulich wrote:
> On 11.10.2022 18:02, Roger Pau Monne wrote:
> > --- a/xen/arch/x86/cpu/amd.c
> > +++ b/xen/arch/x86/cpu/amd.c
> > @@ -814,7 +814,9 @@ void amd_set_ssbd(bool enable)
> > wrmsr(MSR_VIRT_SPEC_CTRL, enable ? SPEC_CTRL_SSBD : 0, 0);
> > else if ( amd_legacy_ssbd )
> > core_set_legacy_ssbd(enable);
> > - else
> > + else if ( cpu_has_ssb_no ) {
>
> Nit: While already an issue in patch 1, it is actually the combination
> of inner blanks and brace placement which made me spot the style issue
> here.
Oh, indeed, extra spaces.
> > + /* Nothing to do. */
>
> How is the late placement here in line with ...
>
> > --- a/xen/arch/x86/cpuid.c
> > +++ b/xen/arch/x86/cpuid.c
> > @@ -558,11 +558,16 @@ static void __init calculate_hvm_max_policy(void)
> > __clear_bit(X86_FEATURE_IBRSB, hvm_featureset);
> > __clear_bit(X86_FEATURE_IBRS, hvm_featureset);
> > }
> > - else if ( boot_cpu_has(X86_FEATURE_AMD_SSBD) )
> > + else if ( boot_cpu_has(X86_FEATURE_AMD_SSBD) ||
> > + boot_cpu_has(X86_FEATURE_SSB_NO) )
> > /*
> > * If SPEC_CTRL.SSBD is available VIRT_SPEC_CTRL.SSBD can be
> > exposed
> > * and implemented using the former. Expose in the max policy only
> > as
> > * the preference is for guests to use SPEC_CTRL.SSBD if available.
> > + *
> > + * Allow VIRT_SSBD in the max policy if SSB_NO is exposed for
> > migration
> > + * compatibility reasons. If SSB_NO is present setting
> > + * VIRT_SPEC_CTRL.SSBD is a no-op.
> > */
> > __set_bit(X86_FEATURE_VIRT_SSBD, hvm_featureset);
>
> ... this comment addition talking about "no-op"?
We need the empty `else if ...` body in order to avoid hitting the
ASSERT, but a guest setting VIRT_SPEC_CTRl.SSBD on a system that has
SSB_NO will not result in any setting being propagated to the
hardware. I can make that clearer. In any case I'm unable to test
the patch because there's no hw with the feature that I'm aware of.
Thanks, Roger.