From patchwork Mon Aug 17 09:04:55 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yu-Chien Peter Lin X-Patchwork-Id: 2286756 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=P6xg8mCL; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=sifive.com header.i=@sifive.com header.a=rsa-sha256 header.s=google header.b=hZBxlDdD; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) 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 4hNn3v1cT0z1xx7 for ; Mon, 17 Aug 2026 19:05:31 +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:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-ID:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=tB9/wQrmW5eJ8e3mImOVtKVt2GTPIzXiE9clz3ndp9U=; b=P6xg8mCLxWFzm1 rJGxIDS0rWyimXO4cj1Ucw74jV1sMLdkoirT5S/ruwXcUiYMCw+ZeofSQGTpbyONuiqtQocJhgqBd aZqkFppeugzDH+6VIZR9O+u997Jei1wpm5hrX0ZeqEn5i0ZYVOa4wNC95JQN0+o3nZcijNf0N7YLN VKVMV4fSKgIUk9xxN0DcFnpzPZxaP0XEivnHm9DC5iPqnxjHn69bmE9ec4vOwfiyo/mJSbyrGzm9x hqY2/aYPCVv2ZD52/yUZg2twbWoSGQg0fNUz41VmqTW6/p7R/Ptt8SqHkbXNi7aSzLxui8V4vmHnu Vuoks5uwPOPyH3mjv+8Q==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1wvtHY-00000005lUO-3bPU; Mon, 17 Aug 2026 09:05:24 +0000 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1wvtHW-00000005lTh-1Ee8 for opensbi@lists.infradead.org; Mon, 17 Aug 2026 09:05:23 +0000 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-cbeeaac53a9so3118992a12.1 for ; Mon, 17 Aug 2026 02:05:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; t=1786957521; x=1787562321; 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:content-type; bh=pA/To+3kMWzwkug/ZBqku9A/AeYwQ8YGNnX5KszdkqU=; b=hZBxlDdDOXBmkmhPyc0cq8p5UXwBlExyUkkzpKsSr4XjEJFPRZEa0UzOv5Pmv2lj/l K4tHuxZpLRbiJee9PhmpokT5aeXa6tRyhIxiIB2yhy3XdTGtL9cSFVmY8/cQuxWHeqCC tXsvJMJEtg1QvA+bW9dDjzw1bW4NBsCLQxLqoSP5EuvIlB2aft+Se3tEjSJoWr778FrR /cNMkRbCRn7aQksG5MiNSsGUQmgJHrmABT7leNSSylXNv1je2iMsELwxlqdVRYOHpZBp HmONdS5C3C5xDhxZlgS1B4KMgfAfF4KfR9ChDe9Y0oxuyzS15i58V3UpZIt1OjRpNZqA P+sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786957521; x=1787562321; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=pA/To+3kMWzwkug/ZBqku9A/AeYwQ8YGNnX5KszdkqU=; b=dKCP9s9w+gasSUY+0OP4PR1U+4YGlMK/nuETwkl0qNgiCJaVOWIGjqSPbupa6GKz9y OkCatlF+whotSkZAHaZBlGK6zoYbxQyo+alfRiWKutYrEK4Rfj5I0u2CsJMvnTXGgz5R Ciio+GhoWHfyTNrISKwzbnR6J4bbezOwtrJ1HeMkG/x4/sHay/zq0QlxaTRfJJeYtKn3 huKtSLeM4AxrkbhyLJnvCJyJBlETiiqh/Tv6vR9MiIR8sYO8AJcrUghnAXSkcDu79wOs 0S69FOC+iwxfzbIF3LCmwOZy68p8eApW6aK8qE2aLCKB0rPGixlQLAr8BpoojL/WNVT4 /Hjw== X-Gm-Message-State: AOJu0Yyu0QsL8a7wIkUQ1C+An3H6yEJcApDeGSErYBiFmVjrf2+LqGmo CKgES2L6Ftq9ZW0LuqGyITro9mCwok4wBHN/FK4gr8K71vYyP2Ozv34+LjtHa4/G1tcPQEeYNMU 19joEXQn1Acjy95sjPY8J0PxIVagvfAXIgGr9wJQLzgE+0D52cckjvziAOZRjIVl6NOc2/A5zns ynuzPUoNV8GAQMhzBpU3CmDtgjrZ++MKVVYLSRaGsGGB05pALweM0= X-Gm-Gg: AR+sD13A3LnSfte+XMKISLdMXif/Gyh5Pegqo55Hhl+rvu31Fwd/CABCQyLOhBhEkFV A9U3LGKdadAyi/Vdqyba6bGhe/IFTTjCGf4RvaWm9Bdju8M0vhY3jEfdJJEwXW61YDotVaLAhV5 s2CW3ZxfAUm5xKQ3J7pCDfWD3IkbKYi/REqAehB8QK5gh2+J2W+zZACBo7gXeoqkqTLSasqmQ2b chU1oNlzpaNa6YAkeS18icoe+TumWv9zOgS4GeOrcaoTEHMclc4UdZu33WZ2l48pCeUixTp51TL 3j7bBIQWzAnx4luAIxbO+yclwgkcoDtK6MmkQpaK0kX2Vy/0vrmJXwMfDAY0jMrEHqnfojxXyBz jkmU9u6CiOvW1wU9FDABN+/Lqz6+L+GjtG3OjxViiwgWvfHJ04F6h1v1xwXIUd0tZ1HgwR+PV57 UK2O37W3W3XtiX3NsLbNXu8ZaQlPuo0cl4n7HeVAPxEpfH+yABMoYbdqXo7wghB+R3sLvMWbakU 8cx12U0hQ9g X-Received: by 2002:a05:6a00:3285:b0:848:3f07:c5a2 with SMTP id d2e1a72fcca58-84fddf912ddmr24019635b3a.4.1786957521110; Mon, 17 Aug 2026 02:05:21 -0700 (PDT) Received: from hsinchu16.internal.sifive.com ([210.176.154.34]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8517d223f1bsm2487386b3a.38.2026.08.17.02.05.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 17 Aug 2026 02:05:20 -0700 (PDT) From: Yu-Chien Peter Lin To: opensbi@lists.infradead.org Cc: zong.li@sifive.com, greentime.hu@sifive.com, anup@brainfault.org, scott@riscstar.com, conor@kernel.org, dave.patel@riscstar.com, raymond.mao@riscstar.com, robin.randhawa@sifive.com, samuel.holland@sifive.com, pawandeep.oza@oss.qualcomm.com, krzk@kernel.org, Yu-Chien Peter Lin Subject: [PATCH v2 1/9] lib: sbi_hart: detect RISC-V Worlds ISA extensions Date: Mon, 17 Aug 2026 17:04:55 +0800 Message-ID: <20260817090503.2104998-2-peter.lin@sifive.com> X-Mailer: git-send-email 2.48.0 In-Reply-To: <20260817090503.2104998-1-peter.lin@sifive.com> References: <20260817090503.2104998-1-peter.lin@sifive.com> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.9.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20260817_020522_344116_8B43D0CB X-CRM114-Status: UNSURE ( 9.49 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -2.1 (--) 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: Add CSR definitions for RISC-V Worlds (mwid, mlwid, mlwidlist, mwiddeleg, slwid) and detect Worlds extensions via CSR probes in hart_detect_features(). Signed-off-by: Yu-Chien Peter Lin --- include/sbi/riscv_encoding.h | 12 ++++++++++++ include/sbi/sbi_hart.h | 10 ++++++++++ lib/sbi/sbi_hart.c | 26 ++++++++++++++++++++++++++ 3 [...] Content analysis details: (-2.1 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:531 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -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 -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.0 DMARC_PASS DMARC pass policy X-BeenThere: opensbi@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "opensbi" Errors-To: opensbi-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Add CSR definitions for RISC-V Worlds (mwid, mlwid, mlwidlist, mwiddeleg, slwid) and detect Worlds extensions via CSR probes in hart_detect_features(). Signed-off-by: Yu-Chien Peter Lin Reviewed-by: Pawandeep Oza --- include/sbi/riscv_encoding.h | 12 ++++++++++++ include/sbi/sbi_hart.h | 10 ++++++++++ lib/sbi/sbi_hart.c | 26 ++++++++++++++++++++++++++ 3 files changed, 48 insertions(+) diff --git a/include/sbi/riscv_encoding.h b/include/sbi/riscv_encoding.h index ffe7666c..e0262bfc 100644 --- a/include/sbi/riscv_encoding.h +++ b/include/sbi/riscv_encoding.h @@ -400,6 +400,9 @@ /* Supervisor Resource Management Configuration CSRs */ #define CSR_SRMCFG 0x181 +/* Supervisor lower-privilege mode World ID CSR (Sswid) */ +#define CSR_SLWID 0x190 + /* Machine-Level Control transfer records CSRs */ #define CSR_MCTRCTL 0x34e @@ -520,6 +523,15 @@ #define CSR_MTINST 0x34a #define CSR_MTVAL2 0x34b +/* Machine World ID CSRs (Smwid, Smlwid, Smlwidlist, Smwiddeleg) */ +#define CSR_MLWID 0x390 +#define CSR_MWID 0x749 +#define CSR_MWIDDELEG 0x748 +#define CSR_MLWIDLIST 0x74A + +/* mwid lock bit */ +#define MWID_LOCK (_UL(1) << (__riscv_xlen - 1)) + /* Machine Memory Protection */ #define CSR_PMPCFG0 0x3a0 #define CSR_PMPCFG1 0x3a1 diff --git a/include/sbi/sbi_hart.h b/include/sbi/sbi_hart.h index 543393bb..2941809e 100644 --- a/include/sbi/sbi_hart.h +++ b/include/sbi/sbi_hart.h @@ -95,6 +95,16 @@ enum sbi_hart_extensions { SBI_HART_EXT_F, /** Hart has D extension */ SBI_HART_EXT_D, + /** Hart has Smwid extension */ + SBI_HART_EXT_SMWID, + /** Hart has Smlwid extension */ + SBI_HART_EXT_SMLWID, + /** Hart has Smlwidlist extension */ + SBI_HART_EXT_SMLWIDLIST, + /** Hart has Smwiddeleg extension */ + SBI_HART_EXT_SMWIDDELEG, + /** Hart has Sswid extension */ + SBI_HART_EXT_SSWID, /** Maximum index of Hart extension */ SBI_HART_EXT_MAX, diff --git a/lib/sbi/sbi_hart.c b/lib/sbi/sbi_hart.c index bee88557..f5f4062e 100644 --- a/lib/sbi/sbi_hart.c +++ b/lib/sbi/sbi_hart.c @@ -360,6 +360,11 @@ const struct sbi_hart_ext_data sbi_hart_ext[] = { __SBI_HART_EXT_DATA(v, SBI_HART_EXT_V), __SBI_HART_EXT_DATA(f, SBI_HART_EXT_F), __SBI_HART_EXT_DATA(d, SBI_HART_EXT_D), + __SBI_HART_EXT_DATA(smwid, SBI_HART_EXT_SMWID), + __SBI_HART_EXT_DATA(smlwid, SBI_HART_EXT_SMLWID), + __SBI_HART_EXT_DATA(smlwidlist, SBI_HART_EXT_SMLWIDLIST), + __SBI_HART_EXT_DATA(smwiddeleg, SBI_HART_EXT_SMWIDDELEG), + __SBI_HART_EXT_DATA(sswid, SBI_HART_EXT_SSWID), }; _Static_assert(SBI_HART_EXT_MAX == array_size(sbi_hart_ext), @@ -647,9 +652,30 @@ __pmp_skip: /* Detect if hart support sdtrig (debug triggers) */ __check_ext_csr(SBI_HART_PRIV_VER_UNKNOWN, CSR_TSELECT, SBI_HART_EXT_SDTRIG); + /* Detect if hart supports Smwid */ + __check_ext_csr(SBI_HART_PRIV_VER_UNKNOWN, + CSR_MWID, SBI_HART_EXT_SMWID); + /* Detect if hart supports Smlwid */ + __check_ext_csr(SBI_HART_PRIV_VER_UNKNOWN, + CSR_MLWID, SBI_HART_EXT_SMLWID); + /* Detect if hart supports Smlwidlist */ + __check_ext_csr(SBI_HART_PRIV_VER_UNKNOWN, + CSR_MLWIDLIST, SBI_HART_EXT_SMLWIDLIST); + /* Detect if hart supports Smwiddeleg */ + __check_ext_csr(SBI_HART_PRIV_VER_UNKNOWN, + CSR_MWIDDELEG, SBI_HART_EXT_SMWIDDELEG); #undef __check_ext_csr + /* + * slwid traps on access when mwiddeleg=0 (reset state), so + * Sswid presence is inferred from Smwiddeleg. + */ + if (sbi_hart_has_extension(scratch, SBI_HART_EXT_SMWIDDELEG)) { + __sbi_hart_update_extension(hfeatures, + SBI_HART_EXT_SSWID, true); + } + #define __check_csr_existence(__csr, __csr_id) \ csr_read_allowed(__csr, &trap); \ if (!trap.cause) \