lkml.org 
[lkml]   [2023]   [Jul]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    Subject[RFC PATCH v11 26/29] KVM: selftests: Add KVM_SET_USER_MEMORY_REGION2 helper
    From
    From: Chao Peng <chao.p.peng@linux.intel.com>

    Provide a raw version as well as an assert-success version to reduce
    the amount of boilerplate code need for basic usage.

    Signed-off-by: Chao Peng <chao.p.peng@linux.intel.com>
    Signed-off-by: Ackerley Tng <ackerleytng@google.com>
    ---
    .../selftests/kvm/include/kvm_util_base.h | 7 +++++
    tools/testing/selftests/kvm/lib/kvm_util.c | 29 +++++++++++++++++++
    2 files changed, 36 insertions(+)

    diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h
    index 856440294013..334df27a6f43 100644
    --- a/tools/testing/selftests/kvm/include/kvm_util_base.h
    +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h
    @@ -492,6 +492,13 @@ void vm_set_user_memory_region(struct kvm_vm *vm, uint32_t slot, uint32_t flags,
    uint64_t gpa, uint64_t size, void *hva);
    int __vm_set_user_memory_region(struct kvm_vm *vm, uint32_t slot, uint32_t flags,
    uint64_t gpa, uint64_t size, void *hva);
    +void vm_set_user_memory_region2(struct kvm_vm *vm, uint32_t slot,
    + uint32_t flags, uint64_t gpa, uint64_t size,
    + void *hva, uint32_t gmem_fd, uint64_t gmem_offset);
    +int __vm_set_user_memory_region2(struct kvm_vm *vm, uint32_t slot,
    + uint32_t flags, uint64_t gpa, uint64_t size,
    + void *hva, uint32_t gmem_fd, uint64_t gmem_offset);
    +
    void vm_userspace_mem_region_add(struct kvm_vm *vm,
    enum vm_mem_backing_src_type src_type,
    uint64_t guest_paddr, uint32_t slot, uint64_t npages,
    diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c
    index 64221c320389..f7b8b5eb3e8f 100644
    --- a/tools/testing/selftests/kvm/lib/kvm_util.c
    +++ b/tools/testing/selftests/kvm/lib/kvm_util.c
    @@ -868,6 +868,35 @@ void vm_set_user_memory_region(struct kvm_vm *vm, uint32_t slot, uint32_t flags,
    errno, strerror(errno));
    }

    +int __vm_set_user_memory_region2(struct kvm_vm *vm, uint32_t slot,
    + uint32_t flags, uint64_t gpa, uint64_t size,
    + void *hva, uint32_t gmem_fd, uint64_t gmem_offset)
    +{
    + struct kvm_userspace_memory_region2 region = {
    + .slot = slot,
    + .flags = flags,
    + .guest_phys_addr = gpa,
    + .memory_size = size,
    + .userspace_addr = (uintptr_t)hva,
    + .gmem_fd = gmem_fd,
    + .gmem_offset = gmem_offset,
    + };
    +
    + return ioctl(vm->fd, KVM_SET_USER_MEMORY_REGION2, &region);
    +}
    +
    +void vm_set_user_memory_region2(struct kvm_vm *vm, uint32_t slot,
    + uint32_t flags, uint64_t gpa, uint64_t size,
    + void *hva, uint32_t gmem_fd, uint64_t gmem_offset)
    +{
    + int ret = __vm_set_user_memory_region2(vm, slot, flags, gpa, size, hva,
    + gmem_fd, gmem_offset);
    +
    + TEST_ASSERT(!ret, "KVM_SET_USER_MEMORY_REGION2 failed, errno = %d (%s)",
    + errno, strerror(errno));
    +}
    +
    +
    /* FIXME: This thing needs to be ripped apart and rewritten. */
    void vm_mem_add(struct kvm_vm *vm, enum vm_mem_backing_src_type src_type,
    uint64_t guest_paddr, uint32_t slot, uint64_t npages,
    --
    2.41.0.255.g8b1d071c50-goog
    \
     
     \ /
      Last update: 2023-07-19 01:54    [W:6.817 / U:0.100 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site