All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild@lists.01.org
Subject: Re: [PATCH 20/22] kvm: mmu: NX largepage recovery for TDP MMU
Date: Fri, 09 Oct 2020 14:03:41 +0300	[thread overview]
Message-ID: <20201009110341.GH1042@kadam> (raw)
In-Reply-To: <20200925212302.3979661-21-bgardon@google.com>

[-- Attachment #1: Type: text/plain, Size: 4684 bytes --]

Hi Ben,

url:    https://github.com/0day-ci/linux/commits/Ben-Gardon/Introduce-the-TDP-MMU/20200926-052649
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 6d28cf7dfede6cfca5119a0d415a6a447c68f3a0
config: x86_64-randconfig-m001-20201008 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
arch/x86/kvm/mmu/tdp_mmu.c:1280 kvm_tdp_mmu_recover_nx_lpages() error: uninitialized symbol 'flush'.

Old smatch warnings:
arch/x86/kvm/mmu/tdp_mmu.c:786 set_tdp_spte() error: uninitialized symbol 'new_spte'.

vim +/flush +1280 arch/x86/kvm/mmu/tdp_mmu.c

db486646d29d61d Ben Gardon 2020-09-25  1234  void kvm_tdp_mmu_recover_nx_lpages(struct kvm *kvm)
db486646d29d61d Ben Gardon 2020-09-25  1235  {
db486646d29d61d Ben Gardon 2020-09-25  1236  	struct kvm_mmu_page *sp;
db486646d29d61d Ben Gardon 2020-09-25  1237  	bool flush;
db486646d29d61d Ben Gardon 2020-09-25  1238  	int rcu_idx;
db486646d29d61d Ben Gardon 2020-09-25  1239  	unsigned int ratio;
db486646d29d61d Ben Gardon 2020-09-25  1240  	ulong to_zap;
db486646d29d61d Ben Gardon 2020-09-25  1241  	u64 old_spte;
db486646d29d61d Ben Gardon 2020-09-25  1242  
db486646d29d61d Ben Gardon 2020-09-25  1243  	rcu_idx = srcu_read_lock(&kvm->srcu);
db486646d29d61d Ben Gardon 2020-09-25  1244  	spin_lock(&kvm->mmu_lock);
db486646d29d61d Ben Gardon 2020-09-25  1245  
db486646d29d61d Ben Gardon 2020-09-25  1246  	ratio = READ_ONCE(nx_huge_pages_recovery_ratio);
db486646d29d61d Ben Gardon 2020-09-25  1247  	to_zap = ratio ? DIV_ROUND_UP(kvm->stat.nx_lpage_splits, ratio) : 0;

If "to_zap" is false then "flush" is uninitialized.

db486646d29d61d Ben Gardon 2020-09-25  1248  
db486646d29d61d Ben Gardon 2020-09-25  1249  	while (to_zap &&
db486646d29d61d Ben Gardon 2020-09-25  1250  	       !list_empty(&kvm->arch.tdp_mmu_lpage_disallowed_pages)) {
db486646d29d61d Ben Gardon 2020-09-25  1251  		/*
db486646d29d61d Ben Gardon 2020-09-25  1252  		 * We use a separate list instead of just using active_mmu_pages
db486646d29d61d Ben Gardon 2020-09-25  1253  		 * because the number of lpage_disallowed pages is expected to
db486646d29d61d Ben Gardon 2020-09-25  1254  		 * be relatively small compared to the total.
db486646d29d61d Ben Gardon 2020-09-25  1255  		 */
db486646d29d61d Ben Gardon 2020-09-25  1256  		sp = list_first_entry(&kvm->arch.tdp_mmu_lpage_disallowed_pages,
db486646d29d61d Ben Gardon 2020-09-25  1257  				      struct kvm_mmu_page,
db486646d29d61d Ben Gardon 2020-09-25  1258  				      lpage_disallowed_link);
db486646d29d61d Ben Gardon 2020-09-25  1259  
db486646d29d61d Ben Gardon 2020-09-25  1260  		old_spte = *sp->parent_sptep;
db486646d29d61d Ben Gardon 2020-09-25  1261  		*sp->parent_sptep = 0;
db486646d29d61d Ben Gardon 2020-09-25  1262  
db486646d29d61d Ben Gardon 2020-09-25  1263  		list_del(&sp->lpage_disallowed_link);
db486646d29d61d Ben Gardon 2020-09-25  1264  		kvm->arch.tdp_mmu_lpage_disallowed_page_count--;
db486646d29d61d Ben Gardon 2020-09-25  1265  
db486646d29d61d Ben Gardon 2020-09-25  1266  		handle_changed_spte(kvm, kvm_mmu_page_as_id(sp), sp->gfn,
db486646d29d61d Ben Gardon 2020-09-25  1267  				    old_spte, 0, sp->role.level + 1);
db486646d29d61d Ben Gardon 2020-09-25  1268  
db486646d29d61d Ben Gardon 2020-09-25  1269  		flush = true;
db486646d29d61d Ben Gardon 2020-09-25  1270  
db486646d29d61d Ben Gardon 2020-09-25  1271  		if (!--to_zap || need_resched() ||
db486646d29d61d Ben Gardon 2020-09-25  1272  		    spin_needbreak(&kvm->mmu_lock)) {
db486646d29d61d Ben Gardon 2020-09-25  1273  			flush = false;
db486646d29d61d Ben Gardon 2020-09-25  1274  			kvm_flush_remote_tlbs(kvm);
db486646d29d61d Ben Gardon 2020-09-25  1275  			if (to_zap)
db486646d29d61d Ben Gardon 2020-09-25  1276  				cond_resched_lock(&kvm->mmu_lock);
db486646d29d61d Ben Gardon 2020-09-25  1277  		}
db486646d29d61d Ben Gardon 2020-09-25  1278  	}
db486646d29d61d Ben Gardon 2020-09-25  1279  
db486646d29d61d Ben Gardon 2020-09-25 @1280  	if (flush)
db486646d29d61d Ben Gardon 2020-09-25  1281  		kvm_flush_remote_tlbs(kvm);
db486646d29d61d Ben Gardon 2020-09-25  1282  
db486646d29d61d Ben Gardon 2020-09-25  1283  	spin_unlock(&kvm->mmu_lock);
db486646d29d61d Ben Gardon 2020-09-25  1284  	srcu_read_unlock(&kvm->srcu, rcu_idx);
db486646d29d61d Ben Gardon 2020-09-25  1285  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 41414 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: Dan Carpenter <dan.carpenter@oracle.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH 20/22] kvm: mmu: NX largepage recovery for TDP MMU
Date: Fri, 09 Oct 2020 14:03:41 +0300	[thread overview]
Message-ID: <20201009110341.GH1042@kadam> (raw)
In-Reply-To: <20200925212302.3979661-21-bgardon@google.com>

[-- Attachment #1: Type: text/plain, Size: 4684 bytes --]

Hi Ben,

url:    https://github.com/0day-ci/linux/commits/Ben-Gardon/Introduce-the-TDP-MMU/20200926-052649
base:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 6d28cf7dfede6cfca5119a0d415a6a447c68f3a0
config: x86_64-randconfig-m001-20201008 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
arch/x86/kvm/mmu/tdp_mmu.c:1280 kvm_tdp_mmu_recover_nx_lpages() error: uninitialized symbol 'flush'.

Old smatch warnings:
arch/x86/kvm/mmu/tdp_mmu.c:786 set_tdp_spte() error: uninitialized symbol 'new_spte'.

vim +/flush +1280 arch/x86/kvm/mmu/tdp_mmu.c

db486646d29d61d Ben Gardon 2020-09-25  1234  void kvm_tdp_mmu_recover_nx_lpages(struct kvm *kvm)
db486646d29d61d Ben Gardon 2020-09-25  1235  {
db486646d29d61d Ben Gardon 2020-09-25  1236  	struct kvm_mmu_page *sp;
db486646d29d61d Ben Gardon 2020-09-25  1237  	bool flush;
db486646d29d61d Ben Gardon 2020-09-25  1238  	int rcu_idx;
db486646d29d61d Ben Gardon 2020-09-25  1239  	unsigned int ratio;
db486646d29d61d Ben Gardon 2020-09-25  1240  	ulong to_zap;
db486646d29d61d Ben Gardon 2020-09-25  1241  	u64 old_spte;
db486646d29d61d Ben Gardon 2020-09-25  1242  
db486646d29d61d Ben Gardon 2020-09-25  1243  	rcu_idx = srcu_read_lock(&kvm->srcu);
db486646d29d61d Ben Gardon 2020-09-25  1244  	spin_lock(&kvm->mmu_lock);
db486646d29d61d Ben Gardon 2020-09-25  1245  
db486646d29d61d Ben Gardon 2020-09-25  1246  	ratio = READ_ONCE(nx_huge_pages_recovery_ratio);
db486646d29d61d Ben Gardon 2020-09-25  1247  	to_zap = ratio ? DIV_ROUND_UP(kvm->stat.nx_lpage_splits, ratio) : 0;

If "to_zap" is false then "flush" is uninitialized.

db486646d29d61d Ben Gardon 2020-09-25  1248  
db486646d29d61d Ben Gardon 2020-09-25  1249  	while (to_zap &&
db486646d29d61d Ben Gardon 2020-09-25  1250  	       !list_empty(&kvm->arch.tdp_mmu_lpage_disallowed_pages)) {
db486646d29d61d Ben Gardon 2020-09-25  1251  		/*
db486646d29d61d Ben Gardon 2020-09-25  1252  		 * We use a separate list instead of just using active_mmu_pages
db486646d29d61d Ben Gardon 2020-09-25  1253  		 * because the number of lpage_disallowed pages is expected to
db486646d29d61d Ben Gardon 2020-09-25  1254  		 * be relatively small compared to the total.
db486646d29d61d Ben Gardon 2020-09-25  1255  		 */
db486646d29d61d Ben Gardon 2020-09-25  1256  		sp = list_first_entry(&kvm->arch.tdp_mmu_lpage_disallowed_pages,
db486646d29d61d Ben Gardon 2020-09-25  1257  				      struct kvm_mmu_page,
db486646d29d61d Ben Gardon 2020-09-25  1258  				      lpage_disallowed_link);
db486646d29d61d Ben Gardon 2020-09-25  1259  
db486646d29d61d Ben Gardon 2020-09-25  1260  		old_spte = *sp->parent_sptep;
db486646d29d61d Ben Gardon 2020-09-25  1261  		*sp->parent_sptep = 0;
db486646d29d61d Ben Gardon 2020-09-25  1262  
db486646d29d61d Ben Gardon 2020-09-25  1263  		list_del(&sp->lpage_disallowed_link);
db486646d29d61d Ben Gardon 2020-09-25  1264  		kvm->arch.tdp_mmu_lpage_disallowed_page_count--;
db486646d29d61d Ben Gardon 2020-09-25  1265  
db486646d29d61d Ben Gardon 2020-09-25  1266  		handle_changed_spte(kvm, kvm_mmu_page_as_id(sp), sp->gfn,
db486646d29d61d Ben Gardon 2020-09-25  1267  				    old_spte, 0, sp->role.level + 1);
db486646d29d61d Ben Gardon 2020-09-25  1268  
db486646d29d61d Ben Gardon 2020-09-25  1269  		flush = true;
db486646d29d61d Ben Gardon 2020-09-25  1270  
db486646d29d61d Ben Gardon 2020-09-25  1271  		if (!--to_zap || need_resched() ||
db486646d29d61d Ben Gardon 2020-09-25  1272  		    spin_needbreak(&kvm->mmu_lock)) {
db486646d29d61d Ben Gardon 2020-09-25  1273  			flush = false;
db486646d29d61d Ben Gardon 2020-09-25  1274  			kvm_flush_remote_tlbs(kvm);
db486646d29d61d Ben Gardon 2020-09-25  1275  			if (to_zap)
db486646d29d61d Ben Gardon 2020-09-25  1276  				cond_resched_lock(&kvm->mmu_lock);
db486646d29d61d Ben Gardon 2020-09-25  1277  		}
db486646d29d61d Ben Gardon 2020-09-25  1278  	}
db486646d29d61d Ben Gardon 2020-09-25  1279  
db486646d29d61d Ben Gardon 2020-09-25 @1280  	if (flush)
db486646d29d61d Ben Gardon 2020-09-25  1281  		kvm_flush_remote_tlbs(kvm);
db486646d29d61d Ben Gardon 2020-09-25  1282  
db486646d29d61d Ben Gardon 2020-09-25  1283  	spin_unlock(&kvm->mmu_lock);
db486646d29d61d Ben Gardon 2020-09-25  1284  	srcu_read_unlock(&kvm->srcu, rcu_idx);
db486646d29d61d Ben Gardon 2020-09-25  1285  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 41414 bytes --]

  parent reply	other threads:[~2020-10-09 11:03 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-25 21:22 [PATCH 00/22] Introduce the TDP MMU Ben Gardon
2020-09-25 21:22 ` [PATCH 01/22] kvm: mmu: Separate making SPTEs from set_spte Ben Gardon
2020-09-30  4:55   ` Sean Christopherson
2020-09-30 23:03     ` Ben Gardon
2020-09-25 21:22 ` [PATCH 02/22] kvm: mmu: Introduce tdp_iter Ben Gardon
2020-09-26  0:04   ` Paolo Bonzini
2020-09-30  5:06     ` Sean Christopherson
2020-09-26  0:54   ` Paolo Bonzini
2020-09-30  5:08   ` Sean Christopherson
2020-09-30  5:24   ` Sean Christopherson
2020-09-30  6:24     ` Paolo Bonzini
2020-09-30 23:20   ` Eric van Tassell
2020-09-30 23:34     ` Paolo Bonzini
2020-10-01  0:07       ` Sean Christopherson
2020-09-25 21:22 ` [PATCH 03/22] kvm: mmu: Init / Uninit the TDP MMU Ben Gardon
2020-09-26  0:06   ` Paolo Bonzini
2020-09-30  5:34   ` Sean Christopherson
2020-09-30 18:36     ` Ben Gardon
2020-09-30 16:57   ` Sean Christopherson
2020-09-30 17:39     ` Paolo Bonzini
2020-09-30 18:42       ` Ben Gardon
2020-09-25 21:22 ` [PATCH 04/22] kvm: mmu: Allocate and free TDP MMU roots Ben Gardon
2020-09-30  6:06   ` Sean Christopherson
2020-09-30  6:26     ` Paolo Bonzini
2020-09-30 15:38       ` Sean Christopherson
2020-10-12 22:59     ` Ben Gardon
2020-10-12 23:59       ` Sean Christopherson
2020-09-25 21:22 ` [PATCH 05/22] kvm: mmu: Add functions to handle changed TDP SPTEs Ben Gardon
2020-09-26  0:39   ` Paolo Bonzini
2020-09-28 17:23     ` Paolo Bonzini
2020-09-25 21:22 ` [PATCH 06/22] kvm: mmu: Make address space ID a property of memslots Ben Gardon
2020-09-30  6:10   ` Sean Christopherson
2020-09-30 23:11     ` Ben Gardon
2020-09-25 21:22 ` [PATCH 07/22] kvm: mmu: Support zapping SPTEs in the TDP MMU Ben Gardon
2020-09-26  0:14   ` Paolo Bonzini
2020-09-30  6:15   ` Sean Christopherson
2020-09-30  6:28     ` Paolo Bonzini
2020-09-25 21:22 ` [PATCH 08/22] kvm: mmu: Separate making non-leaf sptes from link_shadow_page Ben Gardon
2020-09-25 21:22 ` [PATCH 09/22] kvm: mmu: Remove disallowed_hugepage_adjust shadow_walk_iterator arg Ben Gardon
2020-09-30 16:19   ` Sean Christopherson
2020-09-25 21:22 ` [PATCH 10/22] kvm: mmu: Add TDP MMU PF handler Ben Gardon
2020-09-26  0:24   ` Paolo Bonzini
2020-09-30 16:37   ` Sean Christopherson
2020-09-30 16:55     ` Paolo Bonzini
2020-09-30 17:37     ` Paolo Bonzini
2020-10-06 22:35       ` Ben Gardon
2020-10-06 22:33     ` Ben Gardon
2020-10-07 20:55       ` Sean Christopherson
2020-09-25 21:22 ` [PATCH 11/22] kvm: mmu: Factor out allocating a new tdp_mmu_page Ben Gardon
2020-09-26  0:22   ` Paolo Bonzini
2020-09-30 18:53     ` Ben Gardon
2020-09-25 21:22 ` [PATCH 12/22] kvm: mmu: Allocate struct kvm_mmu_pages for all pages in TDP MMU Ben Gardon
2020-09-25 21:22 ` [PATCH 13/22] kvm: mmu: Support invalidate range MMU notifier for " Ben Gardon
2020-09-30 17:03   ` Sean Christopherson
2020-09-30 23:15     ` Ben Gardon
2020-09-30 23:24       ` Sean Christopherson
2020-09-30 23:27         ` Ben Gardon
2020-09-25 21:22 ` [PATCH 14/22] kvm: mmu: Add access tracking for tdp_mmu Ben Gardon
2020-09-26  0:32   ` Paolo Bonzini
2020-09-30 17:48   ` Sean Christopherson
2020-10-06 23:38     ` Ben Gardon
2020-09-25 21:22 ` [PATCH 15/22] kvm: mmu: Support changed pte notifier in tdp MMU Ben Gardon
2020-09-26  0:33   ` Paolo Bonzini
2020-09-28 15:11   ` Paolo Bonzini
2020-10-07 16:53     ` Ben Gardon
2020-10-07 17:18       ` Paolo Bonzini
2020-10-07 17:30         ` Ben Gardon
2020-10-07 17:54           ` Paolo Bonzini
2020-10-09 10:59   ` Dan Carpenter
2020-10-09 10:59     ` Dan Carpenter
2020-09-25 21:22 ` [PATCH 16/22] kvm: mmu: Add dirty logging handler for changed sptes Ben Gardon
2020-09-26  0:45   ` Paolo Bonzini
2020-09-25 21:22 ` [PATCH 17/22] kvm: mmu: Support dirty logging for the TDP MMU Ben Gardon
2020-09-26  1:04   ` Paolo Bonzini
2020-10-08 18:27     ` Ben Gardon
2020-09-29 15:07   ` Paolo Bonzini
2020-09-30 18:04   ` Sean Christopherson
2020-09-30 18:08     ` Paolo Bonzini
2020-09-25 21:22 ` [PATCH 18/22] kvm: mmu: Support disabling dirty logging for the tdp MMU Ben Gardon
2020-09-26  1:09   ` Paolo Bonzini
2020-10-07 16:30     ` Ben Gardon
2020-10-07 17:21       ` Paolo Bonzini
2020-10-07 17:28         ` Ben Gardon
2020-10-07 17:53           ` Paolo Bonzini
2020-09-25 21:22 ` [PATCH 19/22] kvm: mmu: Support write protection for nesting in " Ben Gardon
2020-09-30 18:06   ` Sean Christopherson
2020-09-25 21:23 ` [PATCH 20/22] kvm: mmu: NX largepage recovery for TDP MMU Ben Gardon
2020-09-26  1:14   ` Paolo Bonzini
2020-09-30 22:23     ` Ben Gardon
2020-09-29 18:24   ` Paolo Bonzini
2020-09-30 18:15   ` Sean Christopherson
2020-09-30 19:56     ` Paolo Bonzini
2020-09-30 22:33       ` Ben Gardon
2020-09-30 22:27     ` Ben Gardon
2020-10-09 11:03   ` Dan Carpenter [this message]
2020-10-09 11:03     ` Dan Carpenter
2020-09-25 21:23 ` [PATCH 21/22] kvm: mmu: Support MMIO in the " Ben Gardon
2020-09-30 18:19   ` Sean Christopherson
2020-10-09 11:43   ` Dan Carpenter
2020-10-09 11:43     ` Dan Carpenter
2020-09-25 21:23 ` [PATCH 22/22] kvm: mmu: Don't clear write flooding count for direct roots Ben Gardon
2020-09-26  1:25   ` Paolo Bonzini
2020-10-05 22:48     ` Ben Gardon
2020-10-05 23:44       ` Sean Christopherson
2020-10-06 16:19         ` Ben Gardon
2020-09-26  1:14 ` [PATCH 00/22] Introduce the TDP MMU Paolo Bonzini
2020-09-28 17:31 ` Paolo Bonzini
2020-09-29 17:40   ` Ben Gardon
2020-09-29 18:10     ` Paolo Bonzini
2020-09-30  6:19 ` Sean Christopherson
2020-09-30  6:30   ` Paolo Bonzini
  -- strict thread matches above, loose matches on Subject: below --
2020-10-07 23:24 [PATCH 20/22] kvm: mmu: NX largepage recovery for " kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201009110341.GH1042@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=kbuild@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.