Message ID | 20220408004120.1969099-7-ricarkol@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM: selftests: Add aarch64/page_fault_test | expand |
On Thu, Apr 07, 2022 at 05:41:13PM -0700, Ricardo Koller wrote: > Add a library function to get the backing source FD of a memslot. > > Signed-off-by: Ricardo Koller <ricarkol@google.com> Reviewed-by: Oliver Upton <oupton@google.com> > --- > .../selftests/kvm/include/kvm_util_base.h | 1 + > tools/testing/selftests/kvm/lib/kvm_util.c | 23 +++++++++++++++++++ > 2 files changed, 24 insertions(+) > > diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h > index 3a69b35e37cc..c8dce12a9a52 100644 > --- a/tools/testing/selftests/kvm/include/kvm_util_base.h > +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h > @@ -163,6 +163,7 @@ int _kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); > void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t flags); > void vm_mem_region_move(struct kvm_vm *vm, uint32_t slot, uint64_t new_gpa); > void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot); > +int vm_mem_region_get_src_fd(struct kvm_vm *vm, uint32_t memslot); > void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid); > vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min); > vm_vaddr_t vm_vaddr_alloc_pages(struct kvm_vm *vm, int nr_pages); > diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c > index 268ad3d75fe2..a0a9cd575fac 100644 > --- a/tools/testing/selftests/kvm/lib/kvm_util.c > +++ b/tools/testing/selftests/kvm/lib/kvm_util.c > @@ -580,6 +580,29 @@ kvm_userspace_memory_region_find(struct kvm_vm *vm, uint64_t start, > return ®ion->region; > } > > +/* > + * KVM Userspace Memory Get Backing Source FD > + * > + * Input Args: > + * vm - Virtual Machine > + * memslot - KVM memory slot ID > + * > + * Output Args: None > + * > + * Return: > + * Backing source file descriptor, -1 if the memslot is an anonymous region. > + * > + * Returns the backing source fd of a memslot, so tests can use it to punch > + * holes, or to setup permissions. > + */ > +int vm_mem_region_get_src_fd(struct kvm_vm *vm, uint32_t memslot) > +{ > + struct userspace_mem_region *region; > + > + region = memslot2region(vm, memslot); > + return region->fd; > +} > + > /* > * VCPU Find > * > -- > 2.35.1.1178.g4f1659d476-goog >
diff --git a/tools/testing/selftests/kvm/include/kvm_util_base.h b/tools/testing/selftests/kvm/include/kvm_util_base.h index 3a69b35e37cc..c8dce12a9a52 100644 --- a/tools/testing/selftests/kvm/include/kvm_util_base.h +++ b/tools/testing/selftests/kvm/include/kvm_util_base.h @@ -163,6 +163,7 @@ int _kvm_ioctl(struct kvm_vm *vm, unsigned long ioctl, void *arg); void vm_mem_region_set_flags(struct kvm_vm *vm, uint32_t slot, uint32_t flags); void vm_mem_region_move(struct kvm_vm *vm, uint32_t slot, uint64_t new_gpa); void vm_mem_region_delete(struct kvm_vm *vm, uint32_t slot); +int vm_mem_region_get_src_fd(struct kvm_vm *vm, uint32_t memslot); void vm_vcpu_add(struct kvm_vm *vm, uint32_t vcpuid); vm_vaddr_t vm_vaddr_alloc(struct kvm_vm *vm, size_t sz, vm_vaddr_t vaddr_min); vm_vaddr_t vm_vaddr_alloc_pages(struct kvm_vm *vm, int nr_pages); diff --git a/tools/testing/selftests/kvm/lib/kvm_util.c b/tools/testing/selftests/kvm/lib/kvm_util.c index 268ad3d75fe2..a0a9cd575fac 100644 --- a/tools/testing/selftests/kvm/lib/kvm_util.c +++ b/tools/testing/selftests/kvm/lib/kvm_util.c @@ -580,6 +580,29 @@ kvm_userspace_memory_region_find(struct kvm_vm *vm, uint64_t start, return ®ion->region; } +/* + * KVM Userspace Memory Get Backing Source FD + * + * Input Args: + * vm - Virtual Machine + * memslot - KVM memory slot ID + * + * Output Args: None + * + * Return: + * Backing source file descriptor, -1 if the memslot is an anonymous region. + * + * Returns the backing source fd of a memslot, so tests can use it to punch + * holes, or to setup permissions. + */ +int vm_mem_region_get_src_fd(struct kvm_vm *vm, uint32_t memslot) +{ + struct userspace_mem_region *region; + + region = memslot2region(vm, memslot); + return region->fd; +} + /* * VCPU Find *
Add a library function to get the backing source FD of a memslot. Signed-off-by: Ricardo Koller <ricarkol@google.com> --- .../selftests/kvm/include/kvm_util_base.h | 1 + tools/testing/selftests/kvm/lib/kvm_util.c | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+)