From patchwork Tue Sep 10 16:35:19 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1983356 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=SKKF9I5b; 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=noWGPBh3; 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 4X38hX3snjz1y1w for ; Wed, 11 Sep 2024 02:45:32 +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=fAH5azOAwEGdM3ZtOhaUewkFaSg3Vc/7Kksg4RQKr1k=; b=SKKF9I5bs3uttQ AprWEUB26s/cA+i/pqKq1LsJr2ft+wPFhJHw8WT3eqGnRYdoFbzvX+T9VBrg1e05YLn1YluJoSfuy 07kDy4VD2nhqhlOKqn9TMIc/Lj7SuFzRouj5WdIJGrK2f07Tq5bTXrS6h1WhmmYhb0ey4P0mVDlAG 5ndnx/DOqRr6ycFvsLXVCyXHaYZcwsEIEUu+sonCCHGbKS96qkjv1bLoMG4SGtTGFzbuUlti0ShOm 8hc9cILbj/D1NtkznvBs/pPojGlU8Ig6nR0ileoU4oVIulNK3fKUxbg/u3kp70vaNt+2TRj1+GueD kQj+5yHyHEO2O/A6F6Bg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1so3zW-00000006P8a-3WVt; Tue, 10 Sep 2024 16:45:22 +0000 Received: from mail-pj1-x102c.google.com ([2607:f8b0:4864:20::102c]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1so3px-00000006Lr8-3Ht2 for opensbi@lists.infradead.org; Tue, 10 Sep 2024 16:35:31 +0000 Received: by mail-pj1-x102c.google.com with SMTP id 98e67ed59e1d1-2d86f71353dso3872959a91.2 for ; Tue, 10 Sep 2024 09:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1725986128; x=1726590928; 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=douikd7L02L0TBURZ+V7tfGd46klFae7qmXDbgZj8n0=; b=noWGPBh348wAzHFeTzv16t/gBYiybc8W277H1hKUQMOQLPvFKwvI1iYBAxHx+B6LSb P+C/l8y4z9aq0lVKlcUBxJgiDiQPmUx2MuP2IHpltxqROuUB8G0AVYMXdjnCtWBACvYx Ld120QJy4ONGlvyGHOGKtJg+JclGYUY+N9QkA7EkyiR7W2TQd5L2cRqkeWGivNc2yw0E CUI1US6VIuYhxqN3XfouM4P3GENM8RtxqAEIfep3609X+rA0Pw8EX9g2A6N5aXh6xqbq T9K+xqSSxH6lSnnW/bQuYbB2lw3uFc+82+E3vRZPFhZv/LhLOrrB7e/lg1/bK/M7OfIE Fp3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725986128; x=1726590928; 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=douikd7L02L0TBURZ+V7tfGd46klFae7qmXDbgZj8n0=; b=WgstFxVJplDSbSIFX5aaeERWF1wY0QhZKQ+PYTj7Jm0Pccsav593ikp6tA7hZHAUwE l11CQmW/ow84mB2FSRDd2xi6urcq/j3SUPha/yh3WSNyg6COcwUPSUjHI0oZ/s8Q80fk UD5xLPsBkiclJUO9dp3yr+KI3Rx8dveS7N3hpQIlMekR+QsY9aaRiWCIMmo4bWOiVRnn E03xRSgnmQz10INGdc327z1BtuaWFeF0cTsB3K6zSWDpE7Dl+2+yPcyiMSPLiT1idis2 ALRXWHEJy/b96+k6389nQk37l3RwTN83wBXy1e/UMWDe+jKwWR6fasPBwEL7APGyqfG5 VBJQ== X-Gm-Message-State: AOJu0Yz/ePTdXExTyEhL99/xDB5A8lU+DGG5E4AOi/V6Z3oKaQKwHvEB v/ugAGAf6+vCfkNkbwQs5ir4pWRRsNGRMb6oTJOpUYCZtWV79z+LK4OYFIGIdhWJv0TBCanUU1e Q X-Google-Smtp-Source: AGHT+IGJn0ILlMksaRfgoD0NPmg6WdBLpZomLYcETwIx/CDV45fHHi8b/FTfNjZ5PvposUcr4+RnXg== X-Received: by 2002:a17:90b:2644:b0:2da:8730:5683 with SMTP id 98e67ed59e1d1-2daffe292a1mr12546146a91.39.1725986128226; Tue, 10 Sep 2024 09:35:28 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2db04136bc9sm6668075a91.1.2024.09.10.09.35.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2024 09:35:27 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v5 1/4] include: adding support for Zicfilp / Zicfiss encodings Date: Tue, 10 Sep 2024 09:35:19 -0700 Message-ID: <20240910163522.2584936-2-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240910163522.2584936-1-debug@rivosinc.com> References: <20240910163522.2584936-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240910_093529_844547_A50405B1 X-CRM114-Status: UNSURE ( 7.57 ) 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:102c 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_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -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 Tue Sep 10 16:35:20 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1983358 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=wz5zW/PE; 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=d9uh94ra; 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 4X38hV5D3Rz1y1s for ; Wed, 11 Sep 2024 02:45:29 +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=eXipL8napiK5NnqkJCAdyPI/S6Qd4ZDtAXqLHHmrER4=; b=wz5zW/PE7kiXt0 GCbvKueHzrKRCbnNx2sJirYBb5VvsehqVc7Xc5KWM5dyDLtOdovodCETIVCvHPLDUb+296cwITrPJ g7blwPol7QfJFV+GxnIEjgOrO8vtO3BRonkzljkNe74udRSIc5TqWlyW807g3y8MHFrD4FFjcHgC6 90w7SjhMgXtH720n2F015GF3Pgh20mxOWs0kGsjticmQ3Cu80eVOztl8+29UHXP/YfJHpU2jcOSkh V1Lz34zwD/Mf6UI5kLiilarfQF7aoHdwkCHOji3NhAmGbffskRqq7W/m/exObuSb6cneq/HTfY1Zt BBG603moZHKvF8kkmvyg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1so3zX-00000006P8r-1fnY; Tue, 10 Sep 2024 16:45:23 +0000 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1so3py-00000006LrX-3E7E for opensbi@lists.infradead.org; Tue, 10 Sep 2024 16:35:33 +0000 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-6e7b121be30so3733404a12.1 for ; Tue, 10 Sep 2024 09:35:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1725986129; x=1726590929; 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=tDghRCs6eUx12UpXbPJWUZRAqyjtWLLw+Mms0A+RfzU=; b=d9uh94ra5nSVh7wdlDtHJiNrf9CH6bGvDO8Nw5Hq4YENPrswXE7tyFFd46EyBO/VHp vj57OSMRZmB0MCAlXiBftFC0j5OWUSD0wWsvpo1tCMzNpUw5U8jKy3g30w+Z9EHkYVvm bF97HMrhd0W3maiCQglC+cegJhhGuxMFQVVHh8+GBKdxrE+JEuz2Oli+vgdZhL3YLYnq JLSPXs6uWdRdkPO5xG1hx6JEcHkCHWhmWUFC6mjsjNZ0a6IWrNLR3FOsACP9gCZVhfCV 1J4Uw3fRXgvIWrPXJgR/igxIrRiTCGVQ5HxrVQOlC0NXBCkpKkmtXSWTByRb6NjNmQG7 RBSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725986129; x=1726590929; 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=tDghRCs6eUx12UpXbPJWUZRAqyjtWLLw+Mms0A+RfzU=; b=sf44ZHb/0LMlVXbVyTU2D7A1VEWrAFTBjZaHP60pZw71MFdACcUJHNe0mR2ufJpyj6 gNC6fO3CC8Vxul3ifOTfJF07vpBC3jkPiCauX2fBer8XKNGnW2AuVwqpc/xb1Mn8t+7g aZYJbSEy5W8WKtf+czBTDDbOgiiPsgZZKKpiF7R/IJU45BcxUu7qfEz3Jjo1NsqVI2+b fhCQzUWgWYgKZL50v84WiZHDH7bgTY7NclwOz0smtUgy4mNeTfUMCg8PAQgm/PKDaMza p/0UlWVEVOpgDAW1q8CEWXve+gRAhqXQqz3bmE6wIY76Mne+/g30TLMj50zVn3xjBQDh 4p7g== X-Gm-Message-State: AOJu0Yx30eVGPtAZ4eOyy0cIgff2xEdcqd9d+8FDXCTb68SUOsNMcKrG NMQmPOM6xtrXz/KKDzhSivTKsdq/B3VbRK/GYO9Usyz3fYVbqGmsQFNb864zUcZRPuf8tF/QoHI U X-Google-Smtp-Source: AGHT+IH72QpLdXgH65fofB9R+hhr1PX904skuSc341A8YZy91vMSf6WNT8SzYZJgQOwSFkJuyelxVA== X-Received: by 2002:a17:90a:ba82:b0:2d8:f7c6:e1dd with SMTP id 98e67ed59e1d1-2dad5135862mr15587678a91.37.1725986129414; Tue, 10 Sep 2024 09:35:29 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2db04136bc9sm6668075a91.1.2024.09.10.09.35.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2024 09:35:28 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v5 2/4] lib: sbi: add zicfilp/zicfiss and elp cfi state reflect back in status Date: Tue, 10 Sep 2024 09:35:20 -0700 Message-ID: <20240910163522.2584936-3-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240910163522.2584936-1-debug@rivosinc.com> References: <20240910163522.2584936-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240910_093530_836099_5D00D993 X-CRM114-Status: GOOD ( 11.95 ) 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:52a 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_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -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: Samuel Holland Reviewed-by: Atish Patra --- include/sbi/sbi_hart.h | 3 +++ lib/sbi/sbi_hart.c | 2 ++ lib/sbi/sbi_trap.c | 20 ++++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/include/sbi/sbi_hart.h b/include/sbi/sbi_hart.h index 81ec061..2aa6867 100644 --- a/include/sbi/sbi_hart.h +++ b/include/sbi/sbi_hart.h @@ -67,6 +67,9 @@ enum sbi_hart_extensions { SBI_HART_EXT_SVADE, /** Hart has Svadu extension */ SBI_HART_EXT_SVADU, + /** HART has zicfiss & zicfilp extension */ + SBI_HART_EXT_ZICFILP, + 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..e2502f2 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 extension has support for CFI, 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 Tue Sep 10 16:35:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1983359 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=s0AunwXr; 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=oaDTvfQm; 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 4X38hY63C1z1y1C for ; Wed, 11 Sep 2024 02:45:33 +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=SvlOBCpyI4PdEMyEg0xtOwe8fugUeQz1YI6SOdwnrsM=; b=s0AunwXr+ruiGz RFDDDy5ESUWlzciURAW8ZwvDYFhkposPPqSZbPwDIXSHjONGbM4gAEgQEbnRxIFYF6gE0t0LXpp1D MYyk4LPa9yEiFjxc9jUc1Ndl4wukw2j9jkPmn1KVxeIsdNR7S3MFVNFL9tqFrqbp9MvNS7OpCzEet SP7nx4SV6bRlDUNvXq8L+0FR7ivhOLiF8zyGI+rBpDpARc5smx7iCIfbIkPyn+85SthM8grFrExw5 O5CGAD2/QRQ/z/GkyrPIDP0euUXMK3S0dTkQIfPn8ZzrV31I4MQsPtqnauAOXi6QB5FGEe7VWvPZK yJOPP6RsHD2pNASJersA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1so3zY-00000006P9e-2Wya; Tue, 10 Sep 2024 16:45:24 +0000 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1so3q1-00000006Lsq-3PkH for opensbi@lists.infradead.org; Tue, 10 Sep 2024 16:35:35 +0000 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-2d8a744aa9bso3708184a91.3 for ; Tue, 10 Sep 2024 09:35:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1725986131; x=1726590931; 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=wKXtjvwqunrbPIo74nKCtNxYv5QYZrk8+rDHaU7m7xg=; b=oaDTvfQmKV4g6v9HddGQ8s8P+KVrcRtjGg1wfGHZpFCbMMAg65vyHGh4cPcVVArSrJ l7NyQdkxjGxXs7Y2hogrZWLiJAwnDVDgRDifM7K4A4MIh8xRZAnm9Kj8onkd2qKGTM2r BlQ31ppLlPuWnlhoRXJmbdOAZpT6RfXQcqbFqj/EIv69f7ZQTEFUtQXTZ33XpQJdvdCX 17pFIMY/ZZjNIZjMtiLiwUearOfU4lvfOUxu7h6r0M9V+0cPe2KhOQv50KyYK68gl7T5 +0pOB/lwyCAo5r9CjsmKlbGGelLOQKXLWeB0USWBIXTXytOuJTzqcQPYtdMu4znOkiAz UFlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725986131; x=1726590931; 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=wKXtjvwqunrbPIo74nKCtNxYv5QYZrk8+rDHaU7m7xg=; b=eOu37veOoeFGgt6F5LzOBmgjX53JSt61TMoXx8HCvYzuFOw/k0sCF9EmlsFoEKL8qD oUUmEoJqwigBhgtPkWpLuHFOS5uXGN/WrN/slmHbSwIPmoxci/XUe/3Wu1DRtKubH7YS lqkHzo1XBYnwnbkN+Sp+tuJJFc8WWVrSohCJtBh0TXaFpMRgsd6dp0xabLIsq+Pi6Odn YjJKJqWspCUN34awawqTnm2Ty/8vt6YfgCJr6YgIgRe5rNKqTNZb/F21jYqsqbYB+Sp7 RSTraZ4u0pFwJEK8QkpNZlYvdWXj7wReab6IdQQUCsQWyOShn9ncmCzpEb84NtVQpjlh sL8w== X-Gm-Message-State: AOJu0YysXZHbobWhieQJsfoUpkLpbmThRaUXgCkITVg2pl4GCFfPqENJ TJY/bbwsWjvmzfonMTeR59UfAxMvsu3hqIbyLcMZg3JIB9Ag9EklkjNmE/eooaooJqUpNtIymdc M X-Google-Smtp-Source: AGHT+IH18zw8rd8IKXxum+n/XnXmkBJ6dsoRwiKZechra9+NY8H4B8JkkXosz5MsicmydQSJipWV6A== X-Received: by 2002:a17:90a:7802:b0:2d3:d8ae:67e1 with SMTP id 98e67ed59e1d1-2dad50ed085mr14435192a91.26.1725986130581; Tue, 10 Sep 2024 09:35:30 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2db04136bc9sm6668075a91.1.2024.09.10.09.35.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2024 09:35:30 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v5 3/4] lib: sbi: sw check exception delegation Date: Tue, 10 Sep 2024 09:35:21 -0700 Message-ID: <20240910163522.2584936-4-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240910163522.2584936-1-debug@rivosinc.com> References: <20240910163522.2584936-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240910_093533_895397_A7C8561D X-CRM114-Status: UNSURE ( 8.67 ) 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:1030 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_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -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..fa00f69 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 Tue Sep 10 16:35:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1983360 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=GpEEOpUM; 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=bAPbKOq3; 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 4X38hZ1L30z1y1w for ; Wed, 11 Sep 2024 02:45:34 +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=lLBhx1f2WHXkhy5qtNXqDz4Fa9WbwW7VhbbM3+mbvD8=; b=GpEEOpUMghM0A8 xrjz4U0irGNmvcpn8IMn7SFMSGvUsXPsiehzPRnDjMoBnnK3fuWhnZH6kR1aAk6q8lE+eZLod5avS 2HjkTY5oXAAlZeBxk7o0nZBB8s/+eTRhnr6khH+y2WCtrUZkTyqxrpADAhZkaM/qCixZUrvB+LgvW lCQ9G1m1HPe2Bu5speittWuSkZgrbDKs1RIwt2/XjPmhAHSll0Z09xfEvXdoy9FPkqek8f+aAn9OM R0Ob9m4gfblWTZYPxV64Jt8hxnHfnuoxFCOFPhDeR5/gHdsM2t7qBApZfPdYMUNXnfO7/nOkWoodN +8Oh+MECwAA1bvFe2+nw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1so3zY-00000006P9G-0BtB; Tue, 10 Sep 2024 16:45:24 +0000 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1so3q1-00000006Lt5-3Bug for opensbi@lists.infradead.org; Tue, 10 Sep 2024 16:35:34 +0000 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-7d50532d335so2299031a12.1 for ; Tue, 10 Sep 2024 09:35:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1725986132; x=1726590932; 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=7owTcll3cIj7cO1EgxJRzQk1bJYu/VfH77ynU7+pwL4=; b=bAPbKOq3YEIWLgIj4yZuucomN4k53AI9+pH6S+JEKeo6urMyNpFDanOzYInp5WCfe7 ILQ0mLdPUAXPyn++EZWnC91OtqJOh5NpNeVGq6JxYgIEU/rEzwSht6vRljh5ks1h8RDl swbEDRbvdMD892cGT2HlOjP+ywoSIupd5giRv9uN0OI5R1oLy5Oxhi2AByWCkmeqw++M A/ba2nkFWoKzjZjglSssvWIQPsU7SCFtV0wa/rXcdwe7Y8XUun01JY/buEnpxLfQY1ug oBo+I3xkb/11wDhLfTa7YRSRLQPtnVXL4wAP+thVvi06KDcSnAVisFfUv0GhgO+pdcfs Rl5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725986132; x=1726590932; 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=7owTcll3cIj7cO1EgxJRzQk1bJYu/VfH77ynU7+pwL4=; b=QLevUzmdTF5w6N5ivKIaOp1vGgvbGLNysF+Po05eWrMOkkQn6/kUgZiU76fHXApade 9Hq3KggoprhR/a5XLjr3nC7XhkQFlnnqRDd1rDOEGfdsuxYY1D+kmIGKOOZ1Sp0/kh/S PR04fhsPaPk+W163wx1NWkulewWOB695i0J6Pyz2oE+hm19AzzAknWiUKkl89+pokq4i mvLYwYyia8CT9qTu4FGJJocJAXckvcdR6Jz1BTSIbNEVYrttFXSexsnatq/FEaPjWut7 +fsTGo7cx8m6RmqExf2s7PKUB6Uy2I60TB0XiLxTtObXUTXtnGSLWCNCN+D5qOi0MSnn 6mgw== X-Gm-Message-State: AOJu0YwMIbssNMy09QXqP02M1yCdyXxSEA2vkVHaf/63FNhLTxCgG40a MLzHb3aqsZgoIqAdeJqL5fpkdam8FkdvTiUjd9tsNR42DO0joGke7W1qK7F1hFmcHKGi1AFy7VW j X-Google-Smtp-Source: AGHT+IHDfpYTogDbh0BUv6Q+GCcVv/U4L7SJt1zaU0Ryvxklr6NGgPiEXwgTCM+tlU1mYSv3ZY+LMA== X-Received: by 2002:a17:90a:c217:b0:2d8:8d60:a19a with SMTP id 98e67ed59e1d1-2daffd0bf2fmr15132278a91.27.1725986131591; Tue, 10 Sep 2024 09:35:31 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-2db04136bc9sm6668075a91.1.2024.09.10.09.35.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Sep 2024 09:35:31 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v5 4/4] lib: sbi: fwft: implement landing pad and shadow stack fwft interface Date: Tue, 10 Sep 2024 09:35:22 -0700 Message-ID: <20240910163522.2584936-5-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240910163522.2584936-1-debug@rivosinc.com> References: <20240910163522.2584936-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240910_093533_828179_08B9E268 X-CRM114-Status: GOOD ( 11.43 ) 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:529 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_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature -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..747bc88 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; @@ -236,6 +298,18 @@ static const struct fwft_feature features[] = .set = fwft_set_adue, .get = fwft_get_adue, }, + { + .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, + }, }; int sbi_fwft_init(struct sbi_scratch *scratch, bool cold_boot)