Hi Vipin, kernel test robot noticed the following build warnings: [auto build test WARNING on 332d2c1d713e232e163386c35a3ba0c1b90df83f] url: https://github.com/intel-lab-lkp/linux/commits/Vipin-Sharma/KVM-x86-mmu-Split-NX-hugepage-recovery-flow-into-TDP-and-non-TDP-flow/20240814-091542 base: 332d2c1d713e232e163386c35a3ba0c1b90df83f patch link: https://lore.kernel.org/r/20240812171341.1763297-3-vipinsh%40google.com patch subject: [PATCH 2/2] KVM: x86/mmu: Recover NX Huge pages belonging to TDP MMU under MMU read lock config: x86_64-randconfig-123-20240814 (https://download.01.org/0day-ci/archive/20240815/202408150646.VV4z8Znl-lkp@xxxxxxxxx/config) compiler: clang version 18.1.5 (https://github.com/llvm/llvm-project 617a15a9eac96088ae5e9134248d8236e34b91b1) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240815/202408150646.VV4z8Znl-lkp@xxxxxxxxx/reproduce) If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Closes: https://lore.kernel.org/oe-kbuild-all/202408150646.VV4z8Znl-lkp@xxxxxxxxx/ sparse warnings: (new ones prefixed by >>) >> arch/x86/kvm/mmu/tdp_mmu.c:847:21: sparse: sparse: incompatible types in comparison expression (different address spaces): arch/x86/kvm/mmu/tdp_mmu.c:847:21: sparse: unsigned long long [usertype] * arch/x86/kvm/mmu/tdp_mmu.c:847:21: sparse: unsigned long long [noderef] [usertype] __rcu * arch/x86/kvm/mmu/tdp_mmu.c: note: in included file (through include/linux/rbtree.h, include/linux/mm_types.h, include/linux/mmzone.h, ...): include/linux/rcupdate.h:812:25: sparse: sparse: context imbalance in '__tdp_mmu_zap_root' - unexpected unlock arch/x86/kvm/mmu/tdp_mmu.c:1447:33: sparse: sparse: context imbalance in 'tdp_mmu_split_huge_pages_root' - unexpected unlock vim +847 arch/x86/kvm/mmu/tdp_mmu.c 819 820 static bool tdp_mmu_zap_sp(struct kvm *kvm, struct kvm_mmu_page *sp) 821 { 822 struct tdp_iter iter = {}; 823 824 lockdep_assert_held_read(&kvm->mmu_lock); 825 826 /* 827 * This helper intentionally doesn't allow zapping a root shadow page, 828 * which doesn't have a parent page table and thus no associated entry. 829 */ 830 if (WARN_ON_ONCE(!sp->ptep)) 831 return false; 832 833 iter.old_spte = kvm_tdp_mmu_read_spte(sp->ptep); 834 iter.sptep = sp->ptep; 835 iter.level = sp->role.level + 1; 836 iter.gfn = sp->gfn; 837 iter.as_id = kvm_mmu_page_as_id(sp); 838 839 retry: 840 /* 841 * Since mmu_lock is held in read mode, it's possible to race with 842 * another CPU which can remove sp from the page table hierarchy. 843 * 844 * No need to re-read iter.old_spte as tdp_mmu_set_spte_atomic() will 845 * update it in the case of failure. 846 */ > 847 if (sp->spt != spte_to_child_pt(iter.old_spte, iter.level)) 848 return false; 849 850 if (tdp_mmu_set_spte_atomic(kvm, &iter, SHADOW_NONPRESENT_VALUE)) 851 goto retry; 852 853 return true; 854 } 855 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki