Re: [PATCH v3 3/4] RISC-V: KVM: Reset the SBI extension when disable it

Anup Patel <[email protected]> Thu, 30 Jul 2026 12:04:45 +0530
Newsgroups org.infradead.lists.linux-riscv,org.infradead.lists.kvm-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel
Message-ID <CAAhSdy2dMcuYv=vvVDabxv92OwM6HMU5LuH84Qqu86YZfEDV5Q@mail.gmail.com>
On Thu, Jul 30, 2026 at 4:55 AM Inochi Amaoto <[email protected]> wrote:
>
> The SBI extension validation callback can only fix the parameter if
> the extension is enabled. However, if the extension is disabled after
> modifty some parameters, the state of the extension is still broken.
>
> Reset the extension when the extension is disabled so it can have
> a clear context.
>
> Signed-off-by: Inochi Amaoto <[email protected]>

LGTM.

Reviewed-by: Anup Patel <[email protected]>

Thanks,
Anup

> ---
>  arch/riscv/kvm/vcpu_sbi.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/arch/riscv/kvm/vcpu_sbi.c b/arch/riscv/kvm/vcpu_sbi.c
> index b737e9a7a12a..1c4f874368fb 100644
> --- a/arch/riscv/kvm/vcpu_sbi.c
> +++ b/arch/riscv/kvm/vcpu_sbi.c
> @@ -221,6 +221,7 @@ static int riscv_vcpu_set_sbi_ext_single(struct kvm_vcpu *vcpu,
>  {
>         struct kvm_vcpu_sbi_context *scontext = &vcpu->arch.sbi_context;
>         const struct kvm_riscv_sbi_extension_entry *sext;
> +       const struct kvm_vcpu_sbi_extension *ext;
>
>         if (reg_val != 1 && reg_val != 0)
>                 return -EINVAL;
> @@ -229,6 +230,12 @@ static int riscv_vcpu_set_sbi_ext_single(struct kvm_vcpu *vcpu,
>         if (!sext || scontext->ext_status[sext->ext_idx] == KVM_RISCV_SBI_EXT_STATUS_UNAVAILABLE)
>                 return -ENOENT;
>
> +       ext = sext->ext_ptr;
> +
> +       if (!reg_val && scontext->ext_status[sext->ext_idx] == KVM_RISCV_SBI_EXT_STATUS_ENABLED &&
> +           ext->reset)
> +               ext->reset(vcpu);
> +
>         scontext->ext_status[sext->ext_idx] = (reg_val) ?
>                         KVM_RISCV_SBI_EXT_STATUS_ENABLED :
>                         KVM_RISCV_SBI_EXT_STATUS_DISABLED;
> --
> 2.55.0
>

_______________________________________________
linux-riscv mailing list
[email protected]
http://lists.infradead.org/mailman/listinfo/linux-riscv