> v1 -> v2: > - compile test the code. > - fill KVM_BUG() with kvm_get_running_vcpu()->kvm Nope, the zapping code paths will run often with no running vCPU, for example drop_parent_pte <- kvm_mmu_unlink_parents <- __kvm_mmu_prepare_zap_page <- kvm_zap_obsolete_pages <- kvm_mmu_zap_all_fast <- kvm_mmu_invalidate_zap_pages_in_memslot <- kvm_page_track_flush_slot <- kvm_arch_flush_shadow_memslot <- kvm_invalidate_memslot <- ioctl(KVM_SET_USER_MEMORY_REGION). Paolo > v1: > https://lore.kernel.org/all/20221123231206.274392-1-mizhang@xxxxxxxxxx/ > > Cc: Nagareddy Reddy <nspreddy@xxxxxxxxxx> > Cc: Jim Mattson <jmattson@xxxxxxxxxx> > Cc: David Matlack <dmatlack@xxxxxxxxxx> > Signed-off-by: Mingwei Zhang <mizhang@xxxxxxxxxx> > --- > arch/x86/kvm/mmu/mmu.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c > index 4736d7849c60..f3b307c588ac 100644 > --- a/arch/x86/kvm/mmu/mmu.c > +++ b/arch/x86/kvm/mmu/mmu.c > @@ -955,12 +955,12 @@ static void pte_list_remove(u64 *spte, struct kvm_rmap_head *rmap_head) > > if (!rmap_head->val) { > pr_err("%s: %p 0->BUG\n", __func__, spte); > - BUG(); > + KVM_BUG(true, kvm_get_running_vcpu()->kvm, ""); > } else if (!(rmap_head->val & 1)) { > rmap_printk("%p 1->0\n", spte); > if ((u64 *)rmap_head->val != spte) { > pr_err("%s: %p 1->BUG\n", __func__, spte); > - BUG(); > + KVM_BUG(true, kvm_get_running_vcpu()->kvm, ""); > } > rmap_head->val = 0; > } else { > @@ -979,7 +979,7 @@ static void pte_list_remove(u64 *spte, struct kvm_rmap_head *rmap_head) > desc = desc->more; > } > pr_err("%s: %p many->many\n", __func__, spte); > - BUG(); > + KVM_BUG(true, kvm_get_running_vcpu()->kvm, ""); > } > } > > -- > 2.38.1.584.g0f3c55d4c2-goog >