Re: [PATCH v2 4/5] KVM: selftests: Move page_align() to shared header

Andrew Jones
2025-12-22T18:11:37Z

On Mon, Dec 15, 2025 at 04:51:54PM +0000, Fuad Tabba wrote:
> To avoid code duplication, move page_align() to the shared `kvm_util.h`
> header file.
>
> No functional change intended.
>
> Signed-off-by: Fuad Tabba <tabba@google.com>
> ---
> tools/testing/selftests/kvm/include/kvm_util.h | 5 +++++
> tools/testing/selftests/kvm/lib/arm64/processor.c | 5 -----
> tools/testing/selftests/kvm/lib/riscv/processor.c | 5 -----
> 3 files changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/tools/testing/selftests/kvm/include/kvm_util.h b/tools/testing/selftests/kvm/include/kvm_util.h
> index 81f4355ff28a..dabbe4c3b93f 100644
> --- a/tools/testing/selftests/kvm/include/kvm_util.h
> +++ b/tools/testing/selftests/kvm/include/kvm_util.h
> @@ -1258,6 +1258,11 @@ 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);
> }
>
> +static inline uint64_t page_align(struct kvm_vm *vm, uint64_t v)
> +{
> + return (v + vm->page_size - 1) & ~(vm->page_size - 1);
> +}
> +
> /*
> * Arch hook that is invoked via a constructor, i.e. before exeucting main(),
> * to allow for arch-specific setup that is common to all tests, e.g. computing
> diff --git a/tools/testing/selftests/kvm/lib/arm64/processor.c b/tools/testing/selftests/kvm/lib/arm64/processor.c
> index 607a4e462984..143632917766 100644
> --- a/tools/testing/selftests/kvm/lib/arm64/processor.c
> +++ b/tools/testing/selftests/kvm/lib/arm64/processor.c
> @@ -21,11 +21,6 @@
>
> static vm_vaddr_t exception_handlers;
>
> -static uint64_t page_align(struct kvm_vm *vm, uint64_t v)
> -{
> - return (v + vm->page_size - 1) & ~(vm->page_size - 1);
> -}
> -
> static uint64_t pgd_index(struct kvm_vm *vm, vm_vaddr_t gva)
> {
> unsigned int shift = (vm->pgtable_levels - 1) * (vm->page_shift - 3) + vm->page_shift;
> diff --git a/tools/testing/selftests/kvm/lib/riscv/processor.c b/tools/testing/selftests/kvm/lib/riscv/processor.c
> index d5e8747b5e69..f8ff4bf938d9 100644
> --- a/tools/testing/selftests/kvm/lib/riscv/processor.c
> +++ b/tools/testing/selftests/kvm/lib/riscv/processor.c
> @@ -26,11 +26,6 @@ bool __vcpu_has_ext(struct kvm_vcpu *vcpu, uint64_t ext)
> return !ret && !!value;
> }
>
> -static uint64_t page_align(struct kvm_vm *vm, uint64_t v)
> -{
> - return (v + vm->page_size - 1) & ~(vm->page_size - 1);
> -}
> -
> static uint64_t pte_addr(struct kvm_vm *vm, uint64_t entry)
> {
> return ((entry & PGTBL_PTE_ADDR_MASK) >> PGTBL_PTE_ADDR_SHIFT) <<
> --
> 2.52.0.239.gd5f0c6e74e-goog
>
>

kvm_util.h is collecting a bit too much random stuff and it'd be nice to
split stuff out rather than add more, but, for now, this is an overall
improvement since we kill some duplication.

Reviewed-by: Andrew Jones <andrew.jones@linux.dev>

Thanks,
drew