Paolo, I debugged and found, x86_cpu_xsave_xcr0_components() retuen 0, although it can solve problem, but XCR0 bit 0 also is 0, this is not correct. Because Intel manual Requirements : " XCR0.X87 (bit 0): This bit 0 must be 1. An attempt to write 0 to this bit causes a #GP exception. " (2.6 EXTENDED CONTROL REGISTERS (INCLUDING XCR0)).
> -----邮件原件----- > 发件人: yuchen (Cloud) > 发送时间: 2023年5月20日 9:58 > 收件人: 'Paolo Bonzini' <pbonz...@redhat.com>; > 'qemu-devel@nongnu.org' <qemu-devel@nongnu.org> > 抄送: 'r...@twiddle.net' <r...@twiddle.net>; 'ehabk...@redhat.com' > <ehabk...@redhat.com>; 'Dongli Zhang' <dongli.zh...@oracle.com> > 主题: 回复: 回复: [PATCH] target/i386: Clear xsave pkru bit when KVM > XCR0 not support > > Paolo, thanks, > The kernel patch can solve this problem. But it is difficult to upgrade the > kernel in some production environments, and upgrading qemu is easy. > This patch is just to sync qemu with kvm XSAVE features, no negative > impact. > At the same time, it increases the compatibility of qemu to kernel and > improves the robustness of qemu. > > > -----邮件原件----- > > 发件人: Paolo Bonzini <pbonz...@redhat.com> > > 发送时间: 2023年5月20日 1:37 > > 收件人: yuchen (Cloud) <yu.c...@h3c.com> > > 主题: Re: 回复: [PATCH] target/i386: Clear xsave pkru bit when KVM > > XCR0 not support > > > > On 5/18/23 14:37, Yuchen wrote: > > > Yes, because x86_cpu_xsave_all_areas() can get the correct XSAVE > > features. > > > > If you tested it, I can post the patch as a workaround. However, the > > kernel bug has been fixed too. > > > > Paolo > > > > >> -----邮件原件----- > > >> 发件人: Paolo Bonzini <pbonz...@redhat.com> > > >> 发送时间: 2023年5月18日 1:08 > > >> 收件人: yuchen (Cloud) <yu.c...@h3c.com>; > > qemu-devel@nongnu.org > > >> 抄送: r...@twiddle.net; ehabk...@redhat.com; chengchiwen > (Cloud) > > >> <chengchi...@h3c.com> > > >> 主题: Re: [PATCH] target/i386: Clear xsave pkru bit when KVM XCR0 > > not > > >> support > > >> > > >> On 5/17/23 12:55, Yuchen wrote: > > >>> Migrating guest from Intel new CPU (as Gold 6230) to old CPU (as > > >>> E5-2650 v4) will pause on the destination host. Because old CPU > > >>> not support xsave pkru feature, and KVM KVM_SET_XSAVE ioctl > return > > >> EINVAL. > > >>> > > >>> This kernel commit introduces the problem: > > >>> > > >>> ea4d6938d4c0 x86/fpu: Replace KVMs home brewed FPU copy > from > > >> user > > >>> > > >>> Signed-off-by: YuChen <yu.c...@h3c.com> > > >> > > >> Would this work instead? > > >> > > >> diff --git a/target/i386/xsave_helper.c > > >> b/target/i386/xsave_helper.c index 996e9f3bfef5..d3e5edad2ecd > > >> 100644 > > >> --- a/target/i386/xsave_helper.c > > >> +++ b/target/i386/xsave_helper.c > > >> @@ -47,7 +47,7 @@ void x86_cpu_xsave_all_areas(X86CPU *cpu, > > void > > >> *buf, uint32_t buflen) > > >> stq_p(xmm + 8, env->xmm_regs[i].ZMM_Q(1)); > > >> } > > >> > > >> - header->xstate_bv = env->xstate_bv; > > >> + header->xstate_bv = env->xstate_bv & > > >> + x86_cpu_xsave_xcr0_components(cpu); > > >> > > >> e = &x86_ext_save_areas[XSTATE_YMM_BIT]; > > >> if (e->size && e->offset) { > > >> > > >> Paolo > > > > > > -------------------------------------------------------------------- > > > -- > > > --------------------------------------------------------------- > > > 本邮件及其附件含有新华三集团的保密信息,仅限于发送给上面地 > 址 > > 中列出 > > > 的个人或群组。禁止任何其他人以任何形式使用(包括但不限于全 > 部 > > 或部分地泄露、复制、 > > > 或散发)本邮件中的信息。如果您错收了本邮件,请您立即电话或 > 邮 > > 件通知发件人并删除本 > > > 邮件! > > > This e-mail and its attachments contain confidential information > > > from New H3C, which is intended only for the person or entity whose > > > address is listed above. Any use of the information contained herein > > > in any way (including, but not limited to, total or partial > > > disclosure, reproduction, or dissemination) by persons other than > > > the intended > > > recipient(s) is prohibited. If you receive this e-mail in error, > > > please notify the sender by phone or email immediately and delete it!