The refactored check_steal_time_uapi() creates a temporary VM via vm_create_with_one_vcpu(), whose default memslot0 only covers GPA 0..~2MB. Setting st_ipa to ST_GPA_BASE (1 << 30) causes kvm_arm_pvtime_set_attr() to fail with EINVAL because gfn_to_hva() cannot find a valid memslot at the target GFN.
Add a memslot at ST_GPA_BASE in the temporary VM, mirroring what the main test already does. Reported-by: Mark Brown <[email protected]> Closes: https://lore.kernel.org/lkml/[email protected] Signed-off-by: Jiakai Xu <[email protected]> Signed-off-by: Jiakai Xu <[email protected]> Fixes: 40351ed924dd30 ("KVM: selftests: Refactor UAPI tests into dedicated function") --- tools/testing/selftests/kvm/steal_time.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/testing/selftests/kvm/steal_time.c b/tools/testing/selftests/kvm/steal_time.c index 7df2bc8eec02..2b01b466ddc1 100644 --- a/tools/testing/selftests/kvm/steal_time.c +++ b/tools/testing/selftests/kvm/steal_time.c @@ -213,6 +213,10 @@ static void check_steal_time_uapi(void) vm = vm_create_with_one_vcpu(&vcpu, NULL); + /* ST_GPA_BASE needs a valid memslot for gfn_to_hva() to succeed */ + vm_userspace_mem_region_add(vm, VM_MEM_SRC_ANONYMOUS, ST_GPA_BASE, + 1, 1, 0); + struct kvm_device_attr dev = { .group = KVM_ARM_VCPU_PVTIME_CTRL, .attr = KVM_ARM_VCPU_PVTIME_IPA, -- 2.34.1

