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 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html