From patchwork Thu Aug 22 17:48:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1975667 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=HwCcKMc/; 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=V4ltSnYS; 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 4WqW2q6pwdz1ygy for ; Fri, 23 Aug 2024 03:50:58 +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=CJyPG712ab5YUqxZ7+dD3fNTzYP3fcV66Oo4HebZqcA=; b=HwCcKMc/lHeFUr 53WE+iMXNWPtzX94lZZ3z2zQx+2WfpawAX0tClYw7+/ewzf6L3eSREJz5+S6zagFeefANf7SEF9Md JnjtYvAj3na7K04qLCT40udVvF6lTbC4SSyiHdVH+vcY15fz6mfunxjlIUOmDHAZEpk7XY9ifFT0V GAJEt2tm0/IiWFjXSoZowgEdUTLJNaW5WlHeHYbhwPYCLaeO4Q9xwXbbYzc+mfznkTpum1YftiN2V CILxiwdcr3OkDCRnmn+d4wYguY0jYuvxJarbRPwiUF3YAVPQMYreBEGojBbUOnDa58aFm2Pr/TjrF lZkoOFlgETje4ccXC6sg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1shBxQ-0000000DrSo-2I40; Thu, 22 Aug 2024 17:50:48 +0000 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1shBvI-0000000Dr3v-0Tlq for opensbi@lists.infradead.org; Thu, 22 Aug 2024 17:48:37 +0000 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-7106cf5771bso994987b3a.2 for ; Thu, 22 Aug 2024 10:48:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1724348914; x=1724953714; 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=ep+etXyj4ZEjmB65w14NCAa5202msQUfrG/DIIPz76s=; b=V4ltSnYSYHO+Dvdq8RSg3wg3rkVfKAZ1BOqeOYoV//Cu0sntQF7KO4hMFgWMlfcMXR Jf7SaAe2f9qDEMTTNyFWGZcUiXVHFrtj3aANL4LR9m9q60xcyLW1pbphddsmc/QwuJc+ poaFOiwpbkpPhEFYDyOllZTASsctPEKNj7igIgjC07YIxucMJkQAey/2OliBsgAuA1K0 K8QwXpbNTAu+TroejI4/lNeo0fiM7bEa5lLnCrBDahJfKQz0bBAlebuDPSRV7IGbc1YM BrD+Klp8NDv3T3tMOr3zexi3e4t5LcRNxRkJcq6kkBF4Phm/zCWnrWnCQFEWlbpZbzSv 5hJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724348914; x=1724953714; 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=ep+etXyj4ZEjmB65w14NCAa5202msQUfrG/DIIPz76s=; b=IaQdwnp7L3xZBB5seUMP+pOSvXTqJWBPPAUwyQCoF3yY1q+DjvSQKvmA5nVLeP7xmV IZtf4zArF3oM3d/bf9KXnHiqRnRRMjOTfsihgTFTW5/BYQWVJRa7aM4IYEmTe+vBRKsF 0qZP1YqNguV8kKdXUvMUUiLoo/V3D1OBBkWlDX4R2NN0ewp0O4FmoajpdMHqKkXc6E9t h2T92hYI9w8fRWzYK0O4U+AeEuYBmDHC/7jA8NOvVyVGW9EOLvWa/GE9NqVEJX5LHqld gMJaaxf8DK86FNKwPX7E4EZ1T19D7N/65z6j8Vn0DQ/AXXaKdFQdhSqwfaxLyxk1lrBp u90w== X-Gm-Message-State: AOJu0YzjXQW4XfVvoyJFF4WMO9c7RI13uCuzuAGddzTa7PR0ADbASfRB AykVIOcBO6uiLClp+0LGwba1RqiTAO9Pzebl/ikeomcYlmUCvtMLIqWifB1phZKGVjIYAsH0SMP G X-Google-Smtp-Source: AGHT+IHmNcD6DKrZc9beMDsxPs86nLJnnFcYty6YQVp5+VbN4CW7ujbYEcW9vIM3vMsT6tx6yf/png== X-Received: by 2002:a05:6a20:7fa2:b0:1ca:dafc:fbab with SMTP id adf61e73a8af0-1cadafcfc0emr6297861637.4.1724348914067; Thu, 22 Aug 2024 10:48:34 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7143430636esm1650251b3a.165.2024.08.22.10.48.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Aug 2024 10:48:33 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v3 1/4] include: adding support for Zicfilp / Zicfiss encodings Date: Thu, 22 Aug 2024 10:48:25 -0700 Message-ID: <20240822174828.4031332-2-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240822174828.4031332-1-debug@rivosinc.com> References: <20240822174828.4031332-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240822_104836_161972_EC19C6AD X-CRM114-Status: UNSURE ( 7.68 ) 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:431 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] -0.0 T_SCC_BODY_TEXT_LINE No description available. 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 --- 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 Thu Aug 22 17:48:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1975665 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=a8Wfhiyz; 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=dLd/AIbJ; 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 4WqW2q6kXmz1ybW for ; Fri, 23 Aug 2024 03:50:58 +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=5T8G0RCoF/v/IcHASw5/hGwPMc3OcfDsuudDGXy69vM=; b=a8WfhiyzGIcorD dyjuqKIj9qJHXwe5PrshvAf5LQpuC9MysULwuo6/4CnoYwMJxO/qf2EiL+rvKGKkkt2SrFyiR/C2V Ff7e8MG1TEWf61tfmzV/HfI+Mjnw5lGkCVTIo4Txqo0ac6t9uBYS6VDVD5PtklcFJ97/kqq3rTe2Z G2P2C1G/J+NJhP2pBRo4uV9tvyDwx+so75FSGyaPCPyLyvTQhqPFcDdU9iNg6c+xPxxqW8wvnYFSA ByBUTjrV0sNg15eQFDiSgIZvDt+m/e9IGp4z+VICxkFc7EDuAAM4TZtrXExtr9+631X6IDLy2YRo/ 7NEOnkwH4ZStD0qDQg2g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1shBxR-0000000DrTD-1zcp; Thu, 22 Aug 2024 17:50:49 +0000 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1shBvJ-0000000Dr48-33Mu for opensbi@lists.infradead.org; Thu, 22 Aug 2024 17:48:39 +0000 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-7141b04e7a3so941971b3a.3 for ; Thu, 22 Aug 2024 10:48:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1724348915; x=1724953715; 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=3grcfHKbD2GognxnbhYCc22Gl8qSxlV44tNGgZOhp4M=; b=dLd/AIbJkHmqLRG5bLl2GIvCCBA+mTm+T0H6U4CECN9DsdlEyoyNMAAOtZv1zxfyt9 jyjr4zeLXULmGcBifBljqYGvDIEKR81NNYq4wsDGjV9oogcSm6h/plHhzZcd/sG/96/k OsN4HUvMSJmitEVrDAlSuscZQqkeb/qW4Nbb4MAGQDa76okXi/WtFFpqjQ6hId/WQbvU XZOZGKP49rlJgOk4PwEpq259cos/xD+HwXZ7gPvh1NYL3PU3PKflWh6YfflMN7bqp6VN gs50aYJ8N3jHpJDIEj5wWxqBotxgemL2Bn3a+f0jU2Dc2uDcBnSqCW6w/vCa04CesoTV 2UUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724348915; x=1724953715; 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=3grcfHKbD2GognxnbhYCc22Gl8qSxlV44tNGgZOhp4M=; b=V8L9N5dvS81F+vvW4FphczvbfoQ55cs99qCayiIuykhL4eqcNFxlEL5FFG/mdvSLEP 8o+SSxLFMjrAEcJy7jvxa9d5QRG29igBAkF2+GLF/mEg8OypDeRVq0pnOgjKvF1uSzBD SEgtaZUv4p4Bm2JmhckyOLNsve4/gSDuXjKDFb+duRiDylEQyi6AJOuaSlyi/otJ+7RG 4oflVAQadkd3Kg65WJ2c8tVVVTWvWZSh5cW85PNzquUEGSSTckInIIqPwUizpjhcnUtL TYUDEgwCepHQt08PfevqjJfEry8D7+U6bKYjMiDxdrxvWQ2Xu+x3/RGVbN6n/RwcAjiR Q2jQ== X-Gm-Message-State: AOJu0YzcqHHdp5f+Da2pwulBpGptCYaa/P7uMs+OHjleY7doLcKjCWhI 9nPrGhgzQ3gR2jP+0ZHYRSOL0ymqNtBQIznmW/ip+gwsb8R1mcJkkBeB1FizbjhpD/fqYCzT+WX Z X-Google-Smtp-Source: AGHT+IHQJJFH7eD94h/dUe4spJsbLxpqaB8gLSnsh9N9n9Oxm5a/bViyI5CnWeN597/z4Bja5QdNoA== X-Received: by 2002:a05:6a00:194b:b0:714:1f6d:11e5 with SMTP id d2e1a72fcca58-7142378e057mr8542768b3a.12.1724348915136; Thu, 22 Aug 2024 10:48:35 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7143430636esm1650251b3a.165.2024.08.22.10.48.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Aug 2024 10:48:34 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v3 2/4] lib: sbi: Zicfilp/Zicfiss detection and elp cfi state reflect back in status Date: Thu, 22 Aug 2024 10:48:26 -0700 Message-ID: <20240822174828.4031332-3-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240822174828.4031332-1-debug@rivosinc.com> References: <20240822174828.4031332-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240822_104837_797932_EB523CCC X-CRM114-Status: GOOD ( 13.50 ) 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 for zicfilp / zicfiss detection in sbi_hart.c If zicfilp and zicfiss are detected, this patch turns on menvcfg.LPE and menvcfg.SSE Zicfilp records 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:42a 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] -0.0 T_SCC_BODY_TEXT_LINE No description available. 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 for zicfilp / zicfiss detection in sbi_hart.c If zicfilp and zicfiss are detected, this patch turns on menvcfg.LPE and menvcfg.SSE Zicfilp records 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 --- include/sbi/sbi_hart.h | 3 +++ lib/sbi/sbi_hart.c | 18 ++++++++++++++++++ lib/sbi/sbi_trap.c | 20 ++++++++++++++++++++ 3 files changed, 41 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..0636021 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), @@ -776,6 +778,7 @@ static int hart_detect_features(struct sbi_scratch *scratch) unsigned long val, oldval; bool has_zicntr = false; int rc; + bool ssp_exist, elp_exist; /* If hart features already detected then do nothing */ if (hfeatures->detected) @@ -933,6 +936,21 @@ __pmp_skip: /* Save trap based detection of Zicntr */ has_zicntr = sbi_hart_has_extension(scratch, SBI_HART_EXT_ZICNTR); + if (hfeatures->priv_version >= SBI_HART_PRIV_VER_1_12) { + val = csr_read_allowed(CSR_SSP, (unsigned long)&trap); + ssp_exist = trap.cause == 0; + if (ssp_exist) + __sbi_hart_update_extension(hfeatures, + SBI_HART_EXT_ZICFISS, true); + + csr_set(CSR_MSTATUS, MSTATUS_MPELP); + val = csr_read_clear(CSR_MSTATUS, MSTATUS_MPELP); + elp_exist = val & MSTATUS_MPELP; + if (elp_exist) + __sbi_hart_update_extension(hfeatures, + SBI_HART_EXT_ZICFILP, true); + } + /* Let platform populate extensions */ rc = sbi_platform_extensions_init(sbi_platform_thishart_ptr(), hfeatures); 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 Thu Aug 22 17:48:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1975666 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=bS0HnoXl; 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=kXLJ7HIm; 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 4WqW2q6vHjz23Rn for ; Fri, 23 Aug 2024 03:50:58 +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=ULRjgCUMwAIfL18Z58RYf78OT1+G/ev+3AMDpOMtW3M=; b=bS0HnoXla68XAa ZdS5E/C0Gijl5NxL8QZZDIS37rP1s2aTZ/lkvRfsNabQhSI/Q99tgr0yrfy5llFTwf9c6XGKnToqh nFgRQ0+duhJUHC7vdoguzG8DpgBLrparKGPX5BOfHCWaQm6HLfqOPYBbnnjJyZ1njZwM8e52HLBaN E33WZc+0ZbqQxERNEAHCbOpDpVljurd+J2uBRqKRByfGyCbCxAyQH9eZh9bvvoo4UseInqhSDsY1C ElwcOocgKSWGDRZtJ53BW4wd5Be6gsr5T9IKaT9V/8YDpt48mhfNTPdDWgryT+6tV5twO3oAbDVHE eUjkV0Y8jwqNcIYenuqg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1shBxR-0000000DrT3-06gO; Thu, 22 Aug 2024 17:50:49 +0000 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1shBvJ-0000000Dr4Y-3E8s for opensbi@lists.infradead.org; Thu, 22 Aug 2024 17:48:38 +0000 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-7141e20e31cso1001808b3a.3 for ; Thu, 22 Aug 2024 10:48:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1724348916; x=1724953716; 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=Dc0OZFeSdfhIKvQi3Bq4JJVWhLtpZPp9oEUW0NgbPtw=; b=kXLJ7HImxJNYX0DHqzw0ACsqY8GBrUJPmLpsy72fpXUv8bYF+e0eb/+vaiA1JdWtnm pcoQdoovM+MEyHhqiG56Mi64gz03E49kAwlIcy+nEMK/YLbeK8qaXzR1l1WmxM16Bb/+ MIblD9v9UvPSv8gmOHZrgXCsS333yg7j2HD3CBiRabvPDjdvi4KNYcD3bQfQsdUXsHKW Lo8vp7yVYubQ5xdVNZsdz3rK/G0TcLdzLUkzsLgEOq7yG0eUhZmGeQAhlnoY4IkfnGiD JcNnPfhLsS77GLZCYbaEflgHTqu7LfV7iUYlMnwxEh795JZM8wjmv7ySTevPT6AlvHb+ TmEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724348916; x=1724953716; 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=Dc0OZFeSdfhIKvQi3Bq4JJVWhLtpZPp9oEUW0NgbPtw=; b=jAdv9eFCl2I8+a9TTj4d3FlmHviP2QzvtZBQnMsbvmN5J5hIxK9fEzd01l67FflBkz BvLMrHoUO/hHxFRmrojPBhvdfjROmWBLgwxOul4vk0LuXcpUIAelAF3BQcVfvcXFU0as XVb8gxrhrilX3nKafpd2yQZtOSyE7jQeDLIj3C44mYQextl+FO8IdSfkipMeKTGXk8tw N6Wxswc5tIk1UuaQtivCB1SwZqUK0caTriXp64+qRbzxRjy0SL2qXiaQSiOqaPz2Ebe2 /PuS2IEbdkyb4WH9H073bXZRHZ73HgLArxRPJyNnjPM6E0GoOta3YzKmO65JWR98MW0e jk4Q== X-Gm-Message-State: AOJu0YxqTvIbkVgk2ASOatobyFtQhQj0blBjUW7CPrnQpEV0ck5ooZpD mGjylx4fkXsAOU14rbH5dP27Tn2Clk59Z7sSQSp1MmbCmECs8884xWMAa9e+GBKGk3AB4eTx+2l w X-Google-Smtp-Source: AGHT+IFweHXqGyqLuDHgyPD0Fs7VghRQ7BH8lYI64d9O4K9+aca6kE3pCuRY12mYPDn8gDh98zWL8g== X-Received: by 2002:a05:6a00:9a9:b0:710:591e:b52f with SMTP id d2e1a72fcca58-71423421f10mr7767928b3a.5.1724348916112; Thu, 22 Aug 2024 10:48:36 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7143430636esm1650251b3a.165.2024.08.22.10.48.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Aug 2024 10:48:35 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v3 3/4] lib: sbi: sw check exception delegation Date: Thu, 22 Aug 2024 10:48:27 -0700 Message-ID: <20240822174828.4031332-4-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240822174828.4031332-1-debug@rivosinc.com> References: <20240822174828.4031332-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240822_104837_817710_6A117B3D X-CRM114-Status: UNSURE ( 8.65 ) 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 --- lib/sbi/sbi_hart.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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:42d 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] -0.0 T_SCC_BODY_TEXT_LINE No description available. 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 --- 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 0636021..1f6c4c8 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 Thu Aug 22 17:48:28 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Deepak Gupta X-Patchwork-Id: 1975664 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=nnu3bybc; 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=mLIk3wlS; 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 4WqW2q6nwcz1ygv for ; Fri, 23 Aug 2024 03:50:58 +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=hk14f6bXxKPyin0tt4waPM5+lXvVtabvq/86qxHVF8M=; b=nnu3bybcoA4hvK 9mWK7lXF6r6nWzIiYfvJvnEgFcVgIgZbgHyhYVv3AQMZ+C80cKS9+jv4iN24n8Hq/0JrFPkTQixNL BRhVNbqTDG9fQ3p+VWCFUHyDkBogyWjDPWsoZCUQGbKAhUXtb8KAetcenIpOn6myyUnw+46MuMHBk lkGw/4h0j7stO5V5tSSH27CmR0UiMtVeaePga1gf1iFGLrKvt7bWjfcQe641dOJ74iM7+5tpOjPbu KYd85Y3Elkj7Hcb7ypPnm1Sx4ZGl/W+BusE3yP+U6xnSeVR/VogJTxsGpJ2Kta6xYGbEMKBYGcmuw f4i1TYybxP2Edk9JKXkw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1shBxS-0000000DrTo-0txI; Thu, 22 Aug 2024 17:50:50 +0000 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1shBvK-0000000Dr51-3Fcr for opensbi@lists.infradead.org; Thu, 22 Aug 2024 17:48:40 +0000 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-7143ae1b560so541335b3a.1 for ; Thu, 22 Aug 2024 10:48:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1724348917; x=1724953717; 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=I4JeNH5x+3i8fuqB66VdPGreGsvcRnNrf0hdNB5t53s=; b=mLIk3wlSlsFoCeJg6HucIs8mEE3N/03lNHWOj53nG8cAZx380fyh/avUIaB8fDJPev Q1xtIbMCmZ5CDmz1v/fpPyouDCYfi+WcPv40jI3i6sVZjXerkUenO1qmhkaEZVYNJJbC VQJDw/AwJeBmpxmUsHCRQWSfNcJXicD4v3V1xGmIiY9yqskaEcmmjuBRQiCoRd6kM78N WJReeFKkyyQenxPuhyJ/6pnhFT8Tq3jhIbK7cuegLGDtCJnzUI2tiGN2AerbKPzk/6G+ dm/uASlTY3TC4BqdZkEGnW+Psdqa2DOZIj4rMjQyS5jyxFNFHy38bUjgTKG4O6O/VSFl I4SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1724348917; x=1724953717; 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=I4JeNH5x+3i8fuqB66VdPGreGsvcRnNrf0hdNB5t53s=; b=JW9iFPWi0UBy6V3C7thN7aK/fxQOYErEs9VXKdXYqlJZUrrklxi2VuOnFkX1x0cLuW ntELdLONIfKSvgV+eJExp/+K9K1kv4FLw9Tls5A80yyBfiguySxwtVTAm7v6bXxK8nae 3LQ7GCJH3I7C/o7r27Kls0iXpDup3eS/SqR8SY0qVdarttix6yp3tf5/zmY1kMi4C4yg 7TbE7c0bAmBoafpW8jBWp+NjJkTjrrrFJ2+iqiJrPVdFKOXkQjlxckv3yxfCWs1AD3AU gvZQrNssrJU2npo+GcsHYvEEEgirRUrN0dAnal1PIntik6iAdnB8CnbjM+YGiPZ+sStr 4Ouw== X-Gm-Message-State: AOJu0YzRElX65BeQ98Mj6Tqd165+yQcwT3ksMDCP4B7zScbKgz6tM3uM c5driEjaik/VDs9Xjj3VuuL2tx+j6nMpi4l0a5KhzbmD689P4IV/H5LlGKsw8+8Me5JDGwG8xNe m X-Google-Smtp-Source: AGHT+IGsOCrFN0mJGjdi5Zot8d+wlpT31nJfZW3gfZN0Hz85JxS0slfKWXyjTqcAO3LtfGgoDMFSog== X-Received: by 2002:a05:6a00:85a7:b0:70e:a524:6490 with SMTP id d2e1a72fcca58-71423462332mr6664510b3a.1.1724348917108; Thu, 22 Aug 2024 10:48:37 -0700 (PDT) Received: from debug.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7143430636esm1650251b3a.165.2024.08.22.10.48.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Aug 2024 10:48:36 -0700 (PDT) From: Deepak Gupta To: opensbi@lists.infradead.org Subject: [PATCH v3 4/4] lib: sbi: fwft: implement landing pad and shadow stack fwft interface Date: Thu, 22 Aug 2024 10:48:28 -0700 Message-ID: <20240822174828.4031332-5-debug@rivosinc.com> X-Mailer: git-send-email 2.45.0 In-Reply-To: <20240822174828.4031332-1-debug@rivosinc.com> References: <20240822174828.4031332-1-debug@rivosinc.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240822_104838_834842_91CEDA06 X-CRM114-Status: GOOD ( 11.28 ) 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:42b 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] -0.0 T_SCC_BODY_TEXT_LINE No description available. 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 --- 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)