tree: https://git.kernel.org/pub/scm/virt/kvm/kvm.git queue head: 00a2bd3464280ca1f08e2cbfab22b884ffb731d8 commit: dc889a8974087aba3eb1cc6db2066fbbdb58922a [182/203] KVM: x86: Support the vCPU preemption check with nopvspin and realtime hint config: i386-randconfig-a003 (https://download.01.org/0day-ci/archive/20220309/202203090607.5kEhVF3N-lkp@xxxxxxxxx/config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce (this is a W=1 build): # https://git.kernel.org/pub/scm/virt/kvm/kvm.git/commit/?id=dc889a8974087aba3eb1cc6db2066fbbdb58922a git remote add kvm https://git.kernel.org/pub/scm/virt/kvm/kvm.git git fetch --no-tags kvm queue git checkout dc889a8974087aba3eb1cc6db2066fbbdb58922a # save the config file to linux build tree mkdir build_dir make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): In file included from arch/x86/include/asm/spinlock.h:10, from include/linux/spinlock.h:93, from include/linux/wait.h:9, from include/linux/pid.h:6, from include/linux/sched.h:14, from include/linux/context_tracking.h:5, from arch/x86/kernel/kvm.c:12: arch/x86/kernel/kvm.c: In function 'kvm_guest_init': >> arch/x86/include/asm/paravirt.h:683:35: error: '__raw_callee_save___kvm_vcpu_is_preempted' undeclared (first use in this function) 683 | ((struct paravirt_callee_save) { __raw_callee_save_##func }) | ^~~~~~~~~~~~~~~~~~ arch/x86/kernel/kvm.c:769:4: note: in expansion of macro 'PV_CALLEE_SAVE' 769 | PV_CALLEE_SAVE(__kvm_vcpu_is_preempted); | ^~~~~~~~~~~~~~ arch/x86/include/asm/paravirt.h:683:35: note: each undeclared identifier is reported only once for each function it appears in 683 | ((struct paravirt_callee_save) { __raw_callee_save_##func }) | ^~~~~~~~~~~~~~~~~~ arch/x86/kernel/kvm.c:769:4: note: in expansion of macro 'PV_CALLEE_SAVE' 769 | PV_CALLEE_SAVE(__kvm_vcpu_is_preempted); | ^~~~~~~~~~~~~~ vim +/__raw_callee_save___kvm_vcpu_is_preempted +683 arch/x86/include/asm/paravirt.h 2e47d3e6c35bb5 include/asm-x86/paravirt.h Glauber de Oliveira Costa 2008-01-30 648 ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 649 /* ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 650 * Generate a thunk around a function which saves all caller-save ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 651 * registers except for the return value. This allows C functions to ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 652 * be called from assembler code where fewer than normal registers are ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 653 * available. It may also help code generation around calls from C ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 654 * code if the common case doesn't use many registers. ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 655 * ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 656 * When a callee is wrapped in a thunk, the caller can assume that all ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 657 * arg regs and all scratch registers are preserved across the ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 658 * call. The return value in rax/eax will not be saved, even for void ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 659 * functions. ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 660 */ 87b240cbe3e51b arch/x86/include/asm/paravirt.h Josh Poimboeuf 2016-01-21 661 #define PV_THUNK_NAME(func) "__raw_callee_save_" #func 20125c872a3f12 arch/x86/include/asm/paravirt.h Peter Zijlstra 2021-06-24 662 #define __PV_CALLEE_SAVE_REGS_THUNK(func, section) \ ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 663 extern typeof(func) __raw_callee_save_##func; \ ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 664 \ 20125c872a3f12 arch/x86/include/asm/paravirt.h Peter Zijlstra 2021-06-24 665 asm(".pushsection " section ", \"ax\";" \ 87b240cbe3e51b arch/x86/include/asm/paravirt.h Josh Poimboeuf 2016-01-21 666 ".globl " PV_THUNK_NAME(func) ";" \ 87b240cbe3e51b arch/x86/include/asm/paravirt.h Josh Poimboeuf 2016-01-21 667 ".type " PV_THUNK_NAME(func) ", @function;" \ 87b240cbe3e51b arch/x86/include/asm/paravirt.h Josh Poimboeuf 2016-01-21 668 PV_THUNK_NAME(func) ":" \ 87b240cbe3e51b arch/x86/include/asm/paravirt.h Josh Poimboeuf 2016-01-21 669 FRAME_BEGIN \ ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 670 PV_SAVE_ALL_CALLER_REGS \ ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 671 "call " #func ";" \ ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 672 PV_RESTORE_ALL_CALLER_REGS \ 87b240cbe3e51b arch/x86/include/asm/paravirt.h Josh Poimboeuf 2016-01-21 673 FRAME_END \ b17c2baa305ccc arch/x86/include/asm/paravirt.h Peter Zijlstra 2021-12-04 674 ASM_RET \ 083db676482199 arch/x86/include/asm/paravirt.h Josh Poimboeuf 2019-07-17 675 ".size " PV_THUNK_NAME(func) ", .-" PV_THUNK_NAME(func) ";" \ ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 676 ".popsection") ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 677 20125c872a3f12 arch/x86/include/asm/paravirt.h Peter Zijlstra 2021-06-24 678 #define PV_CALLEE_SAVE_REGS_THUNK(func) \ 20125c872a3f12 arch/x86/include/asm/paravirt.h Peter Zijlstra 2021-06-24 679 __PV_CALLEE_SAVE_REGS_THUNK(func, ".text") 20125c872a3f12 arch/x86/include/asm/paravirt.h Peter Zijlstra 2021-06-24 680 ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 681 /* Get a reference to a callee-save function */ ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 682 #define PV_CALLEE_SAVE(func) \ ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 @683 ((struct paravirt_callee_save) { __raw_callee_save_##func }) ecb93d1ccd0aac arch/x86/include/asm/paravirt.h Jeremy Fitzhardinge 2009-01-28 684 :::::: The code at line 683 was first introduced by commit :::::: ecb93d1ccd0aac63f03be2db3cac3fa974716f4c x86/paravirt: add register-saving thunks to reduce caller register pressure :::::: TO: Jeremy Fitzhardinge <jeremy@xxxxxxxx> :::::: CC: H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx