-
Notifications
You must be signed in to change notification settings - Fork 12
Description
This is not really an NRE bug, but something that NRE needs to be aware of, since we have seen 64-bit NRE use high addresses for VMs, which has exposed the problem...
For 32-bit guests, the vTLB uses a 2-level shadow page table with 4-byte PTEs. Even though a 64-bit VMM can install a GPA-to-HPA mapping where HPA >= 4GB, the vTLB cannot store HPA wider than 32-bit in its shadow PTEs. The most recent version of the microhypervisor catches such cases and terminates the vCPU.
To be able to make use of HPA beyond 4GB when the vTLB is active, the microhypervisor would have to use a 3-level PAE shadow page table with 8-byte PTEs, which has performance implications.
For the time being, NRE should avoid using HPA >= 4GB for VMs that use the vTLB.
The vTLB is used when "vtlb" is specified on the hypervisor command line. Otherwise it is used...
- always, for CPUs before Nehalem
- when the guest runs without paging, for CPUs before Westmere
- never, for Westmere and newer