From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 8988C3FADF7 for ; Wed, 29 Jul 2026 23:25:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785367549; cv=none; b=P/YFWQnThVN0PeCB4YqCHYe6ByhLiG8dC8s11xCCaqr8/FMqBxt9A9LX2RhuMOn49T7TPF38Tuq9MbmsxZo95Cav3qLan8p3tvLweSDHWUDG0+tssfq3N5NgYuNXwK1WjgEuxvi3bb7xgmbL8PIOfIe1fgPMUT4NYfkQd0H2h6k= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785367549; c=relaxed/simple; bh=dJl0fLMWiJp1FXHaF7fslhtFbIf2M+oujlq+vFCvrJg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OQryPvTYokFWYWTVB2+Df2+VVoOgbjFLY0dbXAHtnfu01/oDRgux/QrfTy2EhmEIODQtJul6KrtcPjQUW0WsIs3v1dIiKIoh5E/FErjizJcmEPv944rP6LctLXIhe5wJdNvf+Oila1DX2H1Mj3PsUEOcNuL/TWPnqgm+Rk3XYdM= 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=Z7jUOitG; arc=none smtp.client-ip=209.85.214.179 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="Z7jUOitG" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2cacf197759so23327795ad.2 for ; Wed, 29 Jul 2026 16:25:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785367548; x=1785972348; 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:content-type; bh=fOohDTGKU0Fji4CKKyS8ZYpTWzbljIE/mTc4CCY1QKo=; b=Z7jUOitGYPUmx4u320wcnKAkkGLdCv0sTDbcKJz4Q1kOoF9ABnt9aRXPkZCoWLg9Be dE3qiceT8FySk3576ivUt6q7UpgBghm6tMZGYKSMtX1CCdINgACewh8yoZuHXKNQQVYv dAtgzgRzLDcwXpM99pl5ACU8ihiaXhTc2nPGjzM8/ZGHWNpcjDI+Hrb5cn5ZlCvKXOny HdSbbCE3bLYAFMBq2x+0NA6XfwiPHsuChEPkdj4Tn12ERwPRqvK1vS2zXwy+3QA1iVy8 DbdaQy/I7Gn+9BdtO3Uz4BwbjhDo9CUVG/8o/qEGRil6yA56+UkLMKSB4oHONTZ8/QW7 KolA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785367548; x=1785972348; 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:content-type; bh=fOohDTGKU0Fji4CKKyS8ZYpTWzbljIE/mTc4CCY1QKo=; b=JecMqHapaZIHcGxe1VS6gKRRy93ygywaTgVMkRbPZv4Qv+TCHlSxFLFbVaWnEANces RkBLlcXkkFzuIyffD+Saq7H/Xx+x82F0U7t+L726vELzn/QLRzqe6a4vGqTFsAYyT2cc 2wnJnI22BCe+kNyszcLVpGgz06+hww67V8Ej7j68x+/6ayKs5Y/mdDYalKONzGnGMfRL GWaq4ror0I+3+B358tKcX0FyyZBD1zs+2fRbIvpxcHGdGqM3qgmIUOr1Y+nZpE+bGYmX H9hMrkGmr6TyKgZMX91OzFLgp3bm685tiGobXB/SCZzwSRF1ZMGU3VZ136FETNpct8u7 G7iQ== X-Forwarded-Encrypted: i=1; AHgh+Rpe5qpwFn0Owkt+LPGMQNPzB6srd2yX/lfxAPomrXXP6UuCL3726YrIH44mKMcXfx+s3FYaa3VniyjM/EQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yy7mAmXsniSa6yvqVzRvfA51obQKk3uSnLx4I1hQXPDmZe/aawt 0lA2TE5dX0AwDwzM8UYit9oKl/WQ6AE3WO1q5gVyFTk5glAbdYjweqZZ X-Gm-Gg: AR+sD10cOab6Sunhn4WSCw0dc9mtbnMp1JDAFEfKit7OARg64aVD6w5aVoo+tEITFuG KbXRa0DT1M33E71lPxshkt3GHcB8tKPa7c/ysmOrc0WHgMvQw+Y/s3uqtAGkh6p2y9GkcifcDB6 WTI3Eqvs2d88fZS95SIBcjh/7JX4i/g2+aLkr5nBx4ltwpz/PwS7ftp4UfGJfgNg8Cf5kvgnkcn n8j0Pou4UOSZb0tvdtjBYj80g59Q4hk651qL5wI7rc07VhCSLyUrwSwD9Dt/d+JKbX03bDavPi6 yXpjPXWihYssXzuhxXyYghC4blYa2tjUcsUiqjhEBKMq+Z7hPwO5Ii4+sVmlY+eq6Ed3pBFA0jt +Zz/t2xY/LPoIosg/lvaAwA4cSHi63jibMaCvIBpXmyO4/YG/VsoSaolb6l6G/JJ0exbDr2yoV0 nOAFgcqz61zhQGDs7t+Luyw2i9hg/sLdsXN1tFPNd4nGo5KFNbz3f4PKcJkNY= X-Received: by 2002:a17:902:d48b:b0:2cc:80c5:73be with SMTP id d9443c01a7336-2d035d154dfmr3101295ad.40.1785367547941; Wed, 29 Jul 2026 16:25:47 -0700 (PDT) Received: from localhost ([2001:19f0:8000:3e6e:5400:6ff:fe38:3d01]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d022a15215sm17512995ad.8.2026.07.29.16.25.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2026 16:25:47 -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 v3 3/4] RISC-V: KVM: Reset the SBI extension when disable it Date: Thu, 30 Jul 2026 07:25:24 +0800 Message-ID: <20260729232527.139183-4-inochiama@gmail.com> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260729232527.139183-1-inochiama@gmail.com> References: <20260729232527.139183-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 extension is disabled so it can have a clear context. Signed-off-by: Inochi Amaoto --- 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