On Fri, 2024-07-05 at 09:16 +0800, Yan Zhao wrote: > To keep the existing direct root behavior the same, I think specifying > KVM_DIRECT_ROOTS | KVM_INVALID_ROOTS in kvm_tdp_mmu_zap_all() is enough. Right. > > No need to modify tdp_mmu_root_match() do distinguish between invalid direct > roots and invalid mirror roots. As long as a root is invalid, guest is no > longer > affected by it and KVM will not use it any more. The last remaining operation > to the invalid root is only zapping. > > Distinguishing between invalid direct roots and invalid mirror roots would > make the code to zap invalid roots unnecessarily complex, e.g. I'm not sure that it is more complicated. One requires a big comment to explain, and the other is self explanatory... > > kvm_tdp_mmu_zap_invalidated_roots() is called both in kvm_mmu_uninit_tdp_mmu() > and kvm_mmu_zap_all_fast(). > > - When called in the former, both invalid direct and invalid mirror roots are > required to zap; > - when called in the latter, only invalid direct roots are required to zap. It might help to put together a full fixup at this point. We have a couple diffs in this thread, and I'm not 100% which base patch we are talking about at this point.