From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F2E6937C0F6 for ; Mon, 6 Jul 2026 02:12:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783303964; cv=none; b=FIF2X3hEX8lf7NsEaDL5z9su1IH7rARDomxKkMXGxHYe//wwkbXZiIMptx2EbGMWa9c3pBqFVp+gqalRI/l3VV9tAnEGclCOFGnaSB2PNfBO26uXqFyMlGmep/NbgYO2jN7V6GTfwjBWebYpwsauyAUpLX8d0oHfKnXCfZw3Pgw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783303964; c=relaxed/simple; bh=QAHqvy9R7O55EL8/sUBZYy1pp/iDzktOlvYcuERAmmY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KZKEqup1rSzhvt6MVdbDXwGTcOf2OWBFCiGGM2i1tsLTyr6DyKlqjfK7p46FX+Z7QfK61X5yFiRvFZbLlf92UWZ9/P44nn2b3/36C16B2qlIy0AqB3uKLgIYEuJhQMLkGvOU1ooYhQqSkuJ+MPsuwkUlb2QCh7eSjfj7H+o94Pw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TZ5e0vbM; arc=none smtp.client-ip=209.85.210.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TZ5e0vbM" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-846970f0acaso2344435b3a.3 for ; Sun, 05 Jul 2026 19:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783303960; x=1783908760; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MVL4Q3g2uFBrFhtqEHVihrv/zmgdiC+pHWdUndlTmlw=; b=TZ5e0vbM+lgFoqg7EvAoQGj8BRBwjfWnENkwT7mmHWu/kbdyn49Rx6inG27I/Pd98u l5NKva+hQMyKtN450aCTA7L4JOWhw22gAJB5IDAqeMsm6eKdpXfBr+i/+MfPxQYkPIdb J7sNmX/m0IA5TC+vZ3ECOqoNqwoz9dvRGv9c5BddthO6GnXYRviyiJElEfmNFRd6FT2k +qZTgWqyeSXQNnoZuyTWf8LJy9ZzTpOiQpgHug+4t//7hfWFfVb0gTX45qMBpDbKLA7n D1aFryujX/aQcQOuPhEjdzWn3GQhur3tHxkfXJ6hGFLOa1GNMkIp4xUHGh9C/SU1ZgZ2 lDhQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783303960; x=1783908760; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MVL4Q3g2uFBrFhtqEHVihrv/zmgdiC+pHWdUndlTmlw=; b=GjbK7cwzy0qMhnZCl4Xxisg+AtTLSH3sNuv/m8JJhOv6L0TOzeoioajWQIl8jxBIPx f2WEyHqNRIzs46peEjE75fijzm50CpMjdLsq+GZ5RuWQeeiRGTjiAhjvY4PPwzBI5MRz Z/jwpaBWN1LJmzzD3LJdYWOZ+sPm2XCjuBTJYhJUvRvk2EbB5cb4LMTt+h5LmSRI4GPS GOAOJOSQ6Uz5tyxwRZ7O71DN2Oj9hU+XBkOSM0Y1+6TWG9peCNAgd7Ndzls62rfgIJ1f 197zFLdpvHu5PSSJer66+ZHEKRdu9JN1LCbjdLwj/dH/SpFl6pMhEiEyUOyBAIyp9+X1 8enQ== X-Forwarded-Encrypted: i=1; AHgh+RoDc1rmfobOh4f/JF8SlMBWldkpwHaU/SxHrclSMvEo3gQbDMj0W3pPVtXeJxA5jtk9Yuvxx+2HtNgU0D4=@vger.kernel.org X-Gm-Message-State: AOJu0YzeujAsKz2HxP+FH/zwdsfdf6VjHZdISQPa7qPro7Pzuf5hTr93 NTiA6MRm1uzENcMGo0Zh9wUU4wYnh4X5SfrqN9so/ACMAeCzpPT23fO2 X-Gm-Gg: AfdE7cmZSXCbfX0TVfWdPRDmr+U6rNsAA9K9GCtv1qtE0HMD35hLt4lMKontUdlXP/S aMbMEQdS/kzjB/GR1szI7sBr2jPxZSoytZBuBaLC7Q0e1V5hnh7EBrTezy+m0+2cLPkLAo3/Gg6 OXsBPmVIeGAucewb/gCrvJyFQJWWM80uLUKu5dXsfX+U/GR0jFvWIHoFvUhozgxOlSpReEGy94O ZQBaKf6bDlUpkpMeawseba7YrGoM1xt6IO9tDDoOg3nrHrkg1z/YZQ1JNiLMiEUXpZecSSCWKiH GrghUW0bWIMeNZATR+UOeWwtlYnRMLwvjp1cFG1WF/yiT25hmyN3/IROwdA9z3JVHkkavxMAgA0 PpmuYUt0jUCUKCtuCLk9Te1wUMELvew9To2Dq4bxWTyKTqkOXOsVUHv0EGhMwv+Wv X-Received: by 2002:a05:6a00:2d99:b0:847:871a:94ca with SMTP id d2e1a72fcca58-847f6f3d63cmr7231493b3a.41.1783303960374; Sun, 05 Jul 2026 19:12:40 -0700 (PDT) Received: from localhost ([2001:da8:7001:11::cb]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-847f6d4dbdesm2835970b3a.31.2026.07.05.19.12.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Jul 2026 19:12:40 -0700 (PDT) From: Inochi Amaoto To: Anup Patel , Atish Patra , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti Cc: Inochi Amaoto , kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, Yixun Lan , Longbin Li Subject: [PATCH v2 3/3] RISC-V: KVM: Reset the SBI extension when disable it Date: Mon, 6 Jul 2026 10:11:52 +0800 Message-ID: <20260706021154.210289-4-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260706021154.210289-1-inochiama@gmail.com> References: <20260706021154.210289-1-inochiama@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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 a clear context. Signed-off-by: Inochi Amaoto --- 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; + } + } + scontext->ext_status[sext->ext_idx] = (reg_val) ? KVM_RISCV_SBI_EXT_STATUS_ENABLED : KVM_RISCV_SBI_EXT_STATUS_DISABLED; -- 2.55.0