jmattson, thank you for the detailed response. I think we will be able to get EPT upstreamed, will have to investigate whether if vhv can be supported as well.
On vhv support, I'm running in host-passthrough mode on a i7-2600k which should do it natively I believe; the entire feature set is as follows:
2016-02-12T14:25:28.777Z| vmx| I120: Host VT-x Capabilities:
2016-02-12T14:25:28.777Z| vmx| I120: Basic VMX Information (0x0098100011e57ed0)
2016-02-12T14:25:28.777Z| vmx| I120: VMCS revision ID 300252880
2016-02-12T14:25:28.777Z| vmx| I120: VMCS region length 4096
2016-02-12T14:25:28.777Z| vmx| I120: VMX physical-address width natural
2016-02-12T14:25:28.777Z| vmx| I120: SMM dual-monitor mode no
2016-02-12T14:25:28.777Z| vmx| I120: Advanced INS/OUTS info no
2016-02-12T14:25:28.777Z| vmx| I120: True VMX MSRs yes
2016-02-12T14:25:28.777Z| vmx| I120: VMCS memory type WB
2016-02-12T14:25:28.777Z| vmx| I120: True Pin-Based VM-Execution Controls (0x0000007f00000016)
2016-02-12T14:25:28.777Z| vmx| I120: External-interrupt exiting {0,1}
2016-02-12T14:25:28.777Z| vmx| I120: NMI exiting {0,1}
2016-02-12T14:25:28.777Z| vmx| I120: Virtual NMIs {0,1}
2016-02-12T14:25:28.777Z| vmx| I120: Activate VMX-preemption timer {0,1}
2016-02-12T14:25:28.777Z| vmx| I120: Process posted interrupts { 0 }
2016-02-12T14:25:28.777Z| vmx| I120: True Primary Processor-Based VM-Execution Controls (0xfff9fffe04006172)
2016-02-12T14:25:28.777Z| vmx| I120: Interrupt-window exiting {0,1}
2016-02-12T14:25:28.777Z| vmx| I120: Use TSC offsetting {0,1}
2016-02-12T14:25:28.777Z| vmx| I120: HLT exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: INVLPG exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: MWAIT exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: RDPMC exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: RDTSC exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: CR3-load exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: CR3-store exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: CR8-load exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: CR8-store exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Use TPR shadow {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: NMI-window exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: MOV-DR exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Unconditional I/O exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Use I/O bitmaps {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Monitor trap flag {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Use MSR bitmaps {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: MONITOR exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: PAUSE exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Activate secondary controls {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Secondary Processor-Based VM-Execution Controls (0x000000fb00000000)
2016-02-12T14:25:28.778Z| vmx| I120: Virtualize APIC accesses {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Enable EPT {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Descriptor-table exiting { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Enable RDTSCP {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Virtualize x2APIC mode {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Enable VPID {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: WBINVD exiting {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Unrestricted guest {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: APIC-register virtualization { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Virtual-interrupt delivery { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: PAUSE-loop exiting { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: RDRAND exiting { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Enable INVPCID { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Enable VM Functions { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Use VMCS shadowing { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: RDSEED exiting { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: EPT-violation #VE { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Enable XSAVES/XRSTORS { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: True VM-Exit Controls (0x007fefff00036dfb)
2016-02-12T14:25:28.778Z| vmx| I120: Save debug controls {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Host address-space size {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Load IA32_PERF_GLOBAL_CTRL { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Acknowledge interrupt on exit {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Save IA32_PAT {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Load IA32_PAT {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Save IA32_EFER {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Load IA32_EFER {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Save VMX-preemption timer {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: True VM-Entry Controls (0x0000d3ff000011fb)
2016-02-12T14:25:28.778Z| vmx| I120: Load debug controls {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: IA-32e mode guest {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Entry to SMM { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Deactivate dual-monitor mode { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Load IA32_PERF_GLOBAL_CTRL { 0 }
2016-02-12T14:25:28.778Z| vmx| I120: Load IA32_PAT {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: Load IA32_EFER {0,1}
2016-02-12T14:25:28.778Z| vmx| I120: VPID and EPT Capabilities (0x00000d0106114041)
2016-02-12T14:25:28.778Z| vmx| I120: R=0/W=0/X=1 yes
2016-02-12T14:25:28.778Z| vmx| I120: Page-walk length 3 yes
2016-02-12T14:25:28.778Z| vmx| I120: EPT memory type WB yes
2016-02-12T14:25:28.778Z| vmx| I120: 2MB super-page yes
2016-02-12T14:25:28.778Z| vmx| I120: 1GB super-page no
2016-02-12T14:25:28.778Z| vmx| I120: INVEPT support yes
2016-02-12T14:25:28.778Z| vmx| I120: Access & Dirty Bits no
2016-02-12T14:25:28.778Z| vmx| I120: Type 1 INVEPT yes
2016-02-12T14:25:28.778Z| vmx| I120: Type 2 INVEPT yes
2016-02-12T14:25:28.778Z| vmx| I120: INVVPID support yes
2016-02-12T14:25:28.778Z| vmx| I120: Type 0 INVVPID yes
2016-02-12T14:25:28.778Z| vmx| I120: Type 1 INVVPID no
2016-02-12T14:25:28.778Z| vmx| I120: Type 2 INVVPID yes
2016-02-12T14:25:28.778Z| vmx| I120: Type 3 INVVPID yes
2016-02-12T14:25:28.778Z| vmx| I120: Miscellaneous VMX Data (0x0000000000000065)
2016-02-12T14:25:28.778Z| vmx| I120: TSC to preemption timer ratio 5
2016-02-12T14:25:28.778Z| vmx| I120: VM-Exit saves EFER.LMA yes
2016-02-12T14:25:28.778Z| vmx| I120: Activity State HLT yes
2016-02-12T14:25:28.778Z| vmx| I120: Activity State shutdown no
2016-02-12T14:25:28.778Z| vmx| I120: Activity State wait-for-SIPI no
2016-02-12T14:25:28.778Z| vmx| I120: CR3 targets supported 0
2016-02-12T14:25:28.778Z| vmx| I120: Maximum MSR list size 512
2016-02-12T14:25:28.778Z| vmx| I120: Allow all VMWRITEs no
2016-02-12T14:25:28.778Z| vmx| I120: MSEG revision ID 0
2016-02-12T14:25:28.778Z| vmx| I120: VMX-Fixed Bits in CR0 (0x0000000080000021/0xffffffffffffffff)
2016-02-12T14:25:28.778Z| vmx| I120: Fixed to 0 0x0000000000000000
2016-02-12T14:25:28.778Z| vmx| I120: Fixed to 1 0x0000000080000021
2016-02-12T14:25:28.778Z| vmx| I120: Variable 0xffffffff7fffffde
2016-02-12T14:25:28.778Z| vmx| I120: VMX-Fixed Bits in CR4 (0x0000000000002000/0xffffffffffffffff)
2016-02-12T14:25:28.778Z| vmx| I120: Fixed to 0 0x0000000000000000
2016-02-12T14:25:28.778Z| vmx| I120: Fixed to 1 0x0000000000002000
2016-02-12T14:25:28.778Z| vmx| I120: Variable 0xffffffffffffdfff
2016-02-12T14:25:28.778Z| vmx| I120: VMCS Enumeration (0x000000000000002e)
2016-02-12T14:25:28.778Z| vmx| I120: Highest index 0x17
2016-02-12T14:25:28.778Z| vmx| I120: VM Functions (0x0000000000000000)
2016-02-12T14:25:28.778Z| vmx| I120: hostCpuFeatures = 0x87d
2016-02-12T14:25:28.778Z| vmx| I120: hostNumGenPerfCounters = 4
2016-02-12T14:25:28.778Z| vmx| I120: hostNumFixedPerfCounters = 3
2016-02-12T14:25:28.778Z| vmx| I120: hostPerfCtrArch = 2
2016-02-12T14:25:28.778Z| vmx| I120: CPU0: PMC: IA32, Nehalem-C or later PMC: bad VMENTRY_CTL_LOAD_CPGC or VMEXIT_CTL_LOAD_CPGC
2016-02-12T14:25:28.778Z| vmx| I120: PMC: smmFrz (hw): (1)
2016-02-12T14:25:28.778Z| vmx| I120: [c:0 f:1 e:0]
2016-02-12T14:25:28.778Z| vmx| I120: CPU1: PMC: IA32, Nehalem-C or later PMC: bad VMENTRY_CTL_LOAD_CPGC or VMEXIT_CTL_LOAD_CPGC
2016-02-12T14:25:28.778Z| vmx| I120: PMC: smmFrz (hw): (1)
2016-02-12T14:25:28.778Z| vmx| I120: [c:0 f:1 e:0]
2016-02-12T14:25:28.778Z| vmx| I120: MONITOR MODE: allowed modes : BT32 HV HWMMU
2016-02-12T14:25:28.778Z| vmx| I120: MONITOR MODE: user requested modes : BT32 HV HWMMU
2016-02-12T14:25:28.778Z| vmx| I120: MONITOR MODE: guestOS preferred modes: HWMMU HV BT32
2016-02-12T14:25:28.778Z| vmx| I120: MONITOR MODE: filtered list : HWMMU HV BT32
2016-02-12T14:25:28.778Z| vmx| I120: HV Settings: virtual exec = 'hardware'; virtual mmu = 'hardware'
...
2016-02-12T14:25:28.884Z| vmx| I120: [msg.cpuid.noVHVQuestion] Virtualized Intel VT-x/EPT is not supported on this platform.
2016-02-12T14:25:28.884Z| vmx| I120+ Continue without virtualized Intel VT-x/EPT?
Can you tell based on this whether if Type 1 INVVPID is the only missing feature for allowing vhv?