On Mon, Nov 18, 2019 at 10:17 AM Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > "Shared MSRs" are guest MSRs that are written to the host MSRs but > keep their value until the next return to userspace. They support > a mask, so that some bits keep the host value, but this mask is > only used to skip an unnecessary MSR write and the value written > to the MSR is always the guest MSR. > > Fix this and, while at it, do not update smsr->values[slot].curr if > for whatever reason the wrmsr fails. This should only happen due to > reserved bits, so the value written to smsr->values[slot].curr > will not match when the user-return notifier and the host value will > always be restored. However, it is untidy and in rare cases this > can actually avoid spurious WRMSRs on return to userspace. > > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Paolo Bonzini <pbonzini@xxxxxxxxxx> Reviewed-by: Jim Mattson <jmattson@xxxxxxxxxx>