tree:
https://git.kernel.org/pub/scm/virt/kvm/kvm.git queue
head: 3afb84581509b8d28979d15b5d727366efb3c8e5
commit: 078d47ee71d6a53657b5917ce1478f10bc173fa5 [149/154] KVM: x86/mmu: Protect the
tdp_mmu_roots list with RCU
config: x86_64-allyesconfig (attached as .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=078d47ee71d6a5...
git remote add kvm
https://git.kernel.org/pub/scm/virt/kvm/kvm.git
git fetch --no-tags kvm queue
git checkout 078d47ee71d6a53657b5917ce1478f10bc173fa5
# save the attached .config to linux build tree
make W=1 W=1 ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All errors (new ones prefixed by >>):
In file included from include/linux/rculist.h:11,
from include/linux/pid.h:5,
from include/linux/sched.h:14,
from include/linux/kvm_host.h:12,
from arch/x86/kvm/mmu.h:5,
from arch/x86/kvm/mmu/tdp_mmu.c:3:
arch/x86/kvm/mmu/tdp_mmu.c: In function 'kvm_tdp_mmu_get_vcpu_root_hpa':
> arch/x86/kvm/mmu/tdp_mmu.c:141:5: error: implicit declaration of
function 'lockdep_is_help'; did you mean 'lockdep_is_held'?
[-Werror=implicit-function-declaration]
141 |
lockdep_is_help(&kvm->arch.tdp_mmu_pages_lock)) \
| ^~~~~~~~~~~~~~~
include/linux/rcupdate.h:318:52: note: in definition of macro
'RCU_LOCKDEP_WARN'
318 | if (debug_lockdep_rcu_enabled() && !__warned && (c)) { \
| ^
include/linux/rculist.h:391:7: note: in expansion of macro '__list_check_rcu'
391 | for (__list_check_rcu(dummy, ## cond, 0), \
| ^~~~~~~~~~~~~~~~
arch/x86/kvm/mmu/tdp_mmu.c:139:2: note: in expansion of macro
'list_for_each_entry_rcu'
139 | list_for_each_entry_rcu(_root, &_kvm->arch.tdp_mmu_roots, link, \
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/x86/kvm/mmu/tdp_mmu.c:188:2: note: in expansion of macro
'for_each_tdp_mmu_root'
188 | for_each_tdp_mmu_root(kvm, root, kvm_mmu_role_as_id(role)) {
| ^~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
vim +141 arch/x86/kvm/mmu/tdp_mmu.c
124
125 /*
126 * Note: this iterator gets and puts references to the roots it iterates over.
127 * This makes it safe to release the MMU lock and yield within the loop, but
128 * if exiting the loop early, the caller must drop the reference to the most
129 * recent root. (Unless keeping a live reference is desirable.)
130 */
131 #define for_each_tdp_mmu_root_yield_safe(_kvm, _root, _as_id) \
132 for (_root = tdp_mmu_next_root(_kvm, NULL); \
133 _root; \
134 _root = tdp_mmu_next_root(_kvm, _root)) \
135 if (kvm_mmu_page_as_id(_root) != _as_id) { \
136 } else
137
138 #define for_each_tdp_mmu_root(_kvm, _root, _as_id) \
139 list_for_each_entry_rcu(_root, &_kvm->arch.tdp_mmu_roots, link, \
140 lockdep_is_held_type(&kvm->mmu_lock, 0) || \
141 lockdep_is_help(&kvm->arch.tdp_mmu_pages_lock)) \
142 if (kvm_mmu_page_as_id(_root) != _as_id) { \
143 } else
144
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org