On Fri, Feb 11, 2022, Paolo Bonzini wrote: > On 2/11/22 01:27, Sean Christopherson wrote: > > On Wed, Feb 09, 2022, Paolo Bonzini wrote: > > > The name of kvm_mmu_reload is very confusing for two reasons: > > > first, KVM_REQ_MMU_RELOAD actually does not call it; second, > > > it only does anything if there is no valid root. > > > > > > Rename it to kvm_mmu_ensure_valid_root, which matches the actual > > > behavior better. > > > > 100% agree that kvm_mmu_reload() is a terrible name, but kvm_mmu_ensure_valid_root() > > isn't much better, e.g. it sounds like a sanity check and nothing more. > > I would have thought that would be more of a check_valid_root(). There are > other functions in the kernel following the idea that "ensure" means > idempotency: skb_ensure_writable, perf_cgroup_ensure_storage, > btf_ensure_modifiable and libbpf_ensure_mem in libbpf. I'm not a native > speaker but, at least in computing, "ensure" seems to mean not just "to make > certain that (something) will be true", but also taking steps if that's not > already the case. There's no ambiguity on the "make certain that <x> will be true", it's the second part about taking steps that's ambiguous. Specifically, it doesn't convey any information about _what_ steps will be taken, e.g. the below implementation is also a possibility since it ensures the root is valid by preventing forward progress if the root is invalid. static inline int kvm_mmu_ensure_valid_root(struct kvm_vcpu *vcpu) { if (unlikely(vcpu->arch.mmu->root.hpa != INVALID_PAGE)) return -EFAULT; return 0; } Existing example of that interpretation are input_dev_ensure_poller() and rtnl_ensure_unique_netns(). The other nuance that I want to avoid is the implication that KVM is checking for a valid root because it doesn't trust what has happened before, i.e. that the call is there as a safeguard. That's misleading for the most common path, vcpu_enter_guest(), because when the helper does do some work, it's usually because KVM deliberately invalidated the root. > I also thought of "establish_valid_root", but it has the opposite > problem---it does not convey well, if at all, that the root could be valid > already. Heh, I agree that "establish" would imply the root is always invalid, but amusingly "establish" is listed as a synonym for "ensure" on the few sites of checked. Yay English. I was going to suggest we just open code it in vcpu_enter_guest, but async #PF uses it too :-/ Can we put this on the backburner for now? IMO, KVM_REQ_MMU_RELOAD is far more misleading than kvm_mmu_reload(), and I posted a series to remedy that (though I need to check if it's still viable since you vetoed adding the check for a pending request in the page fault handler). https://lore.kernel.org/all/20211209060552.2956723-1-seanjc@xxxxxxxxxx