Re: [PATCH v2 3/3] RISC-V: KVM: Reset the SBI extension when disable it
Inochi Amaoto <[email protected]> Thu, 30 Jul 2026 06:33:45 +0800
| Newsgroups | org.infradead.lists.linux-riscv,org.infradead.lists.kvm-riscv,org.kernel.vger.kvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Jul 29, 2026 at 01:32:40PM +0530, Anup Patel wrote: > On Mon, Jul 6, 2026 at 7:42 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 extenion is disabled so it can have > > s/extenion/extension/ > > > a clear context. > > > > Signed-off-by: Inochi Amaoto <[email protected]> > > --- > > arch/riscv/kvm/vcpu_sbi.c | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/arch/riscv/kvm/vcpu_sbi.c b/arch/riscv/kvm/vcpu_sbi.c > > index b737e9a7a12a..3eb7b7c57059 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,15 @@ 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) { > > + if (ext->reset) { > > + ext->reset(vcpu); > > + vcpu->arch.csr_dirty = true; > > Let's not blindly set "csr_dirty" when any SBI extension is disabled, > instead we should set "csr_dirtry" in kvm_sbi_ext_fwft_reset() (just > like we do in kvm_sbi_ext_fwft_set_reg()). > Good, I will move this line to the kvm_sbi_ext_fwft_reset() in the new version. > > + } > > + } > > + > > scontext->ext_status[sext->ext_idx] = (reg_val) ? > > KVM_RISCV_SBI_EXT_STATUS_ENABLED : > > KVM_RISCV_SBI_EXT_STATUS_DISABLED; > > -- > > 2.55.0 > > > > Regards, > Anup > Regards, Inochi _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv