On 7/30/2025 6:54 AM, Sean Christopherson wrote:
> From: Fuad Tabba <tabba@google.com>
>
> Update the guest_memfd_test selftest to use getpagesize() instead of
> hardcoded 4KB page size values.
>
> Using hardcoded page sizes can cause test failures on architectures or
> systems configured with larger page sizes, such as arm64 with 64KB
> pages. By dynamically querying the system's page size, the test becomes
> more portable and robust across different environments.
>
> Additionally, build the guest_memfd_test selftest for arm64.
>
> Reviewed-by: David Hildenbrand <david@redhat.com>
> Reviewed-by: Shivank Garg <shivankg@amd.com>
> Reviewed-by: Gavin Shan <gshan@redhat.com>
> Suggested-by: Gavin Shan <gshan@redhat.com>
> Signed-off-by: Fuad Tabba <tabba@google.com>
> Signed-off-by: Sean Christopherson <seanjc@google.com>
Reviewed-by: Xiaoyao Li <xiaoyao.li@intel.com>
> ---
> tools/testing/selftests/kvm/Makefile.kvm | 1 +
> tools/testing/selftests/kvm/guest_memfd_test.c | 11 ++++++-----
> 2 files changed, 7 insertions(+), 5 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/Makefile.kvm b/tools/testing/selftests/kvm/Makefile.kvm
> index 40920445bfbe..963687892bcb 100644
> --- a/tools/testing/selftests/kvm/Makefile.kvm
> +++ b/tools/testing/selftests/kvm/Makefile.kvm
> @@ -174,6 +174,7 @@ TEST_GEN_PROGS_arm64 += arch_timer
> TEST_GEN_PROGS_arm64 += coalesced_io_test
> TEST_GEN_PROGS_arm64 += dirty_log_perf_test
> TEST_GEN_PROGS_arm64 += get-reg-list
> +TEST_GEN_PROGS_arm64 += guest_memfd_test
> TEST_GEN_PROGS_arm64 += memslot_modification_stress_test
> TEST_GEN_PROGS_arm64 += memslot_perf_test
> TEST_GEN_PROGS_arm64 += mmu_stress_test
> diff --git a/tools/testing/selftests/kvm/guest_memfd_test.c b/tools/testing/selftests/kvm/guest_memfd_test.c
> index ce687f8d248f..341ba616cf55 100644
> --- a/tools/testing/selftests/kvm/guest_memfd_test.c
> +++ b/tools/testing/selftests/kvm/guest_memfd_test.c
> @@ -146,24 +146,25 @@ static void test_create_guest_memfd_multiple(struct kvm_vm *vm)
> {
> int fd1, fd2, ret;
> struct stat st1, st2;
> + size_t page_size = getpagesize();
>
> - fd1 = __vm_create_guest_memfd(vm, 4096, 0);
> + fd1 = __vm_create_guest_memfd(vm, page_size, 0);
> TEST_ASSERT(fd1 != -1, "memfd creation should succeed");
>
> ret = fstat(fd1, &st1);
> TEST_ASSERT(ret != -1, "memfd fstat should succeed");
> - TEST_ASSERT(st1.st_size == 4096, "memfd st_size should match requested size");
> + TEST_ASSERT(st1.st_size == page_size, "memfd st_size should match requested size");
>
> - fd2 = __vm_create_guest_memfd(vm, 8192, 0);
> + fd2 = __vm_create_guest_memfd(vm, page_size * 2, 0);
> TEST_ASSERT(fd2 != -1, "memfd creation should succeed");
>
> ret = fstat(fd2, &st2);
> TEST_ASSERT(ret != -1, "memfd fstat should succeed");
> - TEST_ASSERT(st2.st_size == 8192, "second memfd st_size should match requested size");
> + TEST_ASSERT(st2.st_size == page_size * 2, "second memfd st_size should match requested size");
>
> ret = fstat(fd1, &st1);
> TEST_ASSERT(ret != -1, "memfd fstat should succeed");
> - TEST_ASSERT(st1.st_size == 4096, "first memfd st_size should still match requested size");
> + TEST_ASSERT(st1.st_size == page_size, "first memfd st_size should still match requested size");
> TEST_ASSERT(st1.st_ino != st2.st_ino, "different memfd should have different inode numbers");
>
> close(fd2);