Messages in this thread | | | Date | Wed, 8 Dec 2021 17:34:11 +0800 | Subject | Re: [PATCH 16/15] KVM: X86: Update mmu->pdptrs only when it is changed | From | Lai Jiangshan <> |
| |
On 2021/12/8 17:09, Paolo Bonzini wrote: > On 12/8/21 00:43, Sean Christopherson wrote: >> what guarantees the that PDPTRs in the VMCS are sync'd with >> mmu->pdptrs? I'm not saying they aren't, I just want the changelog >> to prove that they are. > > If they aren't synced you should *already* have dirty VCPU_EXREG_PDPTR and pending KVM_REQ_LOAD_MMU_PGD, shouldn't you? > As long as the caching invariants are respected, this patch is fairly safe, and if they aren't there are plenty of > preexisting bugs anyway. >
They can be not synced in other side: not available.
If (!kvm_register_is_available(vcpu, VCPU_EXREG_PDPTR)) it will make no sense to compare mmu->pdptrs when EPT is enabled.
Because vmcs might have different copy, it is better to just mark it dirty in load_pdptrs().
(SVM is OK even with NPT enabled, since vmcb doesn't have a copy)
I haven't investigated enough then and today. It is quit complicated.
Thanks Lai
> >> The next patch does add a fairly heavy unload of the current root for >> !TDP, but that's a bug fix and should be ordered before any >> optimizations anyways.
| |