From: "Radim Krčmář" <rkrcmar@redhat.com>
To: kbuild test robot <lkp@intel.com>
Cc: kbuild-all@01.org, linux-kernel@vger.kernel.org,
kvm@vger.kernel.org, Paolo Bonzini <pbonzini@redhat.com>,
Bandan Das <bsd@redhat.com>, Nadav Amit <nadav.amit@gmail.com>
Subject: Re: [PATCH v4] KVM: x86: emulate FXSAVE and FXRSTOR
Date: Wed, 9 Nov 2016 19:46:28 +0100 [thread overview]
Message-ID: <20161109184628.GB8015@potion> (raw)
In-Reply-To: <201611100214.Cw6eiUij%fengguang.wu@intel.com>
2016-11-10 02:42+0800, kbuild test robot:
> Hi Radim,
And I even replied to the series, so this would happen ...
Btw. would the tool recognize it if the header was [PATCH v4 4/4]?
> [auto build test ERROR on kvm/linux-next]
> [also build test ERROR on v4.9-rc4 next-20161109]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Radim-Kr-m/KVM-x86-emulate-FXSAVE-and-FXRSTOR/20161110-021048
> base: https://git.kernel.org/pub/scm/virt/kvm/kvm.git linux-next
> config: x86_64-randconfig-x018-201645 (attached as .config)
> compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901
> reproduce:
> # save the attached .config to linux build tree
> make ARCH=x86_64
>
> All errors (new ones prefixed by >>):
>
> arch/x86/kvm/emulate.c: In function 'em_fxsave':
> >> arch/x86/kvm/emulate.c:3910:7: error: implicit declaration of function 'asm_safe' [-Werror=implicit-function-declaration]
> rc = asm_safe("fxsave %[fx]", , [fx] "+m"(fx_state));
> ^~~~~~~~
> >> arch/x86/kvm/emulate.c:3910:32: error: expected expression before ',' token
> rc = asm_safe("fxsave %[fx]", , [fx] "+m"(fx_state));
> ^
> >> arch/x86/kvm/emulate.c:3910:35: error: 'fx' undeclared (first use in this function)
> rc = asm_safe("fxsave %[fx]", , [fx] "+m"(fx_state));
> ^~
> arch/x86/kvm/emulate.c:3910:35: note: each undeclared identifier is reported only once for each function it appears in
> arch/x86/kvm/emulate.c: In function 'fxrstor_fixup':
> arch/x86/kvm/emulate.c:3931:32: error: expected expression before ',' token
> rc = asm_safe("fxsave %[fx]", , [fx] "+m"(old));
> ^
> arch/x86/kvm/emulate.c:3931:35: error: 'fx' undeclared (first use in this function)
> rc = asm_safe("fxsave %[fx]", , [fx] "+m"(old));
> ^~
> arch/x86/kvm/emulate.c: In function 'em_fxrstor':
> >> arch/x86/kvm/emulate.c:3977:34: error: expected expression before ':' token
> rc = asm_safe("fxrstor %[fx]", : [fx] "m"(fx_state));
> ^
> arch/x86/kvm/emulate.c: At top level:
> >> arch/x86/kvm/emulate.c:4336:12: error: 'Aligned16' undeclared here (not in a function)
> I(ModRM | Aligned16, em_fxsave),
> ^
> arch/x86/kvm/emulate.c:4185:31: note: in definition of macro 'I'
> #define I(_f, _e) { .flags = (_f), .u.execute = (_e) }
> ^~
> cc1: some warnings being treated as errors
>
> vim +/asm_safe +3910 arch/x86/kvm/emulate.c
>
> 3904 rc = check_fxsr(ctxt);
> 3905 if (rc != X86EMUL_CONTINUE)
> 3906 return rc;
> 3907
> 3908 ctxt->ops->get_fpu(ctxt);
> 3909
> > 3910 rc = asm_safe("fxsave %[fx]", , [fx] "+m"(fx_state));
> 3911
> 3912 ctxt->ops->put_fpu(ctxt);
> 3913
> 3914 if (rc != X86EMUL_CONTINUE)
> 3915 return rc;
> 3916
> 3917 if (ctxt->ops->get_cr(ctxt, 4) & X86_CR4_OSFXSR)
> 3918 size = offsetof(struct fxregs_state, xmm_space[8 * 16/4]);
> 3919 else
> 3920 size = offsetof(struct fxregs_state, xmm_space[0]);
> 3921
> 3922 return segmented_write(ctxt, ctxt->memop.addr.mem, &fx_state, size);
> 3923 }
> 3924
> 3925 static int fxrstor_fixup(struct x86_emulate_ctxt *ctxt,
> 3926 struct fxregs_state *new)
> 3927 {
> 3928 int rc = X86EMUL_CONTINUE;
> 3929 struct fxregs_state old;
> 3930
> > 3931 rc = asm_safe("fxsave %[fx]", , [fx] "+m"(old));
> 3932 if (rc != X86EMUL_CONTINUE)
> 3933 return rc;
> 3934
> 3935 /*
> 3936 * 64 bit host will restore XMM 8-15, which is not correct on non-64
> 3937 * bit guests. Load the current values in order to preserve 64 bit
> 3938 * XMMs after fxrstor.
> 3939 */
> 3940 #ifdef CONFIG_X86_64
> 3941 /* XXX: accessing XMM 8-15 very awkwardly */
> 3942 memcpy(&new->xmm_space[8 * 16/4], &old.xmm_space[8 * 16/4], 8 * 16);
> 3943 #endif
> 3944
> 3945 /*
> 3946 * Hardware doesn't save and restore XMM 0-7 without CR4.OSFXSR, but
> 3947 * does save and restore MXCSR.
> 3948 */
> 3949 if (!(ctxt->ops->get_cr(ctxt, 4) & X86_CR4_OSFXSR))
> 3950 memcpy(new->xmm_space, old.xmm_space, 8 * 16);
> 3951
> 3952 return rc;
> 3953 }
> 3954
> 3955 static int em_fxrstor(struct x86_emulate_ctxt *ctxt)
> 3956 {
> 3957 struct fxregs_state fx_state;
> 3958 int rc;
> 3959
> 3960 rc = check_fxsr(ctxt);
> 3961 if (rc != X86EMUL_CONTINUE)
> 3962 return rc;
> 3963
> 3964 rc = segmented_read(ctxt, ctxt->memop.addr.mem, &fx_state, 512);
> 3965 if (rc != X86EMUL_CONTINUE)
> 3966 return rc;
> 3967
> 3968 if (fx_state.mxcsr >> 16)
> 3969 return emulate_gp(ctxt, 0);
> 3970
> 3971 ctxt->ops->get_fpu(ctxt);
> 3972
> 3973 if (ctxt->mode < X86EMUL_MODE_PROT64)
> 3974 rc = fxrstor_fixup(ctxt, &fx_state);
> 3975
> 3976 if (rc == X86EMUL_CONTINUE)
> > 3977 rc = asm_safe("fxrstor %[fx]", : [fx] "m"(fx_state));
> 3978
> 3979 ctxt->ops->put_fpu(ctxt);
> 3980
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all Intel Corporation
next prev parent reply other threads:[~2016-11-09 18:46 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-11-08 19:54 [PATCH v3 0/4] KVM: x86: emulate FXSAVE and FXRSTOR Radim Krčmář
2016-11-08 19:54 ` [PATCH v3 1/4] KVM: x86: add Align16 instruction flag Radim Krčmář
2016-11-08 19:54 ` [PATCH v3 2/4] KVM: x86: save one bit in ctxt->d Radim Krčmář
2016-11-08 19:54 ` [PATCH v3 3/4] KVM: x86: add asm_safe wrapper Radim Krčmář
2016-11-08 19:54 ` [PATCH v3 4/4] KVM: x86: emulate FXSAVE and FXRSTOR Radim Krčmář
2016-11-08 23:25 ` Paolo Bonzini
2016-11-09 12:12 ` Radim Krčmář
2016-11-09 14:19 ` Radim Krčmář
2016-11-09 18:07 ` [PATCH v4] " Radim Krčmář
2016-11-09 18:42 ` kbuild test robot
2016-11-09 18:46 ` Radim Krčmář [this message]
2016-11-10 2:47 ` Fengguang Wu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20161109184628.GB8015@potion \
--to=rkrcmar@redhat.com \
--cc=bsd@redhat.com \
--cc=kbuild-all@01.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lkp@intel.com \
--cc=nadav.amit@gmail.com \
--cc=pbonzini@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.