From patchwork Thu Mar 28 03:33:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yu Chien Peter Lin X-Patchwork-Id: 1917121 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=bombadil.20210309 header.b=VwKlVcpX; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=none (no SPF record) smtp.mailfrom=lists.infradead.org (client-ip=2607:7c80:54:3::133; helo=bombadil.infradead.org; envelope-from=opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=patchwork.ozlabs.org) Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:3::133]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V4pzb0hW0z1yWr for ; Thu, 28 Mar 2024 14:33:45 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:CC:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=J1DD5ir/Y2Y7yQrLgP9Ltrbh025Qu6N86yDig0eqSVw=; b=VwKlVcpXiJUMbs GUQlaQ/t7UM7FT8DkX5Znr9kUuXjzafa6ZPIYXxaK9vxnAKphDLWX//YFPDo9E30iY4pTKyHEKYvf y2Veok0qXkfxO31+HJXaiv0nX4BXxrxTuxW6PBR7ej3UqJMaySVq1SYj9xBgwkBrpszjB9a/ninRv nxCNpfGTNrIXEbIqrGu0PBCXo49cDBkTU+gL32aPBaZH9lfsRLhzmncHYSvtpPHMPRgYRb35WGcDJ Tyh2ilatocHUFOmrqyyK2Aaf8E0KQ1eKFw3xblowj8oOqRgBZ0OmnNUnkJJ1nDhh9sTOyW019ekTN hoB2/2tyPGEN6/JiFmLg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpgWF-0000000CHb9-1OY4; Thu, 28 Mar 2024 03:33:35 +0000 Received: from 60-248-80-70.hinet-ip.hinet.net ([60.248.80.70] helo=Atcsqr.andestech.com) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rpgWB-0000000CHZb-0oJL for opensbi@lists.infradead.org; Thu, 28 Mar 2024 03:33:33 +0000 Received: from mail.andestech.com (ATCPCS16.andestech.com [10.0.1.222]) by Atcsqr.andestech.com with ESMTP id 42S3XGKl063974; Thu, 28 Mar 2024 11:33:16 +0800 (+08) (envelope-from peterlin@andestech.com) Received: from swlinux02.andestech.com (10.0.15.183) by ATCPCS16.andestech.com (10.0.1.222) with Microsoft SMTP Server id 14.3.498.0; Thu, 28 Mar 2024 11:33:12 +0800 From: Yu Chien Peter Lin To: CC: , , <2931013282@sjtu.edu.cn>, "Yu Chien Peter Lin" , Alvin Chang Subject: [PATCH v2 1/2] sbi: sbi_domain_context: Check privilege spec version before accessing S-mode CSRs Date: Thu, 28 Mar 2024 11:33:02 +0800 Message-ID: <20240328033303.883674-2-peterlin@andestech.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240328033303.883674-1-peterlin@andestech.com> References: <20240328033303.883674-1-peterlin@andestech.com> MIME-Version: 1.0 X-Originating-IP: [10.0.15.183] X-DNSRBL: X-SPAM-SOURCE-CHECK: pass X-MAIL: Atcsqr.andestech.com 42S3XGKl063974 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240327_203331_526476_837397DC X-CRM114-Status: UNSURE ( 7.66 ) X-CRM114-Notice: Please train this message. X-Spam-Score: 0.4 (/) X-Spam-Report: Spam detection software, running on the system "bombadil.infradead.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: SCOUNTEREN and SENVCFG may not be supported on certain RISC-V core, so check the existence of these CSRs via privilege spec version to prevent illegal instructions. Signed-off-by: Yu Chien Peter Lin Signed-off-by: Alvin Chang --- Changes v2: - No change --- lib/sbi/sbi_domain_context.c | 6 ++++-- 1 file changed, 4 [...] Content analysis details: (0.4 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 TVD_RCVD_IP Message was received from an IP address 0.4 RDNS_DYNAMIC Delivered to internal network by host with dynamic-looking rDNS X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org SCOUNTEREN and SENVCFG may not be supported on certain RISC-V core, so check the existence of these CSRs via privilege spec version to prevent illegal instructions. Signed-off-by: Yu Chien Peter Lin Signed-off-by: Alvin Chang Reviewed-by: Anup Patel --- Changes v2: - No change --- lib/sbi/sbi_domain_context.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/sbi/sbi_domain_context.c b/lib/sbi/sbi_domain_context.c index d83a2ba2..a41dc8c7 100755 --- a/lib/sbi/sbi_domain_context.c +++ b/lib/sbi/sbi_domain_context.c @@ -54,8 +54,10 @@ static void switch_to_next_domain_context(struct sbi_context *ctx, ctx->scause = csr_swap(CSR_SCAUSE, dom_ctx->scause); ctx->stval = csr_swap(CSR_STVAL, dom_ctx->stval); ctx->satp = csr_swap(CSR_SATP, dom_ctx->satp); - ctx->scounteren = csr_swap(CSR_SCOUNTEREN, dom_ctx->scounteren); - ctx->senvcfg = csr_swap(CSR_SENVCFG, dom_ctx->senvcfg); + if (sbi_hart_priv_version(scratch) >= SBI_HART_PRIV_VER_1_10) + ctx->scounteren = csr_swap(CSR_SCOUNTEREN, dom_ctx->scounteren); + if (sbi_hart_priv_version(scratch) >= SBI_HART_PRIV_VER_1_12) + ctx->senvcfg = csr_swap(CSR_SENVCFG, dom_ctx->senvcfg); /* Save current trap state and restore target domain's trap state */ trap_regs = (struct sbi_trap_regs *)(csr_read(CSR_MSCRATCH) -