lkml.org 
[lkml]   [2022]   [Jun]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[PATCH v2 017/144] KVM: selftests: Make kvm_ioctl() a wrapper to pretty print ioctl name
    From
    Make kvm_ioctl() a macro wrapper and print the _name_ of the ioctl on
    failure instead of the number.

    Deliberately do not use __stringify(), as that will expand the ioctl all
    the way down to its numerical sequence, again the intent is to print the
    name of the macro.

    Signed-off-by: Sean Christopherson <seanjc@google.com>
    ---
    .../selftests/kvm/include/kvm_util_base.h | 16 ++++++++--
    tools/testing/selftests/kvm/lib/kvm_util.c | 31 +++----------------
    .../selftests/kvm/x86_64/hyperv_cpuid.c | 2 +-
    3 files changed, 20 insertions(+), 29 deletions(-)

    diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h
    index 1ccb91103e74..f5bfdf0b4548 100644
    --- a/tools/testing/selftests/kvm/include/kvm_util_base.h
    +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h
    @@ -110,8 +110,19 @@ int kvm_check_cap(long cap);
    #define __KVM_IOCTL_ERROR(_name, _ret) __KVM_SYSCALL_ERROR(_name, _ret)
    #define KVM_IOCTL_ERROR(_ioctl, _ret) __KVM_IOCTL_ERROR(#_ioctl, _ret)

    -int __kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg);
    -void kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg);
    +#define __kvm_ioctl(kvm_fd, cmd, arg) \
    + ioctl(kvm_fd, cmd, arg)
    +
    +static inline void _kvm_ioctl(int kvm_fd, unsigned long cmd, const char *name,
    + void *arg)
    +{
    + int ret = __kvm_ioctl(kvm_fd, cmd, arg);
    +
    + TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret));
    +}
    +
    +#define kvm_ioctl(kvm_fd, cmd, arg) \
    + _kvm_ioctl(kvm_fd, cmd, #cmd, arg)

    int __vm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg);
    void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, void *arg);
    @@ -492,6 +503,7 @@ unsigned int vm_get_page_size(struct kvm_vm *vm);
    unsigned int vm_get_page_shift(struct kvm_vm *vm);
    unsigned long vm_compute_max_gfn(struct kvm_vm *vm);
    uint64_t vm_get_max_gfn(struct kvm_vm *vm);
    +int vm_get_kvm_fd(struct kvm_vm *vm);
    int vm_get_fd(struct kvm_vm *vm);

    unsigned int vm_calc_num_guest_pages(enum vm_guest_mode mode, size_t size);
    diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
    index 339d524a0399..ac8faf072288 100644
    --- a/tools/testing/selftests/kvm/lib/kvm_util.c
    +++ b/tools/testing/selftests/kvm/lib/kvm_util.c
    @@ -1616,32 +1616,6 @@ void _vm_ioctl(struct kvm_vm *vm, unsigned long cmd, const char *name, void *arg
    TEST_ASSERT(!ret, __KVM_IOCTL_ERROR(name, ret));
    }

    -/*
    - * KVM system ioctl
    - *
    - * Input Args:
    - * vm - Virtual Machine
    - * cmd - Ioctl number
    - * arg - Argument to pass to the ioctl
    - *
    - * Return: None
    - *
    - * Issues an arbitrary ioctl on a KVM fd.
    - */
    -void kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg)
    -{
    - int ret;
    -
    - ret = ioctl(vm->kvm_fd, cmd, arg);
    - TEST_ASSERT(ret == 0, "KVM ioctl %lu failed, rc: %i errno: %i (%s)",
    - cmd, ret, errno, strerror(errno));
    -}
    -
    -int __kvm_ioctl(struct kvm_vm *vm, unsigned long cmd, void *arg)
    -{
    - return ioctl(vm->kvm_fd, cmd, arg);
    -}
    -
    /*
    * Device Ioctl
    */
    @@ -2074,6 +2048,11 @@ uint64_t vm_get_max_gfn(struct kvm_vm *vm)
    return vm->max_gfn;
    }

    +int vm_get_kvm_fd(struct kvm_vm *vm)
    +{
    + return vm->kvm_fd;
    +}
    +
    int vm_get_fd(struct kvm_vm *vm)
    {
    return vm->fd;
    diff --git a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c
    index 7e45a3df8f98..896e1e7c1df7 100644
    --- a/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c
    +++ b/tools/testing/selftests/kvm/x86_64/hyperv_cpuid.c
    @@ -123,7 +123,7 @@ void test_hv_cpuid_e2big(struct kvm_vm *vm, bool system)
    if (!system)
    ret = __vcpu_ioctl(vm, VCPU_ID, KVM_GET_SUPPORTED_HV_CPUID, &cpuid);
    else
    - ret = __kvm_ioctl(vm, KVM_GET_SUPPORTED_HV_CPUID, &cpuid);
    + ret = __kvm_ioctl(vm_get_kvm_fd(vm), KVM_GET_SUPPORTED_HV_CPUID, &cpuid);

    TEST_ASSERT(ret == -1 && errno == E2BIG,
    "%s KVM_GET_SUPPORTED_HV_CPUID didn't fail with -E2BIG when"
    --
    2.36.1.255.ge46751e96f-goog
    \
     
     \ /
      Last update: 2022-06-03 02:48    [W:2.155 / U:0.316 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site