On 9/29/15 6:39 PM, Paolo Bonzini wrote:
On 29/09/2015 04:55, Wanpeng Li wrote:
Expose VPID capability to L1.
Signed-off-by: Wanpeng Li <wanpeng.li@xxxxxxxxxxx>
---
v1 -> v2:
* set only VMX_VPID_EXTENT_GLOBAL_CONTEXT_BIT
Thanks. I've checked more thoroughly your implementation against the
SDM now, and there are a few missing things between this patch and the
one that emulates INVVPID:
- you're not setting bit 32 of the VMX_EPT_VPID_CAP MSR
- you were not checking against the supported types in the
implementation of the INVVPID instruction
- the memory operand must always be read even if it isn't needed (e.g.,
for type==global), similar to INVEPT
- for single-context invalidation you're not checking that VPID != 0,
though in practice that doesn't matter because we don't want to support
single-context invalidation
- you're always setting the MSR's bits to 1 even if !enable_vpid
At this point it's better if you resend the whole nested VPID
implementation, i.e. the following five patches:
KVM: VMX: adjust interface to allocate/free_vpid
KVM: VMX: introduce __vmx_flush_tlb to handle specific vpid
KVM: nVMX: emulate the INVVPID instruction
KVM: nVMX: nested VPID emulation
KVM: nVMX: expose VPID capability to L1
with the above issues fixed. Please also send kvm-unit-tests patches
that tests for the error cases.
Ok, I will do this after the vacation(until 10.7) in my country. :-)
Regards,
Wanpeng Li
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html