[PATCH] KVM: arm64: Add memslot for ST_GPA_BASE in check_steal_time_uapi()
Zenghui Yu
yuzenghui at huawei.com
Mon May 11 19:49:23 PDT 2026
On 2026/5/12 9:59, Mark Brown wrote:
> On Fri, May 01, 2026 at 02:16:39AM +0000, Jiakai Xu wrote:
> > 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.
>
> The regression in Linus' tree that is fixed by this patch is still
> present today. Adding Marc and Oliver since this bug manifests on
> arm64, adding Anup and Atish since the patch introducing the regression
> was merged via RISC-V.
Does fc240715fc50 [1] fix the selftest regression? It has been included
in the latest KVM/arm64 pull request [2].
[1]
https://git.kernel.org/pub/scm/linux/kernel/git/kvmarm/kvmarm.git/commit/?h=fixes&id=fc240715fc5003538ff530e3cfb985e7769b7171
[2] https://lore.kernel.org/kvmarm/20260507154221.2905554-1-maz@kernel.org
>
> > Reported-by: Mark Brown <broonie at kernel.org>
> > Closes: https://lore.kernel.org/lkml/afM8WEe4gG5tL4fH@sirena.co.uk
> > Signed-off-by: Jiakai Xu <xujiakai2025 at iscas.ac.cn>
> > Signed-off-by: Jiakai Xu <jiakaiPeanut at gmail.com>
> > 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
> >
More information about the kvm-riscv
mailing list