mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
KVM: selftests: Test Hyper-V extended hypercall enablement
Test Hyper-V extended hypercall, HV_EXT_CALL_QUERY_CAPABILITIES (0x8001), access denied and invalid parameter cases. Access is denied if CPUID.0x40000003.EBX BIT(20) is not set. Invalid parameter if call has fast bit set. Signed-off-by: Vipin Sharma <vipinsh@google.com> Link: https://lore.kernel.org/r/20221212183720.4062037-11-vipinsh@google.com Signed-off-by: Sean Christopherson <seanjc@google.com>
This commit is contained in:
parent
db9cf24cea
commit
c4a46627e5
|
|
@ -137,6 +137,8 @@
|
|||
KVM_X86_CPU_FEATURE(HYPERV_CPUID_FEATURES, 0, EBX, 11)
|
||||
#define HV_CPU_MANAGEMENT \
|
||||
KVM_X86_CPU_FEATURE(HYPERV_CPUID_FEATURES, 0, EBX, 12)
|
||||
#define HV_ENABLE_EXTENDED_HYPERCALLS \
|
||||
KVM_X86_CPU_FEATURE(HYPERV_CPUID_FEATURES, 0, EBX, 20)
|
||||
#define HV_ISOLATION \
|
||||
KVM_X86_CPU_FEATURE(HYPERV_CPUID_FEATURES, 0, EBX, 22)
|
||||
|
||||
|
|
@ -213,6 +215,9 @@
|
|||
#define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_SPACE 0x00af
|
||||
#define HVCALL_FLUSH_GUEST_PHYSICAL_ADDRESS_LIST 0x00b0
|
||||
|
||||
/* Extended hypercalls */
|
||||
#define HV_EXT_CALL_QUERY_CAPABILITIES 0x8001
|
||||
|
||||
#define HV_FLUSH_ALL_PROCESSORS BIT(0)
|
||||
#define HV_FLUSH_ALL_VIRTUAL_ADDRESS_SPACES BIT(1)
|
||||
#define HV_FLUSH_NON_GLOBAL_MAPPINGS_ONLY BIT(2)
|
||||
|
|
|
|||
|
|
@ -649,6 +649,15 @@ static void guest_test_hcalls_access(void)
|
|||
hcall->expect = HV_STATUS_SUCCESS;
|
||||
break;
|
||||
case 19:
|
||||
hcall->control = HV_EXT_CALL_QUERY_CAPABILITIES;
|
||||
hcall->expect = HV_STATUS_ACCESS_DENIED;
|
||||
break;
|
||||
case 20:
|
||||
vcpu_set_cpuid_feature(vcpu, HV_ENABLE_EXTENDED_HYPERCALLS);
|
||||
hcall->control = HV_EXT_CALL_QUERY_CAPABILITIES | HV_HYPERCALL_FAST_BIT;
|
||||
hcall->expect = HV_STATUS_INVALID_PARAMETER;
|
||||
break;
|
||||
case 21:
|
||||
kvm_vm_free(vm);
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user