Hi Yi, Thank you for the patch! Yet something to improve: [auto build test ERROR on tip/x86/core] [also build test ERROR on v4.19-rc3 next-20180913] [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/Yi-Sun/Enable-PV-qspinlock-for-Hyper-V/20180913-220827 config: x86_64-fedora-25 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 All errors (new ones prefixed by >>): arch/x86/hyperv/hv_spinlock.c: In function 'hv_init_spinlocks': >> arch/x86/hyperv/hv_spinlock.c:86:2: error: implicit declaration of function '__pv_init_lock_hash'; did you mean 'spin_lock_bh'? [-Werror=implicit-function-declaration] __pv_init_lock_hash(); ^~~~~~~~~~~~~~~~~~~ spin_lock_bh >> arch/x86/hyperv/hv_spinlock.c:87:42: error: '__pv_queued_spin_lock_slowpath' undeclared (first use in this function); did you mean 'queued_spin_lock_slowpath'? pv_lock_ops.queued_spin_lock_slowpath = __pv_queued_spin_lock_slowpath; ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ queued_spin_lock_slowpath arch/x86/hyperv/hv_spinlock.c:87:42: note: each undeclared identifier is reported only once for each function it appears in In file included from arch/x86/include/asm/msr.h:246:0, from arch/x86/include/asm/processor.h:21, from arch/x86/include/asm/cpufeature.h:5, from arch/x86/include/asm/thread_info.h:53, from include/linux/thread_info.h:38, from arch/x86/include/asm/preempt.h:7, from include/linux/preempt.h:81, from include/linux/smp.h:60, from include/linux/kernel_stat.h:5, from arch/x86/hyperv/hv_spinlock.c:22: arch/x86/include/asm/paravirt.h:775:35: error: '__raw_callee_save___pv_queued_spin_unlock' undeclared (first use in this function); did you mean '__raw_callee_save_hv_vcpu_is_preempted'? ((struct paravirt_callee_save) { __raw_callee_save_##func }) ^ arch/x86/hyperv/hv_spinlock.c:88:35: note: in expansion of macro 'PV_CALLEE_SAVE' pv_lock_ops.queued_spin_unlock = PV_CALLEE_SAVE(__pv_queued_spin_unlock); ^~~~~~~~~~~~~~ cc1: some warnings being treated as errors vim +86 arch/x86/hyperv/hv_spinlock.c 74 75 void __init hv_init_spinlocks(void) 76 { 77 if (!hv_pvspin || 78 !apic || 79 !(ms_hyperv.hints & HV_X64_CLUSTER_IPI_RECOMMENDED) || 80 !(ms_hyperv.features & HV_X64_MSR_GUEST_IDLE_AVAILABLE)) { 81 pr_warn("hv: PV spinlocks disabled\n"); 82 return; 83 } 84 pr_info("hv: PV spinlocks enabled\n"); 85 > 86 __pv_init_lock_hash(); > 87 pv_lock_ops.queued_spin_lock_slowpath = __pv_queued_spin_lock_slowpath; 88 pv_lock_ops.queued_spin_unlock = PV_CALLEE_SAVE(__pv_queued_spin_unlock); 89 pv_lock_ops.wait = hv_qlock_wait; 90 pv_lock_ops.kick = hv_qlock_kick; 91 pv_lock_ops.vcpu_is_preempted = PV_CALLEE_SAVE(hv_vcpu_is_preempted); 92 } 93 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation