I won't blog about the whole vhv.allow="true" procedure here, that's been covered elsewhere. But what does nested virtualization change in a VM ? Well, the CPU features that are exposed change:
A regular 64-bit Linux VM sees
A 64-bit VM with nested virtualization enabled sees
So the vmx, tpr_shadow, ept and vpid features are hidden for a normal VM, and are exposed when you enable nested virtualization.
N.B. These /proc/cpuinfo examples were created on vSphere5 running on a Sandy Bridge E31270 CPU. Other CPU generations will show a different flag set, but the four added features should be the same.
A regular 64-bit Linux VM sees
# grep flags /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc up arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat
A 64-bit VM with nested virtualization enabled sees
# grep flags /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc up arch_perfmon pebs bts rep_good xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq vmx ssse3 cx16 sse4_1 sse4_2 popcnt aes xsave avx hypervisor lahf_lm ida arat tpr_shadow ept vpid
So the vmx, tpr_shadow, ept and vpid features are hidden for a normal VM, and are exposed when you enable nested virtualization.
N.B. These /proc/cpuinfo examples were created on vSphere5 running on a Sandy Bridge E31270 CPU. Other CPU generations will show a different flag set, but the four added features should be the same.
Comments