lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 1 Apr 2021 09:50:05 -0700 From: Ben Gardon <bgardon@...gle.com> To: Paolo Bonzini <pbonzini@...hat.com> Cc: LKML <linux-kernel@...r.kernel.org>, kvm <kvm@...r.kernel.org>, Peter Xu <peterx@...hat.com>, Sean Christopherson <seanjc@...gle.com>, Peter Shier <pshier@...gle.com>, Peter Feiner <pfeiner@...gle.com>, Junaid Shahid <junaids@...gle.com>, Jim Mattson <jmattson@...gle.com>, Yulei Zhang <yulei.kernel@...il.com>, Wanpeng Li <kernellwp@...il.com>, Vitaly Kuznetsov <vkuznets@...hat.com>, Xiao Guangrong <xiaoguangrong.eric@...il.com> Subject: Re: [PATCH 12/13] KVM: x86/mmu: Fast invalidation for TDP MMU On Thu, Apr 1, 2021 at 3:36 AM Paolo Bonzini <pbonzini@...hat.com> wrote: > > On 31/03/21 23:08, Ben Gardon wrote: > > > > + if (is_tdp_mmu_enabled(kvm)) > > + kvm_tdp_mmu_invalidate_roots(kvm); > > + > > /* > > * Toggle mmu_valid_gen between '0' and '1'. Because slots_lock is > > * held for the entire duration of zapping obsolete pages, it's > > @@ -5451,9 +5454,6 @@ static void kvm_mmu_zap_all_fast(struct kvm *kvm) > > > > kvm_zap_obsolete_pages(kvm); > > > > - if (is_tdp_mmu_enabled(kvm)) > > - kvm_tdp_mmu_zap_all(kvm); > > - > > This is just cosmetic, but I'd prefer to keep the call to > kvm_tdp_mmu_invalidate_roots at the original place, so that it's clear > in the next patch that it's two separate parts because of the different > locking requirements. I'm not sure exactly what you mean and I could certainly do a better job explaining in the commit description, but it's actually quite important that kvm_tdp_mmu_invalidate_roots at least precede kvm_zap_obsolete_pages as kvm_zap_obsolete_pages drops the lock and yields. If kvm_tdp_mmu_invalidate_roots doesn't go first then vCPUs could wind up dropping their ref on an old root and then picking it up again before the last root had a chance to drop its ref. Explaining in the description that kvm_tdp_mmu_zap_all is being dropped because it is no longer necessary (as opposed to being moved) might help make that cleaner. Alternatively I could just leave kvm_tdp_mmu_zap_all and replace it in the next patch. > > Paolo >
Powered by blists - more mailing lists