From patchwork Mon Sep 16 18:23:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1986215 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=rXIdEA44; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=cPfWcMZP; 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 4X6tbf64Qtz1y1C for ; Tue, 17 Sep 2024 04:24:13 +1000 (AEST) 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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=S40vVoeRk3WQbYYTzZaST4kxvrcYnJE9WPvpmqCMU1M=; b=rXIdEA44bA7L/Q 8Y33weg7PYohatRJbmfS92DfuE8f3GdM8z90HSn2mAnquKcqgLZW2DQX0p3faHcFr/eV5xcO27H5q NMd11vjS+9dYR5HCMvqN8C8ft6ZeKgVupvTas/5wIXJX5Ku8ZjOHk3wZvj7ZKOuWUEOfvhijvlCd/ KfvbH3YjLLb2SiPgfSwm0mBpw29xx70SldsR2ARe0XNZGqV89ZJ4mvq3nRtnsAcjo0FkyDZVQzzzS 43WyIR38ALzkyKjJ6EW6li0YfjbGDRvStGiBvt6BcTLXgvJq6bOHoCg2kuwA3Wz940ipBGW0vpKrn IKKXnTep2fOequRMZA4g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1sqGOM-00000004gNw-1AND; Mon, 16 Sep 2024 18:24:06 +0000 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1sqGOJ-00000004gMI-0u9x for opensbi@lists.infradead.org; Mon, 16 Sep 2024 18:24:05 +0000 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2053525bd90so31248075ad.0 for ; Mon, 16 Sep 2024 11:24:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1726511042; x=1727115842; darn=lists.infradead.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=enwb1kuzrgowkbyNKMoCjzma+VuA6VosCKAvOTvUbdg=; b=cPfWcMZPTU6TLZ8LO88+Nn10Ab5mgPqA7rm2TO6JwQccz+cGlzNE0xd9ErvMzG+WPc ux198XNijj9fCgpLGqouy29X9yL2TPt/TTT0HnsBMS+u7ciBLEIZARjtC0rWGHmWCtSL x6ribZz7KyUj8sIX2VQr/G/sOYOdbFRjqjwTcmfMhLK4AHngsWiowfICLCx/ggYhrelK TLu8Fefl95JGdKnB8gOrqNH+SbwlU38kWOvpZHB8WaSaI0NxefNOhPx6MarggKtzQa+e aguDDF65SXXY7d1O/e0UwN5lnhzvVZRGgUpo+SV2JAq4GXPdh+lWCp66tQ/BzrrYoF1L NeKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726511042; x=1727115842; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=enwb1kuzrgowkbyNKMoCjzma+VuA6VosCKAvOTvUbdg=; b=JX83rQnXwudq6fDWlVCf+ijljnLe5bzg1q+9z0g8/jCatD9Iz0dyJOqHGDVnR10bET ykiejJw4ESL2GPumIQ7WWRv+o4zDJOcgLW2xBmxW5fJj1p647A1LCQyVL26at2mKU8NW nD5/fAhq1KUcdFV7kS1+byOHPD7p+EAY1X83SvZO5D2yk2EG5hE4Df83eZ/5uROYEVFT NpDnBqiLSjcZulW6NFFR4giAVZu0TLCaL2IiFWDHvaheZPOcBp5hplgiVOf+4ALWKFz6 8ea4M4D8AaNyJMpukiP1i/PWNXefTUw1NFAehu4hSg+j8wVIaY4QcWZo8SET7fq193xV j5Eg== X-Gm-Message-State: AOJu0YwfByMtOIHSvKTbjmL1ogNi7Hkll5uvEoR5uWCNRwlY+Z8RO1JG J3quLDXcG1jaD6miDA1pLxGJh4or7jjbdf/CfgP7GilshOKKDcH6xm/RcFqDyfCiis2Hsm9445Z T X-Google-Smtp-Source: AGHT+IHm1/PrJP6PQiKp28YAKvLI2mnMBWbX/K+fFeWAF0sxdp93/JQ8y4VXHvxdurQGSgZctKikJQ== X-Received: by 2002:a17:903:2344:b0:204:e4c9:ce91 with SMTP id d9443c01a7336-20781b42d56mr185189815ad.7.1726511042282; Mon, 16 Sep 2024 11:24:02 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20794600fadsm39203865ad.70.2024.09.16.11.24.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Sep 2024 11:24:01 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v6 1/4] include: adding support for Zicfilp / Zicfiss encodings Date: Mon, 16 Sep 2024 11:23:54 -0700 Message-ID: <20240916182357.24545-2-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240916182357.24545-1-debug@rivosinc.com> References: <20240916182357.24545-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240916_112403_315021_978E75D2 X-CRM114-Status: UNSURE ( 7.14 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -1.9 (-) 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: Zicfilp / Zicfiss extension (see link) introduces b2 (LPE) in menvcfg CSR to enable landing pads and b3 (SSE) in menvcfg CSR to enable shadow stack and landing pad for privilege less than M. Additiona [...] Content analysis details: (-1.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:635 listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 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: , Cc: apatel@ventanamicro.com, anup@brainfault.org, atishp@rivosinc.com, cleger@rivosinc.com, Deepak Gupta Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Zicfilp / Zicfiss extension (see link) introduces b2 (LPE) in menvcfg CSR to enable landing pads and b3 (SSE) in menvcfg CSR to enable shadow stack and landing pad for privilege less than M. Additionally extension introduces new bits in *status for recording landing pad state and a new exception type `software check exception` with cause=0x12. Link: https://github.com/riscv/riscv-cfi Signed-off-by: Deepak Gupta Reviewed-by: Atish Patra Reviewed-by: Samuel Holland --- include/sbi/riscv_encoding.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h index 2ed05f2..fa1d373 100644 --- a/include/sbi/riscv_encoding.h +++ b/include/sbi/riscv_encoding.h @@ -32,6 +32,7 @@ #define MSTATUS_TVM _UL(0x00100000) #define MSTATUS_TW _UL(0x00200000) #define MSTATUS_TSR _UL(0x00400000) +#define MSTATUS_SPELP _UL(0x00800000) #define MSTATUS32_SD _UL(0x80000000) #if __riscv_xlen == 64 #define MSTATUS_UXL _ULL(0x0000000300000000) @@ -41,12 +42,14 @@ #define MSTATUS_GVA _ULL(0x0000004000000000) #define MSTATUS_GVA_SHIFT 38 #define MSTATUS_MPV _ULL(0x0000008000000000) +#define MSTATUS_MPELP _ULL(0x0000020000000000) #else #define MSTATUSH_SBE _UL(0x00000010) #define MSTATUSH_MBE _UL(0x00000020) #define MSTATUSH_GVA _UL(0x00000040) #define MSTATUSH_GVA_SHIFT 6 #define MSTATUSH_MPV _UL(0x00000080) +#define MSTATUSH_MPELP _UL(0x00000200) #endif #define MSTATUS32_SD _UL(0x80000000) #define MSTATUS64_SD _ULL(0x8000000000000000) @@ -220,6 +223,8 @@ #define ENVCFG_CBIE_ILL _UL(0x0) #define ENVCFG_CBIE_FLUSH _UL(0x1) #define ENVCFG_CBIE_INV _UL(0x3) +#define ENVCFG_SSE (_UL(1) << 3) +#define ENVCFG_LPE (_UL(1) << 2) #define ENVCFG_FIOM _UL(0x1) /* ===== User-level CSRs ===== */ @@ -228,6 +233,7 @@ #define CSR_USTATUS 0x000 #define CSR_UIE 0x004 #define CSR_UTVEC 0x005 +#define CSR_SSP 0x011 /* User Trap Handling (N-extension) */ #define CSR_USCRATCH 0x040 @@ -763,6 +769,7 @@ #define CAUSE_FETCH_PAGE_FAULT 0xc #define CAUSE_LOAD_PAGE_FAULT 0xd #define CAUSE_STORE_PAGE_FAULT 0xf +#define CAUSE_SW_CHECK_EXCP 0x12 #define CAUSE_FETCH_GUEST_PAGE_FAULT 0x14 #define CAUSE_LOAD_GUEST_PAGE_FAULT 0x15 #define CAUSE_VIRTUAL_INST_FAULT 0x16 From patchwork Mon Sep 16 18:23:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1986212 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=zoUw+K96; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=fz42aU03; 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 4X6tbf6TXxz1y2Y for ; Tue, 17 Sep 2024 04:24:12 +1000 (AEST) 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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=RJiIcNt1jxep1Vl3MyzM7MRwVSXQtFFOZoAYyntwun0=; b=zoUw+K96mzCFop WNsJQjot7U+Iw+JX2o72xWndUbb7uPtxr2Fpa/EUyCGTu2UgLXP8gnHCRAJQucfNZyNF6icnALQi0 /JUh+EtxCCE/YP8AvAjrOTZf12vKTSOiFwseKKpejtaC6zAGDCSRUjOd7YS2K0v6/C6UJGrxQI1Fh cEw5umN1soMvk/OKm41nGHRCAZSrmY/RR9DAk1COjmkCfQsaz3pb9C4NQ9NPVFZavtBpGRJrzpG/C jiQVReWik0EvBhHgUPwoycNQRrfNbXyqqrj11O75c4xQXfpgMOh3lY+Ayq++Z5oqs9IPfAdpREq3s UbPscrMTefx8Mo1avbIw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1sqGOM-00000004gOJ-41qK; Mon, 16 Sep 2024 18:24:06 +0000 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1sqGOK-00000004gMk-3vuW for opensbi@lists.infradead.org; Mon, 16 Sep 2024 18:24:06 +0000 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-718d8d6af8fso3316511b3a.3 for ; Mon, 16 Sep 2024 11:24:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1726511043; x=1727115843; darn=lists.infradead.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=+mMynvl03xahRiCsE1SnVrkC4NqzvR3yxY/+hWYASG8=; b=fz42aU03FIRXLRYZ+Wy7DhoYGaXG3A/FWZCr5y0nh2GsuVz+9pv7Dbfxqtou3T6ob7 QzI2C4UkiytoXK1cw413MpONLKxE0rWiRD2AetRdRTqQFGmGAdiOZjlkGHBeL8Ib6E9G OLb2VgcrhnfkipUuZtLTn1s580I9JXrGeATz8BFgRD1WMn2Owfh8qVLLqFxvaEO+aERb dGSd+rTFY60GKI3M5THk5fsrWk7R6V5D8GW+c70wXAmZtn+LRLWbZY7fJB2AlVuN3JG5 0Aupsii7RHIb90N+PpnH4+meDx560DOyTQP7GiPdnWQgw7OL4ZY6KjBYlL4xBVQIkSHt skzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726511043; x=1727115843; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=+mMynvl03xahRiCsE1SnVrkC4NqzvR3yxY/+hWYASG8=; b=kzQWhkNgrxq5Kv817P2mHx8PQvqRHXzn8q5bM5+69gGmp1XAIcM5aHzYL4JBJUY9Xh nLrtxum2SaWLt8giJk3+qRI2vxfqVeJb571zReVgf9pDKTraauwHep1ib36vdzZqepyG bCAPGm8q1nhY+FeJ67a8W9cq2sncXfNehg/+1XsNGUl/4o31DKYN3+zlSWEHOHlWbFcf DCmp0q/z0epaYJovGaOAacSBAdRT4Npl0DVPd5LgwEgNE8EeEnnzZ0Gr432ufu2mJGQy Ddwg23ggD7qcSMca5/+Ouj8Nw2QNzkMNMbqNaxJMtjZvHBfUWqsByoB6nFE0suScwlFJ sLeg== X-Gm-Message-State: AOJu0YzT9pofqNJOZB3nbK8ZnUi1KHvA1PBV3bvX2NBfz3x8BAEvR75O Whs8egogV2qYDKSLJomjAxTwrmDfB+8Ss96uTyrC6vrdgKNsRwNwbX8QvvTpJ9vGA/XQYJ8ycM0 E X-Google-Smtp-Source: AGHT+IG006VUjbryEZ4ETj0BREhdmjsfWkdskr1v/IsyN4R1zTJQKsev1sDC0End7lbCOzaFiz3XUw== X-Received: by 2002:a05:6a21:2d89:b0:1cf:4596:d486 with SMTP id adf61e73a8af0-1cf762438b7mr20674200637.47.1726511043276; Mon, 16 Sep 2024 11:24:03 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20794600fadsm39203865ad.70.2024.09.16.11.24.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Sep 2024 11:24:02 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v6 2/4] lib: sbi: add zicfilp/zicfiss and elp cfi state reflect back in status Date: Mon, 16 Sep 2024 11:23:55 -0700 Message-ID: <20240916182357.24545-3-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240916182357.24545-1-debug@rivosinc.com> References: <20240916182357.24545-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240916_112405_001955_13DE7A3E X-CRM114-Status: GOOD ( 10.99 ) X-Spam-Score: -1.9 (-) 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: This patch adds support to check for zicfilp / zicfiss extension. zicfilp record status of hart's ELP state in *status csr. Missing landing pad sets MPELP in mstatus. When SBI is redirecting back to S/VS/HS, SPELP is set in sstatus/vsstatus. Content analysis details: (-1.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:42c listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 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: , Cc: apatel@ventanamicro.com, anup@brainfault.org, atishp@rivosinc.com, cleger@rivosinc.com, Deepak Gupta Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org This patch adds support to check for zicfilp / zicfiss extension. zicfilp record status of hart's ELP state in *status csr. Missing landing pad sets MPELP in mstatus. When SBI is redirecting back to S/VS/HS, SPELP is set in sstatus/vsstatus. Signed-off-by: Deepak Gupta Reviewed-by: Atish Patra Reviewed-by: Samuel Holland --- include/sbi/sbi_hart.h | 4 ++++ lib/sbi/sbi_hart.c | 2 ++ lib/sbi/sbi_trap.c | 20 ++++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/include/sbi/sbi_hart.h b/include/sbi/sbi_hart.h index 81ec061..860b9f6 100644 --- a/include/sbi/sbi_hart.h +++ b/include/sbi/sbi_hart.h @@ -67,6 +67,10 @@ enum sbi_hart_extensions { SBI_HART_EXT_SVADE, /** Hart has Svadu extension */ SBI_HART_EXT_SVADU, + /** HART has zicfilp extension */ + SBI_HART_EXT_ZICFILP, + /** HART has zicfiss extension */ + SBI_HART_EXT_ZICFISS, /** Maximum index of Hart extension */ SBI_HART_EXT_MAX, diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c index c366701..e1bc346 100644 --- a/lib/sbi/sbi_hart.c +++ b/lib/sbi/sbi_hart.c @@ -680,6 +680,8 @@ const struct sbi_hart_ext_data sbi_hart_ext[] = { __SBI_HART_EXT_DATA(ssccfg, SBI_HART_EXT_SSCCFG), __SBI_HART_EXT_DATA(svade, SBI_HART_EXT_SVADE), __SBI_HART_EXT_DATA(svadu, SBI_HART_EXT_SVADU), + __SBI_HART_EXT_DATA(zicfilp, SBI_HART_EXT_ZICFILP), + __SBI_HART_EXT_DATA(zicfiss, SBI_HART_EXT_ZICFISS), }; _Static_assert(SBI_HART_EXT_MAX == array_size(sbi_hart_ext), diff --git a/lib/sbi/sbi_trap.c b/lib/sbi/sbi_trap.c index b4f3a17..932ba62 100644 --- a/lib/sbi/sbi_trap.c +++ b/lib/sbi/sbi_trap.c @@ -103,6 +103,7 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, const struct sbi_trap_info *trap) { ulong hstatus, vsstatus, prev_mode; + bool elp = false; #if __riscv_xlen == 32 bool prev_virt = (regs->mstatusH & MSTATUSH_MPV) ? true : false; #else @@ -116,6 +117,17 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, if (prev_mode != PRV_S && prev_mode != PRV_U) return SBI_ENOTSUPP; + /* If hart support for zicfilp, clear MPELP because redirecting to VS or (H)S */ + if (sbi_hart_has_extension(sbi_scratch_thishart_ptr(), SBI_HART_EXT_ZICFILP)) { +#if __riscv_xlen == 32 + elp = regs->mstatusH & MSTATUSH_MPELP; + regs->mstatusH &= ~MSTATUSH_MPELP; +#else + elp = regs->mstatus & MSTATUS_MPELP; + regs->mstatus &= ~MSTATUS_MPELP; +#endif + } + /* If exceptions came from VS/VU-mode, redirect to VS-mode if * delegated in hedeleg */ @@ -169,6 +181,10 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, /* Get VS-mode SSTATUS CSR */ vsstatus = csr_read(CSR_VSSTATUS); + /* if elp was set, set it back in vsstatus */ + if (elp) + vsstatus |= MSTATUS_SPELP; + /* Set SPP for VS-mode */ vsstatus &= ~SSTATUS_SPP; if (prev_mode == PRV_S) @@ -209,6 +225,10 @@ int sbi_trap_redirect(struct sbi_trap_regs *regs, /* Clear SIE for S-mode */ regs->mstatus &= ~MSTATUS_SIE; + + /* if elp was set, set it back in mstatus */ + if (elp) + regs->mstatus |= MSTATUS_SPELP; } return 0; From patchwork Mon Sep 16 18:23:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1986213 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=HCgViakt; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=Z1SGGpwl; 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 4X6tbg04jQz1y2c for ; Tue, 17 Sep 2024 04:24:12 +1000 (AEST) 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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=pI9DrSFI1BvPAq8fEvO3PXd1DFQJlStMCiH9g6o1yIE=; b=HCgViakt1Vw67o 2oHP6Yzu/fZACosYEizijfcKxap8ULvqBu6MXOd4iV1xkA9M4SEVBbCVloVkUVtBc4MiEjx4l+kcL IIfigCQF9ruWTgriOgsyF7l6sxCGZOQeuY4uHfiA72ER6cP5G9ut5JAPRnxIIahv3fx57t+RDANKD PhLApsz+yD3x7G/GGH4Q256ZPeA0yybVtq8Sc7EB3Tbb+U7/ZOMaVAt4fQXBE3bVWiuOf/gU1O084 7TKXycJxdmRT2hg6l7Vh4KrRHOK4gUxOtm+sFYzmW04EDFVaZb3f0ORmxzYgAk3Eak3v6jNHx6hKH y8iahmIl42MJq1Uzxfpg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1sqGOO-00000004gPD-3tEw; Mon, 16 Sep 2024 18:24:08 +0000 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1sqGOL-00000004gMy-31vg for opensbi@lists.infradead.org; Mon, 16 Sep 2024 18:24:07 +0000 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-205722ba00cso40017955ad.0 for ; Mon, 16 Sep 2024 11:24:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1726511044; x=1727115844; darn=lists.infradead.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=x/DM3dQ7Ydrmc4maDFrpm0B27qekKwPIYPYPndRdJsc=; b=Z1SGGpwlqtQE2TIzTxmzXC74fR1La5Q6ywpiGrPZeq1JZkUh7f2WlhmFVlLs3GrF3F kzmUaZKPHJYph/T1y2wM6Nw3Ddg4SwXjzWEp6EVZhtK2uo1Yh7eq7aNciGlKMsBhnmVf WSL6NGJtUn1xEPDAVIVJbxC/RVZ7qZZJU5vuanZARTD9PhRGd57LCkVrBoMMsetGLPrI PlWigINYX0FItptYnaMBbvraCEC3TFajiFu67xjp+gxnl2d37XWvm4bDlvlTgZEPaXbR Iqsi0dJ9XNmTzhIBc/aft1ixTWBfUo6+k3osGSGAOl9zvd6ad3AZzwHzn4snbzdIUC2H caUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726511044; x=1727115844; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x/DM3dQ7Ydrmc4maDFrpm0B27qekKwPIYPYPndRdJsc=; b=jtLl2yzrFZKwvKB6lUvzwaDpUecabORrU/LPj0U+sAzFPPu4R++sTjYmVD9362F0Ml CsbLs+oaV68+ulTvpC6wQ41NYcELVrzlrWPHpmSYueQ5ALUAxx5tY6d87MLoZqJONPVi gEELmfaodKRlQGvRmM0FfAJOUPKSvU0CmQDSwJO9xXWYKgerSIoEDnaDx2ZPa2tzpnpO 5VZJHZn6nB6mGvvqUsYpw9knBJtkKyNiHeXczecMuNz5q18EeZowEOFr2PVlCHQHo00Z NQsGtJ+yLucwsA0gxyI5H4Oaxyd0W0CK3tdJOZfaQes4j+rzRXg5fHx0mUnMiUzSYsYd 7wAw== X-Gm-Message-State: AOJu0Yy7DLYeNwEPraAGqcKVDG0yIbAVBI5sTyutDaQ8r1GjQOUYkDIe 0tsZRDF6XHMQ0NctgAxWwRxeyvQef5q7GTKuSafQwqGME8u7bNfcEd2tXLhLt5cbRb11Ubb1n/9 p X-Google-Smtp-Source: AGHT+IEC+KXRb7JH/JSWAS+heMLkKeIhagmpUFqDkzosXa4bcCTpX6f1jphgMhZGcESD39xUwi1R1Q== X-Received: by 2002:a17:902:da84:b0:206:c911:9d75 with SMTP id d9443c01a7336-2076e3b2654mr217737685ad.20.1726511044227; Mon, 16 Sep 2024 11:24:04 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20794600fadsm39203865ad.70.2024.09.16.11.24.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Sep 2024 11:24:03 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v6 3/4] lib: sbi: sw check exception delegation Date: Mon, 16 Sep 2024 11:23:56 -0700 Message-ID: <20240916182357.24545-4-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240916182357.24545-1-debug@rivosinc.com> References: <20240916182357.24545-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240916_112405_792887_6AD3AD37 X-CRM114-Status: UNSURE ( 8.30 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -1.9 (-) 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: zicfiss and zicfilp introduces new exception (cause=18). Delegate this exception to S mode because cfi violations in U / S will be reported via this exception. Signed-off-by: Deepak Gupta Reviewed-by: Samuel Holland Reviewed-by: Atish Patra --- lib/sbi/sbi_hart.c | 3 ++- 1 file changed, 2 [...] Content analysis details: (-1.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:636 listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 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: , Cc: apatel@ventanamicro.com, anup@brainfault.org, atishp@rivosinc.com, cleger@rivosinc.com, Deepak Gupta Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org zicfiss and zicfilp introduces new exception (cause=18). Delegate this exception to S mode because cfi violations in U / S will be reported via this exception. Signed-off-by: Deepak Gupta Reviewed-by: Samuel Holland Reviewed-by: Atish Patra --- lib/sbi/sbi_hart.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c index e1bc346..54c261f 100644 --- a/lib/sbi/sbi_hart.c +++ b/lib/sbi/sbi_hart.c @@ -207,7 +207,8 @@ static int delegate_traps(struct sbi_scratch *scratch) if (sbi_platform_has_mfaults_delegation(plat)) exceptions |= (1U << CAUSE_FETCH_PAGE_FAULT) | (1U << CAUSE_LOAD_PAGE_FAULT) | - (1U << CAUSE_STORE_PAGE_FAULT); + (1U << CAUSE_STORE_PAGE_FAULT) | + (1U << CAUSE_SW_CHECK_EXCP); /* * If hypervisor extension available then we only handle hypervisor From patchwork Mon Sep 16 18:23:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1986211 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=fPazLsax; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=jHttu4F3; 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 4X6tbg1FDjz1y2d for ; Tue, 17 Sep 2024 04:24:14 +1000 (AEST) 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:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=kcwYuH1Nca+t5aMPiBClLA+FIIYHPN1EWFreVxHYphw=; b=fPazLsaxfyhcUN kkgrmP7yova5spwwukFMX7f1Kgin+6fPK+/5vavxzxs4jOamf0g80pmQ8TFDNjyUUMIBnpZKu1LYk qEUgwt6pllsJq0VRLC6ZEya36o9TQbDzfXfvlpoX0ZONrgCcHL+5y14TJyMcGdUkvG4YckvFB16Nf Er+VtrWDoR6VY4pEofJAgPP6kox+M4C/NoPPu9YTLMvyX5KJN3NB0gfR5ptblIvAtmSeLq4GEnDzP T2usk6PtQqdNNRmrRcnbPw33RwltoF8eWoPEGFvnSBSc0VpSbe2A2po1yBRKz2e4dexfbOyIBaSUh 4yDHGwzA39NsRL6RkeLA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1sqGOR-00000004gQh-250e; Mon, 16 Sep 2024 18:24:11 +0000 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1sqGON-00000004gNt-2vmm for opensbi@lists.infradead.org; Mon, 16 Sep 2024 18:24:08 +0000 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-20536dcc6e9so26418185ad.2 for ; Mon, 16 Sep 2024 11:24:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1726511045; x=1727115845; darn=lists.infradead.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=Z6oQt381CRKQ0qdZ0LmcKXQ3Bvm9YMSeDVdi5cdds0U=; b=jHttu4F3949uZIco2wRC+aERl4tAdmbWNZHM6MHHAlXSUfOz7PHwx8ON3CAsRTL5jc V70xoLzpWFafJxtd+SHknOtSjdmR82RH2I+R3JiQl/A9Ae4T5K5MzdWzlNUPy/BHQKFj VEPfXMz7xJDGGZsc34Gq4rnVqfAv9n75eLJAvJuQb65BFDds2+9+y932JQsIs0QNRlwN j7DQ0fIyGzmSBsEbSYpW34eO3P50HitDzZKeeQR1hPkSmI6jBtS0jb0xhZR6hucLhd+L 4RKd82eTKSlwlHUjAZNn/1mVk/F+ZVT8YFlAVXUSHlc6HnjAdLeJ4HJPGmAnsksGsnDj x9Ew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1726511045; x=1727115845; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Z6oQt381CRKQ0qdZ0LmcKXQ3Bvm9YMSeDVdi5cdds0U=; b=cqNpirLPcvTkbRhjcVYsCoTRhYxhpMWeqX6HzJkej1lJXiN8yJSKnnFpEv3laztDq9 KqjQrSjt+Fs9y4q+YIbirqX3KWkkS4Obh7T8kv7N7Fdd7CGvG5tDlDYgLPbhncF1dFYm bph+2ib+gkhRqa8oZI098d8WJTdMA/iQXx+Y2NOT68cPU8Ke89wphlkTU+5X2eTpOuFo INanul3EdMe3traESA8bfoQX46WZ62sG3tMUE02cQNQQgrOVWbHxun6zHW1XgOdhJ+QY dXwaj+Rq4Pew7jKtsf1Njvhn+bYsGmuF60zQ3RiDOb0YsTW9GDrta/rCA/k3sq1IeMIk CFrQ== X-Gm-Message-State: AOJu0YzEyJcXPHZ8u/q6CeGVPXVv5SBsJF/0GZoV1vzEw3OyMLqc9P/F XtI21zYYPH4cIfQt39YCRUmRJkVEkaRnk1Sir4KK3s4FEm9+eYTENgPHWG+m4riVkGIAm/rRg2z v X-Google-Smtp-Source: AGHT+IH/A/IwnsZxzVW1cLqX1v4WpEndt9TIW4g7iYASgT/QdLRxJzIlLkXT63dR4ARZDF8QXtjfvg== X-Received: by 2002:a17:902:dac4:b0:205:5427:2231 with SMTP id d9443c01a7336-20782be4df7mr160297415ad.47.1726511045289; Mon, 16 Sep 2024 11:24:05 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20794600fadsm39203865ad.70.2024.09.16.11.24.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Sep 2024 11:24:04 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v6 4/4] lib: sbi: fwft: implement landing pad and shadow stack fwft interface Date: Mon, 16 Sep 2024 11:23:57 -0700 Message-ID: <20240916182357.24545-5-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240916182357.24545-1-debug@rivosinc.com> References: <20240916182357.24545-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240916_112407_760182_CF3F4F75 X-CRM114-Status: GOOD ( 11.37 ) X-Spam-Score: -1.9 (-) 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: Supervisor software can enable control flow integrity features for itself using fwft feature `SBI_FWFT_LANDING_PAD` and `SBI_FWFT_SHADOW_STACK`. This patch implements the mechanism to enable both thes [...] Content analysis details: (-1.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [2607:f8b0:4864:20:0:0:0:629 listed in] [list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] 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: , Cc: apatel@ventanamicro.com, anup@brainfault.org, atishp@rivosinc.com, cleger@rivosinc.com, Deepak Gupta Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Supervisor software can enable control flow integrity features for itself using fwft feature `SBI_FWFT_LANDING_PAD` and `SBI_FWFT_SHADOW_STACK`. This patch implements the mechanism to enable both these fwft. Signed-off-by: Deepak Gupta Reviewed-by: Atish Patra Reviewed-by: Clément Léger --- lib/sbi/sbi_fwft.c | 74 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/lib/sbi/sbi_fwft.c b/lib/sbi/sbi_fwft.c index ef881ef..88610aa 100644 --- a/lib/sbi/sbi_fwft.c +++ b/lib/sbi/sbi_fwft.c @@ -145,6 +145,68 @@ static int fwft_get_adue(struct fwft_config *conf, unsigned long *value) return SBI_OK; } +static int fwft_lpad_supported(struct fwft_config *conf) +{ + if (!sbi_hart_has_extension(sbi_scratch_thishart_ptr(), + SBI_HART_EXT_ZICFILP)) + return SBI_ENOTSUPP; + + return SBI_OK; +} + +static int fwft_enable_lpad(struct fwft_config *conf, unsigned long value) +{ + if (value == 1) + csr_set(CSR_MENVCFG, ENVCFG_LPE); + else if (value == 0) + csr_clear(CSR_MENVCFG, ENVCFG_LPE); + else + return SBI_EINVAL; + + return SBI_OK; +} + +static int fwft_get_lpad(struct fwft_config *conf, unsigned long *value) +{ + unsigned long cfg; + + cfg = csr_read(CSR_MENVCFG) & ENVCFG_LPE; + *value = cfg != 0; + + return SBI_OK; +} + +static int fwft_sstack_supported(struct fwft_config *conf) +{ + if (!sbi_hart_has_extension(sbi_scratch_thishart_ptr(), + SBI_HART_EXT_ZICFISS)) + return SBI_ENOTSUPP; + + return SBI_OK; +} + +static int fwft_enable_sstack(struct fwft_config *conf, unsigned long value) +{ + if (value == 1) + csr_set(CSR_MENVCFG, ENVCFG_SSE); + else if (value == 0) + csr_clear(CSR_MENVCFG, ENVCFG_SSE); + else + return SBI_EINVAL; + + return SBI_OK; +} + +static int fwft_get_sstack(struct fwft_config *conf, unsigned long *value) +{ + unsigned long cfg; + + cfg = csr_read(CSR_MENVCFG) & ENVCFG_SSE; + *value = cfg != 0; + + return SBI_OK; +} + static struct fwft_config* get_feature_config(enum sbi_fwft_feature_t feature) { int i; @@ -230,6 +292,18 @@ static const struct fwft_feature features[] = .set = fwft_set_misaligned_delegation, .get = fwft_get_misaligned_delegation, }, + { + .id = SBI_FWFT_LANDING_PAD, + .supported = fwft_lpad_supported, + .set = fwft_enable_lpad, + .get = fwft_get_lpad, + }, + { + .id = SBI_FWFT_SHADOW_STACK, + .supported = fwft_sstack_supported, + .set = fwft_enable_sstack, + .get = fwft_get_sstack, + }, { .id = SBI_FWFT_PTE_AD_HW_UPDATING, .supported = fwft_adue_supported,