Message ID | 20170201131953.30098-1-rkrcmar@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 01/02/2017 05:19, Radim Krčmář wrote: > 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") > Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> Cc: stable@vger.kernel.org Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Please apply to kvm/master and send it yourself to Linus since I don't have access to my machine this week. Paolo > --- > arch/x86/kvm/x86.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c > index 96dd7dd13ee6..5f013ad89b57 100644 > --- a/arch/x86/kvm/x86.c > +++ b/arch/x86/kvm/x86.c > @@ -3221,6 +3221,7 @@ static void fill_xsave(u8 *dest, struct kvm_vcpu *vcpu) > memcpy(dest, xsave, XSAVE_HDR_OFFSET); > > /* Set XSTATE_BV */ > + xstate_bv &= vcpu->arch.guest_supported_xcr0 | XFEATURE_MASK_FPSSE; > *(u64 *)(dest + XSAVE_HDR_OFFSET) = xstate_bv; > > /* >
2017-02-01 16:13-0800, Paolo Bonzini: > On 01/02/2017 05:19, Radim Krčmář wrote: >> 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") >> Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> > > Cc: stable@vger.kernel.org > Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> > > Please apply to kvm/master and send it yourself to Linus since I don't > have access to my machine this week. Done, thanks.
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c index 96dd7dd13ee6..5f013ad89b57 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c @@ -3221,6 +3221,7 @@ static void fill_xsave(u8 *dest, struct kvm_vcpu *vcpu) memcpy(dest, xsave, XSAVE_HDR_OFFSET); /* Set XSTATE_BV */ + xstate_bv &= vcpu->arch.guest_supported_xcr0 | XFEATURE_MASK_FPSSE; *(u64 *)(dest + XSAVE_HDR_OFFSET) = xstate_bv; /*
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") Signed-off-by: Radim Krčmář <rkrcmar@redhat.com> --- arch/x86/kvm/x86.c | 1 + 1 file changed, 1 insertion(+)