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

Reply via email to