I recall reading about how different VMs running on the same VMM (obviously) have their own independent (guest) virtual address space but they all 'share' one (guest) physical address space. That is, if a process in VM1
has its virtual address 0x000a0000
mapped to physical address 0xfffa0000
, then no processes of VM2
(nor any other processes of VM1
) can have any of its virtual addresses mapped to the physical address 0xfffa0000
.
I can't find any documents that state this, but I know that the extended page table pointer (EPTP
) is a hardware register, meaning there is only one page table that can translate the guest physical addresses into host physical addresses, so there cannot be any overlapping guest physical addresses among different VMs.
However, I also found out that the value of EPTP
is saved in the virtual machine control structure (VMCS
) so maybe upon vmexit
or vmenter
the value of EPTP
can be changed between different VMs?
In short, I'd like to know if different virtual machines can (or must) share one guest physical address space.
Thanks in advance!