lkml.org 
[lkml]   [2022]   [Nov]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[V4 PATCH 2/3] KVM: selftests: Add arch specific initialization
    From
    Introduce arch specific API: kvm_selftest_arch_init to allow each arch to
    handle initialization before running any selftest logic.

    Suggested-by: Sean Christopherson <seanjc@google.com>
    Reviewed-by: Andrew Jones <andrew.jones@linux.dev>
    Reviewed-by: Peter Gonda <pgonda@google.com>
    Signed-off-by: Vishal Annapurve <vannapurve@google.com>
    ---
    .../selftests/kvm/include/kvm_util_base.h | 5 +++++
    .../selftests/kvm/lib/aarch64/processor.c | 18 +++++++++---------
    tools/testing/selftests/kvm/lib/kvm_util.c | 6 ++++++
    3 files changed, 20 insertions(+), 9 deletions(-)

    diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h
    index e42a09cd24a0..eec0e4898efe 100644
    --- a/tools/testing/selftests/kvm/include/kvm_util_base.h
    +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h
    @@ -838,4 +838,9 @@ static inline int __vm_disable_nx_huge_pages(struct kvm_vm *vm)
    return __vm_enable_cap(vm, KVM_CAP_VM_DISABLE_NX_HUGE_PAGES, 0);
    }

    +/*
    + * API to execute architecture specific setup before executing main().
    + */
    +void kvm_selftest_arch_init(void);
    +
    #endif /* SELFTEST_KVM_UTIL_BASE_H */
    diff --git a/tools/testing/selftests/kvm/lib/aarch64/processor.c b/tools/testing/selftests/kvm/lib/aarch64/processor.c
    index 6f5551368944..0de4aabc0c76 100644
    --- a/tools/testing/selftests/kvm/lib/aarch64/processor.c
    +++ b/tools/testing/selftests/kvm/lib/aarch64/processor.c
    @@ -495,15 +495,6 @@ void aarch64_get_supported_page_sizes(uint32_t ipa,
    close(kvm_fd);
    }

    -/*
    - * arm64 doesn't have a true default mode, so start by computing the
    - * available IPA space and page sizes early.
    - */
    -void __attribute__((constructor)) init_guest_modes(void)
    -{
    - guest_modes_append_default();
    -}
    -
    void smccc_hvc(uint32_t function_id, uint64_t arg0, uint64_t arg1,
    uint64_t arg2, uint64_t arg3, uint64_t arg4, uint64_t arg5,
    uint64_t arg6, struct arm_smccc_res *res)
    @@ -528,3 +519,12 @@ void smccc_hvc(uint32_t function_id, uint64_t arg0, uint64_t arg1,
    [arg4] "r"(arg4), [arg5] "r"(arg5), [arg6] "r"(arg6)
    : "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7");
    }
    +
    +void kvm_selftest_arch_init(void)
    +{
    + /*
    + * arm64 doesn't have a true default mode, so start by computing the
    + * available IPA space and page sizes early.
    + */
    + guest_modes_append_default();
    +}
    diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
    index 37d7d144c74e..deb4c731b9fa 100644
    --- a/tools/testing/selftests/kvm/lib/kvm_util.c
    +++ b/tools/testing/selftests/kvm/lib/kvm_util.c
    @@ -2022,8 +2022,14 @@ void __vm_get_stat(struct kvm_vm *vm, const char *stat_name, uint64_t *data,
    }
    }

    +__weak void kvm_selftest_arch_init(void)
    +{
    +}
    +
    void __attribute((constructor)) kvm_selftest_init(void)
    {
    /* Tell stdout not to buffer its content. */
    setbuf(stdout, NULL);
    +
    + kvm_selftest_arch_init();
    }
    --
    2.38.1.431.g37b22c650d-goog
    \
     
     \ /
      Last update: 2022-11-15 22:39    [W:2.966 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site