lkml.org 
[lkml]   [2022]   [Jun]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 07/28] KVM: selftests: Switch to KVM_CAP_HYPERV_ENLIGHTENED_VMCS2
    Date
    KVM_CAP_HYPERV_ENLIGHTENED_VMCS was obsoleted by
    KVM_CAP_HYPERV_ENLIGHTENED_VMCS2, use it in selftests.

    Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    ---
    tools/testing/selftests/kvm/include/kvm_util_base.h | 8 ++++++++
    tools/testing/selftests/kvm/include/x86_64/evmcs.h | 1 +
    tools/testing/selftests/kvm/lib/x86_64/vmx.c | 5 +++--
    tools/testing/selftests/kvm/x86_64/evmcs_test.c | 2 +-
    tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c | 2 +-
    .../selftests/kvm/x86_64/vmx_set_nested_state_test.c | 2 +-
    6 files changed, 15 insertions(+), 5 deletions(-)

    diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h
    index b78e3c7a2566..0870865c2429 100644
    --- a/tools/testing/selftests/kvm/include/kvm_util_base.h
    +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h
    @@ -406,6 +406,14 @@ static inline void vcpu_enable_cap(struct kvm_vcpu *vcpu, uint32_t cap,
    vcpu_ioctl(vcpu, KVM_ENABLE_CAP, &enable_cap);
    }

    +static inline void vcpu_enable_cap2(struct kvm_vcpu *vcpu, uint32_t cap,
    + uint64_t arg0, uint64_t arg1)
    +{
    + struct kvm_enable_cap enable_cap = { .cap = cap, .args = { arg0, arg1 } };
    +
    + vcpu_ioctl(vcpu, KVM_ENABLE_CAP, &enable_cap);
    +}
    +
    static inline void vcpu_guest_debug_set(struct kvm_vcpu *vcpu,
    struct kvm_guest_debug *debug)
    {
    diff --git a/tools/testing/selftests/kvm/include/x86_64/evmcs.h b/tools/testing/selftests/kvm/include/x86_64/evmcs.h
    index 3c9260f8e116..b6d6c73f68dc 100644
    --- a/tools/testing/selftests/kvm/include/x86_64/evmcs.h
    +++ b/tools/testing/selftests/kvm/include/x86_64/evmcs.h
    @@ -17,6 +17,7 @@
    #define u64 uint64_t

    #define EVMCS_VERSION 1
    +#define EVMCS_REVISION 1

    extern bool enable_evmcs;

    diff --git a/tools/testing/selftests/kvm/lib/x86_64/vmx.c b/tools/testing/selftests/kvm/lib/x86_64/vmx.c
    index 381432741df4..1a0b9334f8d4 100644
    --- a/tools/testing/selftests/kvm/lib/x86_64/vmx.c
    +++ b/tools/testing/selftests/kvm/lib/x86_64/vmx.c
    @@ -42,12 +42,13 @@ struct eptPageTablePointer {
    uint64_t address:40;
    uint64_t reserved_63_52:12;
    };
    +
    int vcpu_enable_evmcs(struct kvm_vcpu *vcpu)
    {
    uint16_t evmcs_ver;

    - vcpu_enable_cap(vcpu, KVM_CAP_HYPERV_ENLIGHTENED_VMCS,
    - (unsigned long)&evmcs_ver);
    + vcpu_enable_cap2(vcpu, KVM_CAP_HYPERV_ENLIGHTENED_VMCS2,
    + EVMCS_REVISION, (unsigned long)&evmcs_ver);

    /* KVM should return supported EVMCS version range */
    TEST_ASSERT(((evmcs_ver >> 8) >= (evmcs_ver & 0xff)) &&
    diff --git a/tools/testing/selftests/kvm/x86_64/evmcs_test.c b/tools/testing/selftests/kvm/x86_64/evmcs_test.c
    index 8dda527cc080..a546d1cad146 100644
    --- a/tools/testing/selftests/kvm/x86_64/evmcs_test.c
    +++ b/tools/testing/selftests/kvm/x86_64/evmcs_test.c
    @@ -210,7 +210,7 @@ int main(int argc, char *argv[])

    TEST_REQUIRE(nested_vmx_supported());
    TEST_REQUIRE(kvm_has_cap(KVM_CAP_NESTED_STATE));
    - TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS));
    + TEST_REQUIRE(kvm_has_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS2));

    vcpu_set_hv_cpuid(vcpu);
    vcpu_enable_evmcs(vcpu);
    diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c
    index cbd4a7d36189..f19859f1956e 100644
    --- a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c
    +++ b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c
    @@ -149,7 +149,7 @@ int main(int argc, char *argv[])
    free(hv_cpuid_entries);

    if (!nested_vmx_supported() ||
    - !kvm_has_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS)) {
    + !kvm_has_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS2)) {
    print_skip("Enlightened VMCS is unsupported");
    goto do_sys;
    }
    diff --git a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
    index b564b86dfc1d..b624a08a5574 100644
    --- a/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
    +++ b/tools/testing/selftests/kvm/x86_64/vmx_set_nested_state_test.c
    @@ -265,7 +265,7 @@ int main(int argc, char *argv[])
    struct kvm_nested_state state;
    struct kvm_vcpu *vcpu;

    - have_evmcs = kvm_check_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS);
    + have_evmcs = kvm_check_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS2);

    TEST_REQUIRE(kvm_has_cap(KVM_CAP_NESTED_STATE));

    --
    2.35.3
    \
     
     \ /
      Last update: 2022-06-29 17:08    [W:2.531 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site