From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.2 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,MENTIONS_GIT_HOSTING, SPF_HELO_NONE,SPF_PASS,USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 401DFC433DB for ; Sat, 27 Feb 2021 21:40:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D635C64DE5 for ; Sat, 27 Feb 2021 21:40:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230134AbhB0Vjv (ORCPT ); Sat, 27 Feb 2021 16:39:51 -0500 Received: from mga06.intel.com ([134.134.136.31]:47296 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230060AbhB0Vjl (ORCPT ); Sat, 27 Feb 2021 16:39:41 -0500 IronPort-SDR: ERMISrdn3yXcoe9WzgZzUIgWwqIy0L7+ict72cbeFR5WMMVs9vRRCmb5+OheoVlE+sAbvc5Ch9 99umNur69gJA== X-IronPort-AV: E=McAfee;i="6000,8403,9908"; a="247581339" X-IronPort-AV: E=Sophos;i="5.81,211,1610438400"; d="gz'50?scan'50,208,50";a="247581339" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Feb 2021 13:38:56 -0800 IronPort-SDR: fLeXXS5x4hhSkibHWOAHHgpjxjqrFu9XD55ixuqlTzX2Ykj2tB8J+DZekbSzzWwpGK0WTBjqox NcibVNt1eyUQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.81,211,1610438400"; d="gz'50?scan'50,208,50";a="405540907" Received: from lkp-server01.sh.intel.com (HELO 16660e54978b) ([10.239.97.150]) by orsmga008.jf.intel.com with ESMTP; 27 Feb 2021 13:38:54 -0800 Received: from kbuild by 16660e54978b with local (Exim 4.92) (envelope-from ) id 1lG7Ib-0003sG-HP; Sat, 27 Feb 2021 21:38:53 +0000 Date: Sun, 28 Feb 2021 05:38:21 +0800 From: kernel test robot To: Ben Gardon Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org, Paolo Bonzini , Peter Feiner Subject: arch/x86/kvm/mmu/tdp_mmu.c:388:49: sparse: sparse: incorrect type in argument 2 (different address spaces) Message-ID: <202102280515.H0FcHrxH-lkp@intel.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="SLDf9lqlvOQaIe6s" Content-Disposition: inline User-Agent: Mutt/1.10.1 (2018-07-13) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --SLDf9lqlvOQaIe6s Content-Type: text/plain; charset=us-ascii Content-Disposition: inline tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 5695e51619745d4fe3ec2506a2f0cd982c5e27a4 commit: 7cca2d0b7e7d9f3cd740d41afdc00051c9b508a0 KVM: x86/mmu: Protect TDP MMU page table memory with RCU date: 3 weeks ago config: x86_64-randconfig-s022-20210228 (attached as .config) compiler: gcc-9 (Debian 9.3.0-15) 9.3.0 reproduce: # apt-get install sparse # sparse version: v0.6.3-241-geaceeafa-dirty # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7cca2d0b7e7d9f3cd740d41afdc00051c9b508a0 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 7cca2d0b7e7d9f3cd740d41afdc00051c9b508a0 # save the attached .config to linux build tree make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_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:388:49: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned long long [usertype] *pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:388:49: sparse: expected unsigned long long [usertype] *pt arch/x86/kvm/mmu/tdp_mmu.c:388:49: sparse: got unsigned long long [noderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned long long [usertype] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: expected unsigned long long [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: got unsigned long long [noderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned long long [usertype] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: expected unsigned long long [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: got unsigned long long [noderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned long long [usertype] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: expected unsigned long long [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: got unsigned long long [noderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned long long [usertype] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: expected unsigned long long [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: got unsigned long long [noderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected unsigned long long [usertype] *root_pt @@ got unsigned long long [noderef] [usertype] __rcu * @@ arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: expected unsigned long long [usertype] *root_pt arch/x86/kvm/mmu/tdp_mmu.c:506:51: sparse: got unsigned long long [noderef] [usertype] __rcu * >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt >> arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected unsigned long long [usertype] *sptep @@ got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt @@ arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: expected unsigned long long [usertype] *sptep arch/x86/kvm/mmu/tdp_mmu.c:421:49: sparse: got unsigned long long [noderef] [usertype] __rcu *[usertype] root_pt vim +388 arch/x86/kvm/mmu/tdp_mmu.c a066e61f13cf4b Ben Gardon 2021-02-02 302 2f2fad0897cbfd Ben Gardon 2020-10-14 303 /** 2f2fad0897cbfd Ben Gardon 2020-10-14 304 * handle_changed_spte - handle bookkeeping associated with an SPTE change 2f2fad0897cbfd Ben Gardon 2020-10-14 305 * @kvm: kvm instance 2f2fad0897cbfd Ben Gardon 2020-10-14 306 * @as_id: the address space of the paging structure the SPTE was a part of 2f2fad0897cbfd Ben Gardon 2020-10-14 307 * @gfn: the base GFN that was mapped by the SPTE 2f2fad0897cbfd Ben Gardon 2020-10-14 308 * @old_spte: The value of the SPTE before the change 2f2fad0897cbfd Ben Gardon 2020-10-14 309 * @new_spte: The value of the SPTE after the change 2f2fad0897cbfd Ben Gardon 2020-10-14 310 * @level: the level of the PT the SPTE is part of in the paging structure 2f2fad0897cbfd Ben Gardon 2020-10-14 311 * 2f2fad0897cbfd Ben Gardon 2020-10-14 312 * Handle bookkeeping that might result from the modification of a SPTE. 2f2fad0897cbfd Ben Gardon 2020-10-14 313 * This function must be called for all TDP SPTE modifications. 2f2fad0897cbfd Ben Gardon 2020-10-14 314 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 315 static void __handle_changed_spte(struct kvm *kvm, int as_id, gfn_t gfn, 2f2fad0897cbfd Ben Gardon 2020-10-14 316 u64 old_spte, u64 new_spte, int level) 2f2fad0897cbfd Ben Gardon 2020-10-14 317 { 2f2fad0897cbfd Ben Gardon 2020-10-14 318 bool was_present = is_shadow_present_pte(old_spte); 2f2fad0897cbfd Ben Gardon 2020-10-14 319 bool is_present = is_shadow_present_pte(new_spte); 2f2fad0897cbfd Ben Gardon 2020-10-14 320 bool was_leaf = was_present && is_last_spte(old_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 321 bool is_leaf = is_present && is_last_spte(new_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 322 bool pfn_changed = spte_to_pfn(old_spte) != spte_to_pfn(new_spte); 2f2fad0897cbfd Ben Gardon 2020-10-14 323 2f2fad0897cbfd Ben Gardon 2020-10-14 324 WARN_ON(level > PT64_ROOT_MAX_LEVEL); 2f2fad0897cbfd Ben Gardon 2020-10-14 325 WARN_ON(level < PG_LEVEL_4K); 764388ce598f0c Sean Christopherson 2020-10-23 326 WARN_ON(gfn & (KVM_PAGES_PER_HPAGE(level) - 1)); 2f2fad0897cbfd Ben Gardon 2020-10-14 327 2f2fad0897cbfd Ben Gardon 2020-10-14 328 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 329 * If this warning were to trigger it would indicate that there was a 2f2fad0897cbfd Ben Gardon 2020-10-14 330 * missing MMU notifier or a race with some notifier handler. 2f2fad0897cbfd Ben Gardon 2020-10-14 331 * A present, leaf SPTE should never be directly replaced with another 2f2fad0897cbfd Ben Gardon 2020-10-14 332 * present leaf SPTE pointing to a differnt PFN. A notifier handler 2f2fad0897cbfd Ben Gardon 2020-10-14 333 * should be zapping the SPTE before the main MM's page table is 2f2fad0897cbfd Ben Gardon 2020-10-14 334 * changed, or the SPTE should be zeroed, and the TLBs flushed by the 2f2fad0897cbfd Ben Gardon 2020-10-14 335 * thread before replacement. 2f2fad0897cbfd Ben Gardon 2020-10-14 336 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 337 if (was_leaf && is_leaf && pfn_changed) { 2f2fad0897cbfd Ben Gardon 2020-10-14 338 pr_err("Invalid SPTE change: cannot replace a present leaf\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 339 "SPTE with another present leaf SPTE mapping a\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 340 "different PFN!\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 341 "as_id: %d gfn: %llx old_spte: %llx new_spte: %llx level: %d", 2f2fad0897cbfd Ben Gardon 2020-10-14 342 as_id, gfn, old_spte, new_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 343 2f2fad0897cbfd Ben Gardon 2020-10-14 344 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 345 * Crash the host to prevent error propagation and guest data 2f2fad0897cbfd Ben Gardon 2020-10-14 346 * courruption. 2f2fad0897cbfd Ben Gardon 2020-10-14 347 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 348 BUG(); 2f2fad0897cbfd Ben Gardon 2020-10-14 349 } 2f2fad0897cbfd Ben Gardon 2020-10-14 350 2f2fad0897cbfd Ben Gardon 2020-10-14 351 if (old_spte == new_spte) 2f2fad0897cbfd Ben Gardon 2020-10-14 352 return; 2f2fad0897cbfd Ben Gardon 2020-10-14 353 b9a98c3437e353 Ben Gardon 2020-10-27 354 trace_kvm_tdp_mmu_spte_changed(as_id, gfn, level, old_spte, new_spte); b9a98c3437e353 Ben Gardon 2020-10-27 355 2f2fad0897cbfd Ben Gardon 2020-10-14 356 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 357 * The only times a SPTE should be changed from a non-present to 2f2fad0897cbfd Ben Gardon 2020-10-14 358 * non-present state is when an MMIO entry is installed/modified/ 2f2fad0897cbfd Ben Gardon 2020-10-14 359 * removed. In that case, there is nothing to do here. 2f2fad0897cbfd Ben Gardon 2020-10-14 360 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 361 if (!was_present && !is_present) { 2f2fad0897cbfd Ben Gardon 2020-10-14 362 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 363 * If this change does not involve a MMIO SPTE, it is 2f2fad0897cbfd Ben Gardon 2020-10-14 364 * unexpected. Log the change, though it should not impact the 2f2fad0897cbfd Ben Gardon 2020-10-14 365 * guest since both the former and current SPTEs are nonpresent. 2f2fad0897cbfd Ben Gardon 2020-10-14 366 */ 2f2fad0897cbfd Ben Gardon 2020-10-14 367 if (WARN_ON(!is_mmio_spte(old_spte) && !is_mmio_spte(new_spte))) 2f2fad0897cbfd Ben Gardon 2020-10-14 368 pr_err("Unexpected SPTE change! Nonpresent SPTEs\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 369 "should not be replaced with another,\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 370 "different nonpresent SPTE, unless one or both\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 371 "are MMIO SPTEs.\n" 2f2fad0897cbfd Ben Gardon 2020-10-14 372 "as_id: %d gfn: %llx old_spte: %llx new_spte: %llx level: %d", 2f2fad0897cbfd Ben Gardon 2020-10-14 373 as_id, gfn, old_spte, new_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 374 return; 2f2fad0897cbfd Ben Gardon 2020-10-14 375 } 2f2fad0897cbfd Ben Gardon 2020-10-14 376 2f2fad0897cbfd Ben Gardon 2020-10-14 377 2f2fad0897cbfd Ben Gardon 2020-10-14 378 if (was_leaf && is_dirty_spte(old_spte) && 2f2fad0897cbfd Ben Gardon 2020-10-14 379 (!is_dirty_spte(new_spte) || pfn_changed)) 2f2fad0897cbfd Ben Gardon 2020-10-14 380 kvm_set_pfn_dirty(spte_to_pfn(old_spte)); 2f2fad0897cbfd Ben Gardon 2020-10-14 381 2f2fad0897cbfd Ben Gardon 2020-10-14 382 /* 2f2fad0897cbfd Ben Gardon 2020-10-14 383 * Recursively handle child PTs if the change removed a subtree from 2f2fad0897cbfd Ben Gardon 2020-10-14 384 * the paging structure. 2f2fad0897cbfd Ben Gardon 2020-10-14 385 */ a066e61f13cf4b Ben Gardon 2021-02-02 386 if (was_present && !was_leaf && (pfn_changed || !is_present)) a066e61f13cf4b Ben Gardon 2021-02-02 387 handle_removed_tdp_mmu_page(kvm, a066e61f13cf4b Ben Gardon 2021-02-02 @388 spte_to_child_pt(old_spte, level)); 2f2fad0897cbfd Ben Gardon 2020-10-14 389 } 2f2fad0897cbfd Ben Gardon 2020-10-14 390 2f2fad0897cbfd Ben Gardon 2020-10-14 391 static void handle_changed_spte(struct kvm *kvm, int as_id, gfn_t gfn, 2f2fad0897cbfd Ben Gardon 2020-10-14 392 u64 old_spte, u64 new_spte, int level) 2f2fad0897cbfd Ben Gardon 2020-10-14 393 { 2f2fad0897cbfd Ben Gardon 2020-10-14 394 __handle_changed_spte(kvm, as_id, gfn, old_spte, new_spte, level); f8e144971c6834 Ben Gardon 2020-10-14 395 handle_changed_spte_acc_track(old_spte, new_spte, level); a6a0b05da9f37f Ben Gardon 2020-10-14 396 handle_changed_spte_dirty_log(kvm, as_id, gfn, old_spte, a6a0b05da9f37f Ben Gardon 2020-10-14 397 new_spte, level); 2f2fad0897cbfd Ben Gardon 2020-10-14 398 } faaf05b00aecdb Ben Gardon 2020-10-14 399 fe43fa2f407b9d Ben Gardon 2021-02-02 400 /* fe43fa2f407b9d Ben Gardon 2021-02-02 401 * __tdp_mmu_set_spte - Set a TDP MMU SPTE and handle the associated bookkeeping fe43fa2f407b9d Ben Gardon 2021-02-02 402 * @kvm: kvm instance fe43fa2f407b9d Ben Gardon 2021-02-02 403 * @iter: a tdp_iter instance currently on the SPTE that should be set fe43fa2f407b9d Ben Gardon 2021-02-02 404 * @new_spte: The value the SPTE should be set to fe43fa2f407b9d Ben Gardon 2021-02-02 405 * @record_acc_track: Notify the MM subsystem of changes to the accessed state fe43fa2f407b9d Ben Gardon 2021-02-02 406 * of the page. Should be set unless handling an MMU fe43fa2f407b9d Ben Gardon 2021-02-02 407 * notifier for access tracking. Leaving record_acc_track fe43fa2f407b9d Ben Gardon 2021-02-02 408 * unset in that case prevents page accesses from being fe43fa2f407b9d Ben Gardon 2021-02-02 409 * double counted. fe43fa2f407b9d Ben Gardon 2021-02-02 410 * @record_dirty_log: Record the page as dirty in the dirty bitmap if fe43fa2f407b9d Ben Gardon 2021-02-02 411 * appropriate for the change being made. Should be set fe43fa2f407b9d Ben Gardon 2021-02-02 412 * unless performing certain dirty logging operations. fe43fa2f407b9d Ben Gardon 2021-02-02 413 * Leaving record_dirty_log unset in that case prevents page fe43fa2f407b9d Ben Gardon 2021-02-02 414 * writes from being double counted. fe43fa2f407b9d Ben Gardon 2021-02-02 415 */ f8e144971c6834 Ben Gardon 2020-10-14 416 static inline void __tdp_mmu_set_spte(struct kvm *kvm, struct tdp_iter *iter, a6a0b05da9f37f Ben Gardon 2020-10-14 417 u64 new_spte, bool record_acc_track, a6a0b05da9f37f Ben Gardon 2020-10-14 418 bool record_dirty_log) faaf05b00aecdb Ben Gardon 2020-10-14 419 { 7cca2d0b7e7d9f Ben Gardon 2021-02-02 420 tdp_ptep_t root_pt = tdp_iter_root_pt(iter); faaf05b00aecdb Ben Gardon 2020-10-14 @421 struct kvm_mmu_page *root = sptep_to_sp(root_pt); faaf05b00aecdb Ben Gardon 2020-10-14 422 int as_id = kvm_mmu_page_as_id(root); faaf05b00aecdb Ben Gardon 2020-10-14 423 3a9a4aa5657471 Ben Gardon 2021-02-02 424 lockdep_assert_held(&kvm->mmu_lock); 3a9a4aa5657471 Ben Gardon 2021-02-02 425 7cca2d0b7e7d9f Ben Gardon 2021-02-02 426 WRITE_ONCE(*rcu_dereference(iter->sptep), new_spte); faaf05b00aecdb Ben Gardon 2020-10-14 427 f8e144971c6834 Ben Gardon 2020-10-14 428 __handle_changed_spte(kvm, as_id, iter->gfn, iter->old_spte, new_spte, faaf05b00aecdb Ben Gardon 2020-10-14 429 iter->level); f8e144971c6834 Ben Gardon 2020-10-14 430 if (record_acc_track) f8e144971c6834 Ben Gardon 2020-10-14 431 handle_changed_spte_acc_track(iter->old_spte, new_spte, f8e144971c6834 Ben Gardon 2020-10-14 432 iter->level); a6a0b05da9f37f Ben Gardon 2020-10-14 433 if (record_dirty_log) a6a0b05da9f37f Ben Gardon 2020-10-14 434 handle_changed_spte_dirty_log(kvm, as_id, iter->gfn, a6a0b05da9f37f Ben Gardon 2020-10-14 435 iter->old_spte, new_spte, a6a0b05da9f37f Ben Gardon 2020-10-14 436 iter->level); f8e144971c6834 Ben Gardon 2020-10-14 437 } f8e144971c6834 Ben Gardon 2020-10-14 438 f8e144971c6834 Ben Gardon 2020-10-14 439 static inline void tdp_mmu_set_spte(struct kvm *kvm, struct tdp_iter *iter, f8e144971c6834 Ben Gardon 2020-10-14 440 u64 new_spte) f8e144971c6834 Ben Gardon 2020-10-14 441 { a6a0b05da9f37f Ben Gardon 2020-10-14 442 __tdp_mmu_set_spte(kvm, iter, new_spte, true, true); f8e144971c6834 Ben Gardon 2020-10-14 443 } f8e144971c6834 Ben Gardon 2020-10-14 444 f8e144971c6834 Ben Gardon 2020-10-14 445 static inline void tdp_mmu_set_spte_no_acc_track(struct kvm *kvm, f8e144971c6834 Ben Gardon 2020-10-14 446 struct tdp_iter *iter, f8e144971c6834 Ben Gardon 2020-10-14 447 u64 new_spte) f8e144971c6834 Ben Gardon 2020-10-14 448 { a6a0b05da9f37f Ben Gardon 2020-10-14 449 __tdp_mmu_set_spte(kvm, iter, new_spte, false, true); a6a0b05da9f37f Ben Gardon 2020-10-14 450 } a6a0b05da9f37f Ben Gardon 2020-10-14 451 a6a0b05da9f37f Ben Gardon 2020-10-14 452 static inline void tdp_mmu_set_spte_no_dirty_log(struct kvm *kvm, a6a0b05da9f37f Ben Gardon 2020-10-14 453 struct tdp_iter *iter, a6a0b05da9f37f Ben Gardon 2020-10-14 454 u64 new_spte) a6a0b05da9f37f Ben Gardon 2020-10-14 455 { a6a0b05da9f37f Ben Gardon 2020-10-14 456 __tdp_mmu_set_spte(kvm, iter, new_spte, true, false); faaf05b00aecdb Ben Gardon 2020-10-14 457 } faaf05b00aecdb Ben Gardon 2020-10-14 458 faaf05b00aecdb Ben Gardon 2020-10-14 459 #define tdp_root_for_each_pte(_iter, _root, _start, _end) \ faaf05b00aecdb Ben Gardon 2020-10-14 460 for_each_tdp_pte(_iter, _root->spt, _root->role.level, _start, _end) faaf05b00aecdb Ben Gardon 2020-10-14 461 f8e144971c6834 Ben Gardon 2020-10-14 462 #define tdp_root_for_each_leaf_pte(_iter, _root, _start, _end) \ f8e144971c6834 Ben Gardon 2020-10-14 463 tdp_root_for_each_pte(_iter, _root, _start, _end) \ f8e144971c6834 Ben Gardon 2020-10-14 464 if (!is_shadow_present_pte(_iter.old_spte) || \ f8e144971c6834 Ben Gardon 2020-10-14 465 !is_last_spte(_iter.old_spte, _iter.level)) \ f8e144971c6834 Ben Gardon 2020-10-14 466 continue; \ f8e144971c6834 Ben Gardon 2020-10-14 467 else f8e144971c6834 Ben Gardon 2020-10-14 468 bb18842e21111a Ben Gardon 2020-10-14 469 #define tdp_mmu_for_each_pte(_iter, _mmu, _start, _end) \ bb18842e21111a Ben Gardon 2020-10-14 470 for_each_tdp_pte(_iter, __va(_mmu->root_hpa), \ bb18842e21111a Ben Gardon 2020-10-14 471 _mmu->shadow_root_level, _start, _end) bb18842e21111a Ben Gardon 2020-10-14 472 e28a436ca4f653 Ben Gardon 2021-02-02 473 /* e28a436ca4f653 Ben Gardon 2021-02-02 474 * Yield if the MMU lock is contended or this thread needs to return control e28a436ca4f653 Ben Gardon 2021-02-02 475 * to the scheduler. e28a436ca4f653 Ben Gardon 2021-02-02 476 * e139a34ef9d562 Ben Gardon 2021-02-02 477 * If this function should yield and flush is set, it will perform a remote e139a34ef9d562 Ben Gardon 2021-02-02 478 * TLB flush before yielding. e139a34ef9d562 Ben Gardon 2021-02-02 479 * e28a436ca4f653 Ben Gardon 2021-02-02 480 * If this function yields, it will also reset the tdp_iter's walk over the ed5e484b79e8a9 Ben Gardon 2021-02-02 481 * paging structure and the calling function should skip to the next ed5e484b79e8a9 Ben Gardon 2021-02-02 482 * iteration to allow the iterator to continue its traversal from the ed5e484b79e8a9 Ben Gardon 2021-02-02 483 * paging structure root. e28a436ca4f653 Ben Gardon 2021-02-02 484 * e28a436ca4f653 Ben Gardon 2021-02-02 485 * Return true if this function yielded and the iterator's traversal was reset. e28a436ca4f653 Ben Gardon 2021-02-02 486 * Return false if a yield was not needed. e28a436ca4f653 Ben Gardon 2021-02-02 487 */ e139a34ef9d562 Ben Gardon 2021-02-02 488 static inline bool tdp_mmu_iter_cond_resched(struct kvm *kvm, e139a34ef9d562 Ben Gardon 2021-02-02 489 struct tdp_iter *iter, bool flush) a6a0b05da9f37f Ben Gardon 2020-10-14 490 { ed5e484b79e8a9 Ben Gardon 2021-02-02 491 /* Ensure forward progress has been made before yielding. */ ed5e484b79e8a9 Ben Gardon 2021-02-02 492 if (iter->next_last_level_gfn == iter->yielded_gfn) ed5e484b79e8a9 Ben Gardon 2021-02-02 493 return false; ed5e484b79e8a9 Ben Gardon 2021-02-02 494 a6a0b05da9f37f Ben Gardon 2020-10-14 495 if (need_resched() || spin_needbreak(&kvm->mmu_lock)) { 7cca2d0b7e7d9f Ben Gardon 2021-02-02 496 rcu_read_unlock(); 7cca2d0b7e7d9f Ben Gardon 2021-02-02 497 e139a34ef9d562 Ben Gardon 2021-02-02 498 if (flush) e139a34ef9d562 Ben Gardon 2021-02-02 499 kvm_flush_remote_tlbs(kvm); e139a34ef9d562 Ben Gardon 2021-02-02 500 a6a0b05da9f37f Ben Gardon 2020-10-14 501 cond_resched_lock(&kvm->mmu_lock); 7cca2d0b7e7d9f Ben Gardon 2021-02-02 502 rcu_read_lock(); ed5e484b79e8a9 Ben Gardon 2021-02-02 503 ed5e484b79e8a9 Ben Gardon 2021-02-02 504 WARN_ON(iter->gfn > iter->next_last_level_gfn); ed5e484b79e8a9 Ben Gardon 2021-02-02 505 ed5e484b79e8a9 Ben Gardon 2021-02-02 @506 tdp_iter_start(iter, iter->pt_path[iter->root_level - 1], ed5e484b79e8a9 Ben Gardon 2021-02-02 507 iter->root_level, iter->min_level, ed5e484b79e8a9 Ben Gardon 2021-02-02 508 iter->next_last_level_gfn); ed5e484b79e8a9 Ben Gardon 2021-02-02 509 e28a436ca4f653 Ben Gardon 2021-02-02 510 return true; a6a0b05da9f37f Ben Gardon 2020-10-14 511 } e28a436ca4f653 Ben Gardon 2021-02-02 512 e28a436ca4f653 Ben Gardon 2021-02-02 513 return false; a6a0b05da9f37f Ben Gardon 2020-10-14 514 } a6a0b05da9f37f Ben Gardon 2020-10-14 515 :::::: The code at line 388 was first introduced by commit :::::: a066e61f13cf4b17d043ad8bea0cdde2b1e5ee49 KVM: x86/mmu: Factor out handling of removed page tables :::::: TO: Ben Gardon :::::: CC: Paolo Bonzini --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org --SLDf9lqlvOQaIe6s Content-Type: application/gzip Content-Disposition: attachment; filename=".config.gz" Content-Transfer-Encoding: base64 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 --SLDf9lqlvOQaIe6s--