KVM: selftests: Add a helper to check EPT/VPID capabilities
Create a small helper function to check if a given EPT/VPID capability is supported. This will be re-used in a follow-up commit to check for 1G page support. No functional change intended. Reviewed-by: Peter Xu <peterx@redhat.com> Signed-off-by: David Matlack <dmatlack@google.com> Message-Id: <20220520233249.3776001-7-dmatlack@google.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Родитель
b6c086d04c
Коммит
c363d95986
|
@ -198,6 +198,11 @@ bool load_vmcs(struct vmx_pages *vmx)
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool ept_vpid_cap_supported(uint64_t mask)
|
||||
{
|
||||
return rdmsr(MSR_IA32_VMX_EPT_VPID_CAP) & mask;
|
||||
}
|
||||
|
||||
/*
|
||||
* Initialize the control fields to the most basic settings possible.
|
||||
*/
|
||||
|
@ -215,7 +220,7 @@ static inline void init_vmcs_control_fields(struct vmx_pages *vmx)
|
|||
struct eptPageTablePointer eptp = {
|
||||
.memory_type = VMX_BASIC_MEM_TYPE_WB,
|
||||
.page_walk_length = 3, /* + 1 */
|
||||
.ad_enabled = !!(rdmsr(MSR_IA32_VMX_EPT_VPID_CAP) & VMX_EPT_VPID_CAP_AD_BITS),
|
||||
.ad_enabled = ept_vpid_cap_supported(VMX_EPT_VPID_CAP_AD_BITS),
|
||||
.address = vmx->eptp_gpa >> PAGE_SHIFT_4K,
|
||||
};
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче