On Thu, Apr 14, 2022 at 6:04 PM Paolo Bonzini <pbonzini@xxxxxxxxxx> wrote: > > On 4/14/22 11:32, Lai Jiangshan wrote: > > kvm_mmu_free_roots() can not free those new types of sp if they are still > > valid. And different vcpu can use the same pae root sp if the guest cr3 > > of the vcpus are the same. > > Right, but then load_pdptrs only needs to zap the page before (or > instead of) calling kvm_mmu_free_roots(). > Guest PAE page is write-protected instead now (see patch4) and kvm_mmu_pte_write() needs to handle this special write operation with respect to sp->pae_off (todo). And load_pdptrs() doesn't need to check if the pdptrs are changed. The semantics will be changed. When the guest updates its PAE root, the hwTLB will not be updated/flushed immediately until some change to CRx, but after this change, it will be flushed immediately. Could we fix 5-level NPT L0 for 4-level NPT L1 only first? it is a real bug. I separated it out when I tried to implement one-off shadow pages.