On Wed, Jul 14, 2021, harry harry wrote: > > Heh, because the MMUs are all per-vCPU, it actually wouldn't be that much effort > > beyond supporting !TDP and TDP for different VMs... > > Sorry, may I know what do you mean by "MMUs are all per-vCPU"? Do you > mean the MMUs walk the page tables of each vCPU? No, each vCPU has its own MMU instance, where an "MMU instance" is (mostly) a KVM construct. Per-vCPU MMU instances are necessary because each vCPU has its own relevant state, e.g. CR0, CR4, EFER, etc..., that affects the MMU instance in some way. E.g. the MMU instance is used to walk guest page tables when translating GVA->GPA for emulation, so per-vCPU MMUs are necessary even when using TDP. However, shadow/TDP PTEs are shared between compatible MMU instances. E.g. in the common case where all vCPUs in a VM use identical settings, there will effectively be a single set of TDP page tables shared by all vCPUs.