From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============3342552505837313225==" MIME-Version: 1.0 From: kernel test robot Subject: arch/x86/kvm/mmu/tdp_mmu.c:291:9: sparse: sparse: context imbalance in 'tdp_mmu_link_page' - different lock contexts for basic block Date: Thu, 22 Apr 2021 09:55:55 +0800 Message-ID: <202104220948.x8m96vTv-lkp@intel.com> List-Id: To: kbuild@lists.01.org --===============3342552505837313225== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable CC: kbuild-all(a)lists.01.org CC: linux-kernel(a)vger.kernel.org TO: Ben Gardon CC: Paolo Bonzini CC: Peter Feiner tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git = master head: 16fc44d6387e260f4932e9248b985837324705d8 commit: 9a77daacc87dee9fd63e31243f21894132ed8407 KVM: x86/mmu: Use atomic o= ps to set SPTEs in TDP MMU map date: 3 months ago :::::: branch date: 9 hours ago :::::: commit date: 3 months ago config: x86_64-randconfig-s021-20210422 (attached as .config) compiler: gcc-9 (Debian 9.3.0-22) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-341-g8af24329-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.gi= t/commit/?id=3D9a77daacc87dee9fd63e31243f21894132ed8407 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/gi= t/torvalds/linux.git git fetch --no-tags linus master git checkout 9a77daacc87dee9fd63e31243f21894132ed8407 # save the attached .config to linux build tree make W=3D1 C=3D1 CF=3D'-fdiagnostic-prefix -D__CHECK_ENDIAN__' W=3D= 1 ARCH=3Dx86_64 = If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) arch/x86/kvm/mmu/tdp_mmu.c:455:49: sparse: sparse: incorrect type in arg= ument 2 (different address spaces) @@ expected unsigned long long [user= type] *pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:455:49: sparse: expected unsigned long lo= ng [usertype] *pt arch/x86/kvm/mmu/tdp_mmu.c:455:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:291:9: sparse: sparse: context imbalance in '= tdp_mmu_link_page' - different lock contexts for basic block >> arch/x86/kvm/mmu/tdp_mmu.c:316:9: sparse: sparse: context imbalance in '= tdp_mmu_unlink_page' - different lock contexts for basic block arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: sparse: incorrect type in arg= ument 2 (different address spaces) @@ expected unsigned long long [user= type] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: expected unsigned long lo= ng [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: got unsigned long long [n= oderef] [usertype] __rcu * arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: sparse: incorrect type in ini= tializer (different address spaces) @@ expected unsigned long long [use= rtype] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * = @@ arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: expected unsigned long lo= ng [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: got unsigned long long [n= oderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: sparse: incorrect type in ini= tializer (different address spaces) @@ expected unsigned long long [use= rtype] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * = @@ arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: expected unsigned long lo= ng [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: got unsigned long long [n= oderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: sparse: incorrect type in ini= tializer (different address spaces) @@ expected unsigned long long [use= rtype] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * = @@ arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: expected unsigned long lo= ng [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:483:40: sparse: got unsigned long long [n= oderef] [usertype] __rcu * arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: sparse: incorrect type in arg= ument 2 (different address spaces) @@ expected unsigned long long [user= type] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: expected unsigned long lo= ng [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: got unsigned long long [n= oderef] [usertype] __rcu * arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: sparse: incorrect type in arg= ument 2 (different address spaces) @@ expected unsigned long long [user= type] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: expected unsigned long lo= ng [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: got unsigned long long [n= oderef] [usertype] __rcu * arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: sparse: incorrect type in arg= ument 2 (different address spaces) @@ expected unsigned long long [user= type] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: expected unsigned long lo= ng [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: got unsigned long long [n= oderef] [usertype] __rcu * arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: sparse: incorrect type in arg= ument 2 (different address spaces) @@ expected unsigned long long [user= type] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: expected unsigned long lo= ng [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:606:51: sparse: got unsigned long long [n= oderef] [usertype] __rcu * arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: sparse: incorrect type in arg= ument 1 (different address spaces) @@ expected unsigned long long [user= type] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[use= rtype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: expected unsigned long lo= ng [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:521:49: sparse: got unsigned long long [n= oderef] [usertype] __rcu *[usertype] root_pt vim +/tdp_mmu_link_page +291 arch/x86/kvm/mmu/tdp_mmu.c a6a0b05da9f37f Ben Gardon 2020-10-14 267 = a9442f594147f9 Ben Gardon 2021-02-02 268 /** a9442f594147f9 Ben Gardon 2021-02-02 269 * tdp_mmu_link_page - = Add a new page to the list of pages used by the TDP MMU a9442f594147f9 Ben Gardon 2021-02-02 270 * a9442f594147f9 Ben Gardon 2021-02-02 271 * @kvm: kvm instance a9442f594147f9 Ben Gardon 2021-02-02 272 * @sp: the new page 9a77daacc87dee Ben Gardon 2021-02-02 273 * @shared: This operat= ion may not be running under the exclusive use of 9a77daacc87dee Ben Gardon 2021-02-02 274 * the MMU lock and= the operation must synchronize with other 9a77daacc87dee Ben Gardon 2021-02-02 275 * threads that mig= ht be adding or removing pages. a9442f594147f9 Ben Gardon 2021-02-02 276 * @account_nx: This pa= ge replaces a NX large page and should be marked for a9442f594147f9 Ben Gardon 2021-02-02 277 * eventual reclaim. a9442f594147f9 Ben Gardon 2021-02-02 278 */ a9442f594147f9 Ben Gardon 2021-02-02 279 static void tdp_mmu_lin= k_page(struct kvm *kvm, struct kvm_mmu_page *sp, 9a77daacc87dee Ben Gardon 2021-02-02 280 bool shared, b= ool account_nx) a9442f594147f9 Ben Gardon 2021-02-02 281 { 9a77daacc87dee Ben Gardon 2021-02-02 282 if (shared) 9a77daacc87dee Ben Gardon 2021-02-02 283 spin_lock(&kvm->arch.= tdp_mmu_pages_lock); 9a77daacc87dee Ben Gardon 2021-02-02 284 else a9442f594147f9 Ben Gardon 2021-02-02 285 lockdep_assert_held_w= rite(&kvm->mmu_lock); a9442f594147f9 Ben Gardon 2021-02-02 286 = a9442f594147f9 Ben Gardon 2021-02-02 287 list_add(&sp->link, &k= vm->arch.tdp_mmu_pages); a9442f594147f9 Ben Gardon 2021-02-02 288 if (account_nx) a9442f594147f9 Ben Gardon 2021-02-02 289 account_huge_nx_page(= kvm, sp); 9a77daacc87dee Ben Gardon 2021-02-02 290 = 9a77daacc87dee Ben Gardon 2021-02-02 @291 if (shared) 9a77daacc87dee Ben Gardon 2021-02-02 292 spin_unlock(&kvm->arc= h.tdp_mmu_pages_lock); a9442f594147f9 Ben Gardon 2021-02-02 293 } a9442f594147f9 Ben Gardon 2021-02-02 294 = a9442f594147f9 Ben Gardon 2021-02-02 295 /** a9442f594147f9 Ben Gardon 2021-02-02 296 * tdp_mmu_unlink_page = - Remove page from the list of pages used by the TDP MMU a9442f594147f9 Ben Gardon 2021-02-02 297 * a9442f594147f9 Ben Gardon 2021-02-02 298 * @kvm: kvm instance a9442f594147f9 Ben Gardon 2021-02-02 299 * @sp: the page to be = removed 9a77daacc87dee Ben Gardon 2021-02-02 300 * @shared: This operat= ion may not be running under the exclusive use of 9a77daacc87dee Ben Gardon 2021-02-02 301 * the MMU lock and= the operation must synchronize with other 9a77daacc87dee Ben Gardon 2021-02-02 302 * threads that mig= ht be adding or removing pages. a9442f594147f9 Ben Gardon 2021-02-02 303 */ 9a77daacc87dee Ben Gardon 2021-02-02 304 static void tdp_mmu_unl= ink_page(struct kvm *kvm, struct kvm_mmu_page *sp, 9a77daacc87dee Ben Gardon 2021-02-02 305 bool shared) a9442f594147f9 Ben Gardon 2021-02-02 306 { 9a77daacc87dee Ben Gardon 2021-02-02 307 if (shared) 9a77daacc87dee Ben Gardon 2021-02-02 308 spin_lock(&kvm->arch.= tdp_mmu_pages_lock); 9a77daacc87dee Ben Gardon 2021-02-02 309 else a9442f594147f9 Ben Gardon 2021-02-02 310 lockdep_assert_held_w= rite(&kvm->mmu_lock); a9442f594147f9 Ben Gardon 2021-02-02 311 = a9442f594147f9 Ben Gardon 2021-02-02 312 list_del(&sp->link); a9442f594147f9 Ben Gardon 2021-02-02 313 if (sp->lpage_disallow= ed) a9442f594147f9 Ben Gardon 2021-02-02 314 unaccount_huge_nx_pag= e(kvm, sp); 9a77daacc87dee Ben Gardon 2021-02-02 315 = 9a77daacc87dee Ben Gardon 2021-02-02 @316 if (shared) 9a77daacc87dee Ben Gardon 2021-02-02 317 spin_unlock(&kvm->arc= h.tdp_mmu_pages_lock); a9442f594147f9 Ben Gardon 2021-02-02 318 } a9442f594147f9 Ben Gardon 2021-02-02 319 = a066e61f13cf4b Ben Gardon 2021-02-02 320 /** a066e61f13cf4b Ben Gardon 2021-02-02 321 * handle_removed_tdp_m= mu_page - handle a pt removed from the TDP structure a066e61f13cf4b Ben Gardon 2021-02-02 322 * a066e61f13cf4b Ben Gardon 2021-02-02 323 * @kvm: kvm instance a066e61f13cf4b Ben Gardon 2021-02-02 324 * @pt: the page remove= d from the paging structure 9a77daacc87dee Ben Gardon 2021-02-02 325 * @shared: This operat= ion may not be running under the exclusive use 9a77daacc87dee Ben Gardon 2021-02-02 326 * of the MMU lock = and the operation must synchronize with other 9a77daacc87dee Ben Gardon 2021-02-02 327 * threads that mig= ht be modifying SPTEs. a066e61f13cf4b Ben Gardon 2021-02-02 328 * a066e61f13cf4b Ben Gardon 2021-02-02 329 * Given a page table t= hat has been removed from the TDP paging structure, a066e61f13cf4b Ben Gardon 2021-02-02 330 * iterates through the= page table to clear SPTEs and free child page tables. a066e61f13cf4b Ben Gardon 2021-02-02 331 */ 9a77daacc87dee Ben Gardon 2021-02-02 332 static void handle_remo= ved_tdp_mmu_page(struct kvm *kvm, u64 *pt, 9a77daacc87dee Ben Gardon 2021-02-02 333 bool shared) a066e61f13cf4b Ben Gardon 2021-02-02 334 { a066e61f13cf4b Ben Gardon 2021-02-02 335 struct kvm_mmu_page *s= p =3D sptep_to_sp(pt); a066e61f13cf4b Ben Gardon 2021-02-02 336 int level =3D sp->role= .level; a066e61f13cf4b Ben Gardon 2021-02-02 337 gfn_t gfn =3D sp->gfn; a066e61f13cf4b Ben Gardon 2021-02-02 338 u64 old_child_spte; 9a77daacc87dee Ben Gardon 2021-02-02 339 u64 *sptep; a066e61f13cf4b Ben Gardon 2021-02-02 340 int i; a066e61f13cf4b Ben Gardon 2021-02-02 341 = a066e61f13cf4b Ben Gardon 2021-02-02 342 trace_kvm_mmu_prepare_= zap_page(sp); a066e61f13cf4b Ben Gardon 2021-02-02 343 = 9a77daacc87dee Ben Gardon 2021-02-02 344 tdp_mmu_unlink_page(kv= m, sp, shared); a066e61f13cf4b Ben Gardon 2021-02-02 345 = a066e61f13cf4b Ben Gardon 2021-02-02 346 for (i =3D 0; i < PT64= _ENT_PER_PAGE; i++) { 9a77daacc87dee Ben Gardon 2021-02-02 347 sptep =3D pt + i; 9a77daacc87dee Ben Gardon 2021-02-02 348 = 9a77daacc87dee Ben Gardon 2021-02-02 349 if (shared) { 9a77daacc87dee Ben Gardon 2021-02-02 350 old_child_spte =3D x= chg(sptep, 0); 9a77daacc87dee Ben Gardon 2021-02-02 351 } else { 9a77daacc87dee Ben Gardon 2021-02-02 352 old_child_spte =3D R= EAD_ONCE(*sptep); 9a77daacc87dee Ben Gardon 2021-02-02 353 WRITE_ONCE(*sptep, 0= ); 9a77daacc87dee Ben Gardon 2021-02-02 354 } a066e61f13cf4b Ben Gardon 2021-02-02 355 handle_changed_spte(k= vm, kvm_mmu_page_as_id(sp), a066e61f13cf4b Ben Gardon 2021-02-02 356 gfn + (i * KVM_PAGES= _PER_HPAGE(level - 1)), 9a77daacc87dee Ben Gardon 2021-02-02 357 old_child_spte, 0, l= evel - 1, shared); a066e61f13cf4b Ben Gardon 2021-02-02 358 } a066e61f13cf4b Ben Gardon 2021-02-02 359 = a066e61f13cf4b Ben Gardon 2021-02-02 360 kvm_flush_remote_tlbs_= with_address(kvm, gfn, a066e61f13cf4b Ben Gardon 2021-02-02 361 KVM_PAGES_PER_H= PAGE(level)); a066e61f13cf4b Ben Gardon 2021-02-02 362 = 7cca2d0b7e7d9f Ben Gardon 2021-02-02 363 call_rcu(&sp->rcu_head= , tdp_mmu_free_sp_rcu_callback); a066e61f13cf4b Ben Gardon 2021-02-02 364 } a066e61f13cf4b Ben Gardon 2021-02-02 365 = 2f2fad0897cbfd Ben Gardon 2020-10-14 366 /** 2f2fad0897cbfd Ben Gardon 2020-10-14 367 * handle_changed_spte = - handle bookkeeping associated with an SPTE change 2f2fad0897cbfd Ben Gardon 2020-10-14 368 * @kvm: kvm instance 2f2fad0897cbfd Ben Gardon 2020-10-14 369 * @as_id: the address = space of the paging structure the SPTE was a part of 2f2fad0897cbfd Ben Gardon 2020-10-14 370 * @gfn: the base GFN t= hat was mapped by the SPTE 2f2fad0897cbfd Ben Gardon 2020-10-14 371 * @old_spte: The value= of the SPTE before the change 2f2fad0897cbfd Ben Gardon 2020-10-14 372 * @new_spte: The value= of the SPTE after the change 2f2fad0897cbfd Ben Gardon 2020-10-14 373 * @level: the level of= the PT the SPTE is part of in the paging structure 9a77daacc87dee Ben Gardon 2021-02-02 374 * @shared: This operat= ion may not be running under the exclusive use of 9a77daacc87dee Ben Gardon 2021-02-02 375 * the MMU lock and= the operation must synchronize with other 9a77daacc87dee Ben Gardon 2021-02-02 376 * threads that mig= ht be modifying SPTEs. 2f2fad0897cbfd Ben Gardon 2020-10-14 377 * 2f2fad0897cbfd Ben Gardon 2020-10-14 378 * Handle bookkeeping t= hat might result from the modification of a SPTE. 2f2fad0897cbfd Ben Gardon 2020-10-14 379 * This function must b= e called for all TDP SPTE modifications. 2f2fad0897cbfd Ben Gardon 2020-10-14 380 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 381 static void __handle_ch= anged_spte(struct kvm *kvm, int as_id, gfn_t gfn, 9a77daacc87dee Ben Gardon 2021-02-02 382 u64 old_spte, u64= new_spte, int level, 9a77daacc87dee Ben Gardon 2021-02-02 383 bool shared) 2f2fad0897cbfd Ben Gardon 2020-10-14 384 { 2f2fad0897cbfd Ben Gardon 2020-10-14 385 bool was_present =3D i= s_shadow_present_pte(old_spte); 2f2fad0897cbfd Ben Gardon 2020-10-14 386 bool is_present =3D is= _shadow_present_pte(new_spte); 2f2fad0897cbfd Ben Gardon 2020-10-14 387 bool was_leaf =3D was_= present && is_last_spte(old_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 388 bool is_leaf =3D is_pr= esent && is_last_spte(new_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 389 bool pfn_changed =3D s= pte_to_pfn(old_spte) !=3D spte_to_pfn(new_spte); 2f2fad0897cbfd Ben Gardon 2020-10-14 390 = 2f2fad0897cbfd Ben Gardon 2020-10-14 391 WARN_ON(level > PT64_R= OOT_MAX_LEVEL); 2f2fad0897cbfd Ben Gardon 2020-10-14 392 WARN_ON(level < PG_LEV= EL_4K); 764388ce598f0c Sean Christopherson 2020-10-23 393 WARN_ON(gfn & (KVM_PAG= ES_PER_HPAGE(level) - 1)); 2f2fad0897cbfd Ben Gardon 2020-10-14 394 = 2f2fad0897cbfd Ben Gardon 2020-10-14 395 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 396 * If this warning wer= e to trigger it would indicate that there was a 2f2fad0897cbfd Ben Gardon 2020-10-14 397 * missing MMU notifie= r or a race with some notifier handler. 2f2fad0897cbfd Ben Gardon 2020-10-14 398 * A present, leaf SPT= E should never be directly replaced with another 2f2fad0897cbfd Ben Gardon 2020-10-14 399 * present leaf SPTE p= ointing to a differnt PFN. A notifier handler 2f2fad0897cbfd Ben Gardon 2020-10-14 400 * should be zapping t= he SPTE before the main MM's page table is 2f2fad0897cbfd Ben Gardon 2020-10-14 401 * changed, or the SPT= E should be zeroed, and the TLBs flushed by the 2f2fad0897cbfd Ben Gardon 2020-10-14 402 * thread before repla= cement. 2f2fad0897cbfd Ben Gardon 2020-10-14 403 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 404 if (was_leaf && is_lea= f && pfn_changed) { 2f2fad0897cbfd Ben Gardon 2020-10-14 405 pr_err("Invalid SPTE = change: cannot replace a present leaf\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 406 "SPTE with ano= ther present leaf SPTE mapping a\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 407 "different PFN= !\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 408 "as_id: %d gfn= : %llx old_spte: %llx new_spte: %llx level: %d", 2f2fad0897cbfd Ben Gardon 2020-10-14 409 as_id, gfn, ol= d_spte, new_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 410 = 2f2fad0897cbfd Ben Gardon 2020-10-14 411 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 412 * Crash the host to = prevent error propagation and guest data 2f2fad0897cbfd Ben Gardon 2020-10-14 413 * courruption. 2f2fad0897cbfd Ben Gardon 2020-10-14 414 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 415 BUG(); 2f2fad0897cbfd Ben Gardon 2020-10-14 416 } 2f2fad0897cbfd Ben Gardon 2020-10-14 417 = 2f2fad0897cbfd Ben Gardon 2020-10-14 418 if (old_spte =3D=3D ne= w_spte) 2f2fad0897cbfd Ben Gardon 2020-10-14 419 return; 2f2fad0897cbfd Ben Gardon 2020-10-14 420 = b9a98c3437e353 Ben Gardon 2020-10-27 421 trace_kvm_tdp_mmu_spte= _changed(as_id, gfn, level, old_spte, new_spte); b9a98c3437e353 Ben Gardon 2020-10-27 422 = 2f2fad0897cbfd Ben Gardon 2020-10-14 423 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 424 * The only times a SP= TE should be changed from a non-present to 2f2fad0897cbfd Ben Gardon 2020-10-14 425 * non-present state i= s when an MMIO entry is installed/modified/ 2f2fad0897cbfd Ben Gardon 2020-10-14 426 * removed. In that ca= se, there is nothing to do here. 2f2fad0897cbfd Ben Gardon 2020-10-14 427 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 428 if (!was_present && !i= s_present) { 2f2fad0897cbfd Ben Gardon 2020-10-14 429 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 430 * If this change doe= s not involve a MMIO SPTE, it is 2f2fad0897cbfd Ben Gardon 2020-10-14 431 * unexpected. Log th= e change, though it should not impact the 2f2fad0897cbfd Ben Gardon 2020-10-14 432 * guest since both t= he former and current SPTEs are nonpresent. 2f2fad0897cbfd Ben Gardon 2020-10-14 433 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 434 if (WARN_ON(!is_mmio_= spte(old_spte) && !is_mmio_spte(new_spte))) 2f2fad0897cbfd Ben Gardon 2020-10-14 435 pr_err("Unexpected S= PTE change! Nonpresent SPTEs\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 436 "should not b= e replaced with another,\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 437 "different no= npresent SPTE, unless one or both\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 438 "are MMIO SPT= Es.\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 439 "as_id: %d gf= n: %llx old_spte: %llx new_spte: %llx level: %d", 2f2fad0897cbfd Ben Gardon 2020-10-14 440 as_id, gfn, o= ld_spte, new_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 441 return; 2f2fad0897cbfd Ben Gardon 2020-10-14 442 } 2f2fad0897cbfd Ben Gardon 2020-10-14 443 = 2f2fad0897cbfd Ben Gardon 2020-10-14 444 = 2f2fad0897cbfd Ben Gardon 2020-10-14 445 if (was_leaf && is_dir= ty_spte(old_spte) && 2f2fad0897cbfd Ben Gardon 2020-10-14 446 (!is_dirty_spte(ne= w_spte) || pfn_changed)) 2f2fad0897cbfd Ben Gardon 2020-10-14 447 kvm_set_pfn_dirty(spt= e_to_pfn(old_spte)); 2f2fad0897cbfd Ben Gardon 2020-10-14 448 = 2f2fad0897cbfd Ben Gardon 2020-10-14 449 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 450 * Recursively handle = child PTs if the change removed a subtree from 2f2fad0897cbfd Ben Gardon 2020-10-14 451 * the paging structur= e. 2f2fad0897cbfd Ben Gardon 2020-10-14 452 */ a066e61f13cf4b Ben Gardon 2021-02-02 453 if (was_present && !wa= s_leaf && (pfn_changed || !is_present)) a066e61f13cf4b Ben Gardon 2021-02-02 454 handle_removed_tdp_mm= u_page(kvm, 9a77daacc87dee Ben Gardon 2021-02-02 455 spte_to_child_pt(ol= d_spte, level), shared); 2f2fad0897cbfd Ben Gardon 2020-10-14 456 } 2f2fad0897cbfd Ben Gardon 2020-10-14 457 = 2f2fad0897cbfd Ben Gardon 2020-10-14 458 static void handle_chan= ged_spte(struct kvm *kvm, int as_id, gfn_t gfn, 9a77daacc87dee Ben Gardon 2021-02-02 459 u64 old_spte, u64 n= ew_spte, int level, 9a77daacc87dee Ben Gardon 2021-02-02 460 bool shared) 2f2fad0897cbfd Ben Gardon 2020-10-14 461 { 9a77daacc87dee Ben Gardon 2021-02-02 462 __handle_changed_spte(= kvm, as_id, gfn, old_spte, new_spte, level, 9a77daacc87dee Ben Gardon 2021-02-02 463 shared); f8e144971c6834 Ben Gardon 2020-10-14 464 handle_changed_spte_ac= c_track(old_spte, new_spte, level); a6a0b05da9f37f Ben Gardon 2020-10-14 465 handle_changed_spte_di= rty_log(kvm, as_id, gfn, old_spte, a6a0b05da9f37f Ben Gardon 2020-10-14 466 new_spte, lev= el); 2f2fad0897cbfd Ben Gardon 2020-10-14 467 } faaf05b00aecdb Ben Gardon 2020-10-14 468 = 9a77daacc87dee Ben Gardon 2021-02-02 469 /* 9a77daacc87dee Ben Gardon 2021-02-02 470 * tdp_mmu_set_spte_ato= mic - Set a TDP MMU SPTE atomically and handle the 9a77daacc87dee Ben Gardon 2021-02-02 471 * associated bookkeepi= ng 9a77daacc87dee Ben Gardon 2021-02-02 472 * 9a77daacc87dee Ben Gardon 2021-02-02 473 * @kvm: kvm instance 9a77daacc87dee Ben Gardon 2021-02-02 474 * @iter: a tdp_iter in= stance currently on the SPTE that should be set 9a77daacc87dee Ben Gardon 2021-02-02 475 * @new_spte: The value= the SPTE should be set to 9a77daacc87dee Ben Gardon 2021-02-02 476 * Returns: true if the= SPTE was set, false if it was not. If false is returned, 9a77daacc87dee Ben Gardon 2021-02-02 477 * this function wi= ll have no side-effects. 9a77daacc87dee Ben Gardon 2021-02-02 478 */ 9a77daacc87dee Ben Gardon 2021-02-02 479 static inline bool tdp_= mmu_set_spte_atomic(struct kvm *kvm, 9a77daacc87dee Ben Gardon 2021-02-02 480 struct tdp_iter= *iter, 9a77daacc87dee Ben Gardon 2021-02-02 481 u64 new_spte) 9a77daacc87dee Ben Gardon 2021-02-02 482 { 9a77daacc87dee Ben Gardon 2021-02-02 @483 u64 *root_pt =3D tdp_i= ter_root_pt(iter); 9a77daacc87dee Ben Gardon 2021-02-02 484 struct kvm_mmu_page *r= oot =3D sptep_to_sp(root_pt); 9a77daacc87dee Ben Gardon 2021-02-02 485 int as_id =3D kvm_mmu_= page_as_id(root); 9a77daacc87dee Ben Gardon 2021-02-02 486 = 9a77daacc87dee Ben Gardon 2021-02-02 487 lockdep_assert_held_re= ad(&kvm->mmu_lock); 9a77daacc87dee Ben Gardon 2021-02-02 488 = 9a77daacc87dee Ben Gardon 2021-02-02 489 if (cmpxchg64(rcu_dere= ference(iter->sptep), iter->old_spte, 9a77daacc87dee Ben Gardon 2021-02-02 490 new_spte) !=3D = iter->old_spte) 9a77daacc87dee Ben Gardon 2021-02-02 491 return false; 9a77daacc87dee Ben Gardon 2021-02-02 492 = 9a77daacc87dee Ben Gardon 2021-02-02 493 handle_changed_spte(kv= m, as_id, iter->gfn, iter->old_spte, new_spte, 9a77daacc87dee Ben Gardon 2021-02-02 494 iter->level, tru= e); 9a77daacc87dee Ben Gardon 2021-02-02 495 = 9a77daacc87dee Ben Gardon 2021-02-02 496 return true; 9a77daacc87dee Ben Gardon 2021-02-02 497 } 9a77daacc87dee Ben Gardon 2021-02-02 498 = --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org --===============3342552505837313225== Content-Type: application/gzip MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="config.gz" 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 UVmMF5oJ3rXPnn9ecL+6ev8/+hUMSlcxAgA= --===============3342552505837313225==--