On 06.02.2024 02:20, George Dunlap wrote: > For now, just disable the functionality entirely until we can > implement it properly: > > - Don't set TSCRATEMSR in the host CPUID policy
This goes too far: This way you would (in principle) also affect guests with nesting disabled. According to the earlier parts of the description there's also no issue with it in that case. What you want to make sure it that in the HVM policy the bit isn't set. While presently resolving to cpu_has_svm_feature(), I think cpu_has_tsc_ratio really ought to resolve to the host policy field. Of course then requiring the host policy to reflect reality rather than having what is "always emulated". IOW ... > --- a/xen/arch/x86/cpu-policy.c > +++ b/xen/arch/x86/cpu-policy.c > @@ -407,8 +407,7 @@ static void __init calculate_host_policy(void) > (1u << SVM_FEATURE_PAUSEFILTER) | > (1u << SVM_FEATURE_DECODEASSISTS)); > /* Enable features which are always emulated. */ > - p->extd.raw[0xa].d |= ((1u << SVM_FEATURE_VMCBCLEAN) | > - (1u << SVM_FEATURE_TSCRATEMSR)); > + p->extd.raw[0xa].d |= (1u << SVM_FEATURE_VMCBCLEAN); ... this likely wants replacing altogether by not overriding what we found in hardware, which would apparently mean moving the two bit masks to the earlier "clamping" expression. But then of course Andrew may know of reasons why all of this is done in calculate_host_policy() in the first place, rather than in HVM policy calculation. Jan
