RISC-V: KVM: add KVM_CAP_RISCV_MP_STATE_RESET
authorRadim Krčmář <rkrcmar@ventanamicro.com>
Thu, 15 May 2025 14:37:25 +0000 (16:37 +0200)
committerAnup Patel <anup@brainfault.org>
Wed, 21 May 2025 04:04:57 +0000 (09:34 +0530)
commit5b9db9c16f428ada473314ad1c49e55681be7a72
treee89a235c378da2980ae53a14ee9514b4cbc36fcb
parent5bc40978675241aad7175fadc857262118588805
RISC-V: KVM: add KVM_CAP_RISCV_MP_STATE_RESET

Add a toggleable VM capability to reset the VCPU from userspace by
setting MP_STATE_INIT_RECEIVED through IOCTL.

Reset through a mp_state to avoid adding a new IOCTL.
Do not reset on a transition from STOPPED to RUNNABLE, because it's
better to avoid side effects that would complicate userspace adoption.
The MP_STATE_INIT_RECEIVED is not a permanent mp_state -- IOCTL resets
the VCPU while preserving the original mp_state -- because we wouldn't
gain much from having a new state it in the rest of KVM, but it's a very
non-standard use of the IOCTL.

Signed-off-by: Radim Krčmář <rkrcmar@ventanamicro.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Link: https://lore.kernel.org/r/20250515143723.2450630-5-rkrcmar@ventanamicro.com
Signed-off-by: Anup Patel <anup@brainfault.org>
Documentation/virt/kvm/api.rst
arch/riscv/include/asm/kvm_host.h
arch/riscv/include/asm/kvm_vcpu_sbi.h
arch/riscv/kvm/vcpu.c
arch/riscv/kvm/vcpu_sbi.c
arch/riscv/kvm/vm.c
include/uapi/linux/kvm.h