diff options
author | Radim Krčmář <rkrcmar@redhat.com> | 2017-02-01 08:19:53 -0500 |
---|---|---|
committer | Radim Krčmář <rkrcmar@redhat.com> | 2017-02-03 12:43:08 -0500 |
commit | 00c87e9a70a17b355b81c36adedf05e84f54e10d (patch) | |
tree | f1df0f8dcba15c286da9b83e6373e4ddd2b73e5e | |
parent | 566cf877a1fcb6d6dc0126b076aad062054c2637 (diff) |
KVM: x86: do not save guest-unsupported XSAVE state
Saving unsupported state prevents migration when the new host does not
support a XSAVE feature of the original host, even if the feature is not
exposed to the guest.
We've masked host features with guest-visible features before, with
4344ee981e21 ("KVM: x86: only copy XSAVE state for the supported
features") and dropped it when implementing XSAVES. Do it again.
Fixes: df1daba7d1cb ("KVM: x86: support XSAVES usage in the host")
Cc: stable@vger.kernel.org
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Radim Krčmář <rkrcmar@redhat.com>
-rw-r--r-- | arch/x86/kvm/x86.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index d153be8929a6..e52c9088660f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c | |||
@@ -3182,6 +3182,7 @@ static void fill_xsave(u8 *dest, struct kvm_vcpu *vcpu) | |||
3182 | memcpy(dest, xsave, XSAVE_HDR_OFFSET); | 3182 | memcpy(dest, xsave, XSAVE_HDR_OFFSET); |
3183 | 3183 | ||
3184 | /* Set XSTATE_BV */ | 3184 | /* Set XSTATE_BV */ |
3185 | xstate_bv &= vcpu->arch.guest_supported_xcr0 | XFEATURE_MASK_FPSSE; | ||
3185 | *(u64 *)(dest + XSAVE_HDR_OFFSET) = xstate_bv; | 3186 | *(u64 *)(dest + XSAVE_HDR_OFFSET) = xstate_bv; |
3186 | 3187 | ||
3187 | /* | 3188 | /* |