On 05/05/21 17:36, Sean Christopherson wrote:
On Wed, May 05, 2021, Paolo Bonzini wrote:
On 04/05/21 19:17, Sean Christopherson wrote:
Tag TSX_CTRL as not needing to be loaded when RTM isn't supported in the
host. Crushing the write mask to '0' has the same effect, but requires
more mental gymnastics to understand.
This doesn't explain _why_ this is now possible. What about:
Now that user return MSRs is always present in the list, we don't have
User return MSRs aren't always present in the list; this series doesn't change
that behavior at all.
the problem that the TSX_CTRL MSR needs a slot vmx->guest_uret_msrs even
if RTM is not supported in the host (and therefore there is nothing to
enable). Thus we can simply tag TSX_CTRL as not needing to be loaded
instead of crushing the write mask to '0'.
Unless I'm missing something, it would have been possible to give TSX_CTRL a
slot but not load it even before this refactoring, we just missed that approach
when handling the TSX_CTRL without HLE/RTM case. Several other MSRs rely on
this behavior, notably the SYSCALL MSRs, which are present in the list so that
the guest can read/write the MSRs, but are loaded into hardware iff the guest
has enabled SYSCALL.
You're right, it used to be done with vmx->nr_active_uret_msr.
Paolo
All that said, I certainly have no objection to writing a longer changelog.