[PATCH v5 3/3] RISC-V: KVM: add KVM_CAP_RISCV_SET_HGATP_MODE
Andrew Jones
andrew.jones at oss.qualcomm.com
Thu Feb 5 06:55:29 PST 2026
On Thu, Feb 05, 2026 at 09:28:08AM +0800, fangyu.yu at linux.alibaba.com wrote:
> >> From: Fangyu Yu <fangyu.yu at linux.alibaba.com>
> >>
> >> Add a VM capability that allows userspace to select the G-stage page table
> >> format by setting HGATP.MODE on a per-VM basis.
> >>
> >> Userspace enables the capability via KVM_ENABLE_CAP, passing the requested
> >> HGATP.MODE in args[0]. The request is rejected with -EINVAL if the mode is
> >> not supported by the host, and with -EBUSY if the VM has already been
> >> committed (e.g. vCPUs have been created or any memslot is populated).
> >>
> >> KVM_CHECK_EXTENSION(KVM_CAP_RISCV_SET_HGATP_MODE) returns a bitmask of the
> >> HGATP.MODE formats supported by the host.
> >>
> >> Signed-off-by: Fangyu Yu <fangyu.yu at linux.alibaba.com>
> >> ---
> >> Documentation/virt/kvm/api.rst | 27 +++++++++++++++++++++++++++
> >> arch/riscv/kvm/vm.c | 19 +++++++++++++++++--
> >> include/uapi/linux/kvm.h | 1 +
> >> 3 files changed, 45 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/Documentation/virt/kvm/api.rst b/Documentation/virt/kvm/api.rst
> >> index 01a3abef8abb..62dc120857c1 100644
> >> --- a/Documentation/virt/kvm/api.rst
> >> +++ b/Documentation/virt/kvm/api.rst
> >> @@ -8765,6 +8765,33 @@ helpful if user space wants to emulate instructions which are not
> >> This capability can be enabled dynamically even if VCPUs were already
> >> created and are running.
> >>
> >> +7.47 KVM_CAP_RISCV_SET_HGATP_MODE
> >> +---------------------------------
> >> +
> >> +:Architectures: riscv
> >> +:Type: VM
> >> +:Parameters: args[0] contains the requested HGATP mode
> >> +:Returns:
> >> + - 0 on success.
> >> + - -EINVAL if args[0] is outside the range of HGATP modes supported by the
> >> + hardware.
> >> + - -EBUSY if vCPUs have already been created for the VM, if the VM has any
> >> + non-empty memslots.
> >> +
> >
> >Currently the documentation for KVM_SET_ONE_REG has this for EBUSY
> >
> > EBUSY (riscv) changing register value not allowed after the vcpu
> > has run at least once
> >
> >I suggest we update the KVM_SET_ONE_REG EBUSY description to say
> >
> >(riscv) changing register value not allowed. This may occur after the vcpu
> >has run at least once or when other setup has completed which depends on
> >the value of the register.
>
> Thanks for the suggestion.
>
> In this series the HGATP mode is configured via KVM_ENABLE_CAP at the VM level
> (kvm_vm_ioctl_enable_cap), not via KVM_SET_ONE_REG. Updating the KVM_SET_ONE_REG
> -EBUSY description might be misleading since it is vCPU one-reg specific and not
> directly related to this series.
Oh, right. I'm so used to adding registers I forgot we're only adding a
cap...
Thanks,
drew
More information about the linux-riscv
mailing list