From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id EBBE63CF670 for ; Tue, 2 Jun 2026 23:12:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780441983; cv=none; b=QJzGSxU+9K/cvzEIDZOu0B4XuleIUDOQBhxZ9JkjjomNpDu0IFsHDym4hBGW9KWO5R6NHjEmJY8242GnLud9zI8S9bWwjE3D1S/rztc42LW1tFGAvKqG4BEdHQ8ke+ADYwYfO6Ovsp2gMikWW/9VQoojkofEwuSIDb0fBO0nFsg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780441983; c=relaxed/simple; bh=i+bSIzD9+RiKWCP11BdhBb8f9cURvGwMJkPT72+TQ9A=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UFx41XoO4f2LfgVChBJTR7bEyc5aww7pfT4Mw/cpDYtx1lrETipFnr+xus4XfSr2WHviJ7xRgBmJ4r7pNbCGmDraVCmLQ0dfz+QPDj1mcTMou6Ha772Wt1u58p/br5szfsX3D3hF1B4SHYSPn56Aw57kVpXjEJ9xU0Bob1Knk4s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=bGjU8km8; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="bGjU8km8" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2bf125989f2so38918095ad.3 for ; Tue, 02 Jun 2026 16:12:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780441979; x=1781046779; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=at7eAXfC0U9LH2oH4voN5YpVnxe6Tbb3DG6Uoa+BbDk=; b=bGjU8km8EMEA3CW6KivU39xLuhdgiT33LurGU4B+VdYFmoUUd0/wHKfFFgaAPcd4sw RtQgDfuy41imHbBsjF4EYLtFm+GCc5tjYi8aWhi2Yz7FzZLSwqHIBNLHa6hT1J7WENcn BR1F5tuDqGelLuzagAkZrO5rn0/PTYuFY+Q8ZMsaQWymZxfoQnHPcmu+rTsTWcr1He0p phpcJfKLmlE1mdYjDosBd6FPRf/Z+vkt4TIKTqNEGoWhTFqG9W6V9QoqEjZXOBQC23CO 0bV1NlqbKVPnCAIT/rOyahnt+dlbdn1+gMQ9AL5Msv27YIsJLmQ6yqm8jcWhaxEPNr/k 2DRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780441979; x=1781046779; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=at7eAXfC0U9LH2oH4voN5YpVnxe6Tbb3DG6Uoa+BbDk=; b=JAsPUu6QrvZSSSCchNAar6eiDuu1mwhISd6QTVVpKlGUxGoEvdCz7zr/2Mi5AEyJxe CnXSIPXkm6x1ob2XLHXQDz/lF7iZxDl56p3QWCv6SgDl0lmF/+ZQL0jKq3n3khZiK0qf LhOFHkLE3fbGVPX0WMGOejTIsXZ3X7gsAvTjZi/w1Ef6YNbytz1USFwLA/2Ej1b8pIgB uguAf42tIkxxFrHp/p5GkiUFMmrIK9zSVy2bIjb8Ao7J6hST1BlBfkkcKqUb2wjt/QDV 2xjmq9vQaVSP2NF8XbcQlaRfAljPup8APjSJNYZGKr0bweN02jEwbKiDdPUb2c0QTHib g+NA== X-Forwarded-Encrypted: i=1; AFNElJ+AGPZmNJkcx9V8uBQeawRpurEDzGeSU2ZRxFtzh/AXKp/WzU4b5GKWLsF98eWvPQLoaWTR6vVn30liYls=@vger.kernel.org X-Gm-Message-State: AOJu0YyoP6+7wLxR2Xb0V3LVqzsoZj7xbSAG+3bSYoIuSLYjTPz/6GBm gwhzuc5VA6ElSgwSqLDscsTC+48MGPMPNGwg2sh017C1jenmTMf/AIbL X-Gm-Gg: Acq92OHWOyontas3laGcCUnEthGRcHdZj3k+X4dD1cI2x2fif0tsSJIW/Zcsx5gWkp8 eivWTt1eiaM/fhil3tZPBoHUVoaQPwI3ZUAuzO/snwkvnJu06RNS/Jmxu0Y7sbhehnvKpX+EePz zaba5e7jEC3hKyQWhp0JTjVGNQfLzSRp4nAaz2NoupsYb6+IXzBfHupnRGncky5STIERMfUQlhX epxUDelDipmlAdGUaTY+ANdiIS30VGQ3v6LW2Vfx2oRGRckKdQdZ9uDWZArpVAng1PRiQkDRHOK sIRWK4M5FVot8PSx1I2WaedaLq6xSJ1Wwk85NrDdyxq61iIVap3UPLMXWeNzqRa+JSYLxu/5OxA RgArsJmjMES1nROrii6dQ1+ZTjcaq+RMJ2F/ZJJcxqES8dX9o3e1D/e0y3lW6kgojW6ecDmE/9l 5Y5VeyCKyled3K/qft/gMq X-Received: by 2002:a17:902:ce87:b0:2c0:b4f5:41e0 with SMTP id d9443c01a7336-2c163d8f7fdmr6885635ad.26.1780441979026; Tue, 02 Jun 2026 16:12:59 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.12.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:12:58 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:11:56 -0400 Subject: [PATCH v3 01/15] riscv: hwprobe.rst: Make indentation consistent Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-1-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=20508; i=docular.xu@gmail.com; h=from:subject:message-id; bh=jQ+FZ1a4caFuCxBYqE0mSSFty3fjCcqiDo3iX06WP7Y=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHub4ddWsl1beWbpj4xopx3qvKwz7152L6d3As2G7d YPG4Sk6HaUsDGJcDLJiiiyHj7Zkb33lE+37nPMHzBxWJpAhDFycAjAR/ihGht/hCVzTZ/8J4Lwe rr+MeTnXE90f395Fabuaz6rsnDklfjHD/5rJGpMOpr5eeoflc73exQ2LQmutJnG/T6z/an7llfL L8+wA X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE From: Andrew Jones A handful of vendor-extension entries indent continuation lines with a tab character, while the rest of hwprobe.rst uses spaces. In addition, many list items align their continuation lines under the 'm' of ':c:macro:' (column 7) rather than under the item text (column 4), so the file mixes several indentation styles. Replace the tabs with spaces and align every list item's continuation lines under the item text, giving the whole file one consistent style. Whitespace-only change, no functional change. Signed-off-by: Andrew Jones [Guodong: extend from tabs->spaces to normalizing all continuation-line indentation across the file] Signed-off-by: Guodong Xu --- v3: - Move to the front of the series. - Extend from replacing tabs to normalizing all continuation-line indentation, so later patches add documentation on top of a consistent base (Andrew). --- Documentation/arch/riscv/hwprobe.rst | 194 +++++++++++++++++--------------= ---- 1 file changed, 97 insertions(+), 97 deletions(-) diff --git a/Documentation/arch/riscv/hwprobe.rst b/Documentation/arch/risc= v/hwprobe.rst index c420a8349bc68..a09a8f16bd16f 100644 --- a/Documentation/arch/riscv/hwprobe.rst +++ b/Documentation/arch/riscv/hwprobe.rst @@ -82,121 +82,121 @@ The following keys are defined: version 1.0 of the RISC-V Vector extension manual. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZBA`: The Zba address generation extension= is - supported, as defined in version 1.0 of the Bit-Manipulation ISA - extensions. + supported, as defined in version 1.0 of the Bit-Manipulation ISA + extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZBB`: The Zbb extension is supported, as d= efined - in version 1.0 of the Bit-Manipulation ISA extensions. + in version 1.0 of the Bit-Manipulation ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZBS`: The Zbs extension is supported, as d= efined - in version 1.0 of the Bit-Manipulation ISA extensions. + in version 1.0 of the Bit-Manipulation ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZICBOZ`: The Zicboz extension is supported= , as - ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMO= s. + ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZBC` The Zbc extension is supported, as de= fined - in version 1.0 of the Bit-Manipulation ISA extensions. + in version 1.0 of the Bit-Manipulation ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZBKB` The Zbkb extension is supported, as - defined in version 1.0 of the Scalar Crypto ISA extensions. + defined in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZBKC` The Zbkc extension is supported, as - defined in version 1.0 of the Scalar Crypto ISA extensions. + defined in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZBKX` The Zbkx extension is supported, as - defined in version 1.0 of the Scalar Crypto ISA extensions. + defined in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZKND` The Zknd extension is supported, as - defined in version 1.0 of the Scalar Crypto ISA extensions. + defined in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZKNE` The Zkne extension is supported, as - defined in version 1.0 of the Scalar Crypto ISA extensions. + defined in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZKNH` The Zknh extension is supported, as - defined in version 1.0 of the Scalar Crypto ISA extensions. + defined in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZKSED` The Zksed extension is supported, as - defined in version 1.0 of the Scalar Crypto ISA extensions. + defined in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZKSH` The Zksh extension is supported, as - defined in version 1.0 of the Scalar Crypto ISA extensions. + defined in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZKT` The Zkt extension is supported, as de= fined - in version 1.0 of the Scalar Crypto ISA extensions. + in version 1.0 of the Scalar Crypto ISA extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVBB`: The Zvbb extension is supported as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVBC`: The Zvbc extension is supported as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVKB`: The Zvkb extension is supported as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVKG`: The Zvkg extension is supported as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVKNED`: The Zvkned extension is supported= as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVKNHA`: The Zvknha extension is supported= as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVKNHB`: The Zvknhb extension is supported= as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVKSED`: The Zvksed extension is supported= as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVKSH`: The Zvksh extension is supported as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVKT`: The Zvkt extension is supported as - defined in version 1.0 of the RISC-V Cryptography Extensions Volume= II. + defined in version 1.0 of the RISC-V Cryptography Extensions Volume II. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZFH`: The Zfh extension version 1.0 is sup= ported - as defined in the RISC-V ISA manual. + as defined in the RISC-V ISA manual. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZFHMIN`: The Zfhmin extension version 1.0 = is - supported as defined in the RISC-V ISA manual. + supported as defined in the RISC-V ISA manual. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZIHINTNTL`: The Zihintntl extension versio= n 1.0 - is supported as defined in the RISC-V ISA manual. + is supported as defined in the RISC-V ISA manual. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVFH`: The Zvfh extension is supported as - defined in the RISC-V Vector manual starting from commit e2ccd0548d= 6c - ("Remove draft warnings from Zvfh[min]"). + defined in the RISC-V Vector manual starting from commit e2ccd0548d6c + ("Remove draft warnings from Zvfh[min]"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVFHMIN`: The Zvfhmin extension is support= ed as - defined in the RISC-V Vector manual starting from commit e2ccd0548d= 6c - ("Remove draft warnings from Zvfh[min]"). + defined in the RISC-V Vector manual starting from commit e2ccd0548d6c + ("Remove draft warnings from Zvfh[min]"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZFA`: The Zfa extension is supported as - defined in the RISC-V ISA manual starting from commit 056b6ff467c7 - ("Zfa is ratified"). + defined in the RISC-V ISA manual starting from commit 056b6ff467c7 + ("Zfa is ratified"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZTSO`: The Ztso extension is supported as - defined in the RISC-V ISA manual starting from commit 5618fb5a216b - ("Ztso is now ratified.") + defined in the RISC-V ISA manual starting from commit 5618fb5a216b + ("Ztso is now ratified.") =20 * :c:macro:`RISCV_HWPROBE_EXT_ZACAS`: The Zacas extension is supported as - defined in the Atomic Compare-and-Swap (CAS) instructions manual st= arting - from commit 5059e0ca641c ("update to ratified"). + defined in the Atomic Compare-and-Swap (CAS) instructions manual start= ing + from commit 5059e0ca641c ("update to ratified"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZICNTR`: The Zicntr extension version 2.0 - is supported as defined in the RISC-V ISA manual. + is supported as defined in the RISC-V ISA manual. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZICOND`: The Zicond extension is supported= as - defined in the RISC-V Integer Conditional (Zicond) operations exten= sion - manual starting from commit 95cf1f9 ("Add changes requested by Ved - during signoff") + defined in the RISC-V Integer Conditional (Zicond) operations extension + manual starting from commit 95cf1f9 ("Add changes requested by Ved + during signoff") =20 * :c:macro:`RISCV_HWPROBE_EXT_ZIHINTPAUSE`: The Zihintpause extension is - supported as defined in the RISC-V ISA manual starting from commit - d8ab5c78c207 ("Zihintpause is ratified"). + supported as defined in the RISC-V ISA manual starting from commit + d8ab5c78c207 ("Zihintpause is ratified"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZIHPM`: The Zihpm extension version 2.0 - is supported as defined in the RISC-V ISA manual. + is supported as defined in the RISC-V ISA manual. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVE32X`: The Vector sub-extension Zve32x is supported, as defined by version 1.0 of the RISC-V Vector extension ma= nual. @@ -214,84 +214,84 @@ The following keys are defined: supported, as defined by version 1.0 of the RISC-V Vector extension ma= nual. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZIMOP`: The Zimop May-Be-Operations extens= ion is - supported as defined in the RISC-V ISA manual starting from commit - 58220614a5f ("Zimop is ratified/1.0"). + supported as defined in the RISC-V ISA manual starting from commit + 58220614a5f ("Zimop is ratified/1.0"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZCA`: The Zca extension part of Zc* standa= rd - extensions for code size reduction, as ratified in commit 8be3419c1= c0 - ("Zcf doesn't exist on RV64 as it contains no instructions") of - riscv-code-size-reduction. + extensions for code size reduction, as ratified in commit 8be3419c1c0 + ("Zcf doesn't exist on RV64 as it contains no instructions") of + riscv-code-size-reduction. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZCB`: The Zcb extension part of Zc* standa= rd - extensions for code size reduction, as ratified in commit 8be3419c1= c0 - ("Zcf doesn't exist on RV64 as it contains no instructions") of - riscv-code-size-reduction. + extensions for code size reduction, as ratified in commit 8be3419c1c0 + ("Zcf doesn't exist on RV64 as it contains no instructions") of + riscv-code-size-reduction. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZCD`: The Zcd extension part of Zc* standa= rd - extensions for code size reduction, as ratified in commit 8be3419c1= c0 - ("Zcf doesn't exist on RV64 as it contains no instructions") of - riscv-code-size-reduction. + extensions for code size reduction, as ratified in commit 8be3419c1c0 + ("Zcf doesn't exist on RV64 as it contains no instructions") of + riscv-code-size-reduction. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZCF`: The Zcf extension part of Zc* standa= rd - extensions for code size reduction, as ratified in commit 8be3419c1= c0 - ("Zcf doesn't exist on RV64 as it contains no instructions") of - riscv-code-size-reduction. + extensions for code size reduction, as ratified in commit 8be3419c1c0 + ("Zcf doesn't exist on RV64 as it contains no instructions") of + riscv-code-size-reduction. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZCMOP`: The Zcmop May-Be-Operations extens= ion is - supported as defined in the RISC-V ISA manual starting from commit - c732a4f39a4 ("Zcmop is ratified/1.0"). + supported as defined in the RISC-V ISA manual starting from commit + c732a4f39a4 ("Zcmop is ratified/1.0"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZAWRS`: The Zawrs extension is supported as - ratified in commit 98918c844281 ("Merge pull request #1217 from - riscv/zawrs") of riscv-isa-manual. + ratified in commit 98918c844281 ("Merge pull request #1217 from + riscv/zawrs") of riscv-isa-manual. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZAAMO`: The Zaamo extension is supported as - defined in the in the RISC-V ISA manual starting from commit e87412= e621f1 - ("integrate Zaamo and Zalrsc text (#1304)"). + defined in the in the RISC-V ISA manual starting from commit e87412e62= 1f1 + ("integrate Zaamo and Zalrsc text (#1304)"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZALASR`: The Zalasr extension is supported= as - frozen at commit 194f0094 ("Version 0.9 for freeze") of riscv-zalas= r. + frozen at commit 194f0094 ("Version 0.9 for freeze") of riscv-zalasr. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZALRSC`: The Zalrsc extension is supported= as - defined in the in the RISC-V ISA manual starting from commit e87412= e621f1 - ("integrate Zaamo and Zalrsc text (#1304)"). + defined in the in the RISC-V ISA manual starting from commit e87412e62= 1f1 + ("integrate Zaamo and Zalrsc text (#1304)"). =20 * :c:macro:`RISCV_HWPROBE_EXT_SUPM`: The Supm extension is supported as - defined in version 1.0 of the RISC-V Pointer Masking extensions. + defined in version 1.0 of the RISC-V Pointer Masking extensions. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZFBFMIN`: The Zfbfmin extension is support= ed as - defined in the RISC-V ISA manual starting from commit 4dc23d6229de - ("Added Chapter title to BF16"). + defined in the RISC-V ISA manual starting from commit 4dc23d6229de + ("Added Chapter title to BF16"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVFBFMIN`: The Zvfbfmin extension is suppo= rted as - defined in the RISC-V ISA manual starting from commit 4dc23d6229de - ("Added Chapter title to BF16"). + defined in the RISC-V ISA manual starting from commit 4dc23d6229de + ("Added Chapter title to BF16"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZVFBFWMA`: The Zvfbfwma extension is suppo= rted as - defined in the RISC-V ISA manual starting from commit 4dc23d6229de - ("Added Chapter title to BF16"). + defined in the RISC-V ISA manual starting from commit 4dc23d6229de + ("Added Chapter title to BF16"). =20 * :c:macro:`RISCV_HWPROBE_EXT_ZICBOM`: The Zicbom extension is supported= , as - ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMO= s. + ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZABHA`: The Zabha extension is supported as - ratified in commit 49f49c842ff9 ("Update to Rafified state") of - riscv-zabha. + ratified in commit 49f49c842ff9 ("Update to Rafified state") of + riscv-zabha. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZICBOP`: The Zicbop extension is supported= , as - ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMO= s. + ratified in commit 3dd606f ("Create cmobase-v1.0.pdf") of riscv-CMOs. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZILSD`: The Zilsd extension is supported as - defined in the RISC-V ISA manual starting from commit f88abf1 ("Int= egrating - load/store pair for RV32 with the main manual") of the riscv-isa-ma= nual. + defined in the RISC-V ISA manual starting from commit f88abf1 ("Integr= ating + load/store pair for RV32 with the main manual") of the riscv-isa-manua= l. =20 * :c:macro:`RISCV_HWPROBE_EXT_ZCLSD`: The Zclsd extension is supported as - defined in the RISC-V ISA manual starting from commit f88abf1 ("Int= egrating - load/store pair for RV32 with the main manual") of the riscv-isa-ma= nual. + defined in the RISC-V ISA manual starting from commit f88abf1 ("Integr= ating + load/store pair for RV32 with the main manual") of the riscv-isa-manua= l. =20 * :c:macro:`RISCV_HWPROBE_KEY_CPUPERF_0`: Deprecated. Returns similar val= ues to - :c:macro:`RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF`, but the key was - mistakenly classified as a bitmask rather than a value. + :c:macro:`RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF`, but the key was + mistakenly classified as a bitmask rather than a value. =20 * :c:macro:`RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF`: An enum value descr= ibing the performance of misaligned scalar native word accesses on the selecte= d set @@ -326,7 +326,7 @@ The following keys are defined: * :c:macro:`RISCV_HWPROBE_KEY_TIME_CSR_FREQ`: Frequency (in Hz) of `time C= SR`. =20 * :c:macro:`RISCV_HWPROBE_KEY_MISALIGNED_VECTOR_PERF`: An enum value descr= ibing the - performance of misaligned vector accesses on the selected set of proc= essors. + performance of misaligned vector accesses on the selected set of process= ors. =20 * :c:macro:`RISCV_HWPROBE_MISALIGNED_VECTOR_UNKNOWN`: The performance of= misaligned vector accesses is unknown. @@ -348,7 +348,7 @@ The following keys are defined: * MIPS =20 * :c:macro:`RISCV_HWPROBE_VENDOR_EXT_XMIPSEXECTL`: The xmipsexectl ven= dor - extension is supported in the MIPS ISA extensions spec. + extension is supported in the MIPS ISA extensions spec. =20 * :c:macro:`RISCV_HWPROBE_KEY_VENDOR_EXT_THEAD_0`: A bitmask containing the thead vendor extensions that are compatible with the @@ -357,8 +357,8 @@ The following keys are defined: * T-HEAD =20 * :c:macro:`RISCV_HWPROBE_VENDOR_EXT_XTHEADVECTOR`: The xtheadvector v= endor - extension is supported in the T-Head ISA extensions spec starting = from - commit a18c801634 ("Add T-Head VECTOR vendor extension. "). + extension is supported in the T-Head ISA extensions spec starting fr= om + commit a18c801634 ("Add T-Head VECTOR vendor extension. "). =20 * :c:macro:`RISCV_HWPROBE_KEY_ZICBOM_BLOCK_SIZE`: An unsigned int which represents the size of the Zicbom block in bytes. @@ -370,20 +370,20 @@ The following keys are defined: * SIFIVE =20 * :c:macro:`RISCV_HWPROBE_VENDOR_EXT_XSFVQMACCDOD`: The Xsfqmaccdod ve= ndor - extension is supported in version 1.1 of SiFive Int8 Matrix Multip= lication - Extensions Specification. + extension is supported in version 1.1 of SiFive Int8 Matrix Multipli= cation + Extensions Specification. =20 * :c:macro:`RISCV_HWPROBE_VENDOR_EXT_XSFVQMACCQOQ`: The Xsfqmaccqoq ve= ndor - extension is supported in version 1.1 of SiFive Int8 Matrix Multip= lication - Instruction Extensions Specification. + extension is supported in version 1.1 of SiFive Int8 Matrix Multipli= cation + Instruction Extensions Specification. =20 * :c:macro:`RISCV_HWPROBE_VENDOR_EXT_XSFVFNRCLIPXFQF`: The Xsfvfnrclip= xfqf - vendor extension is supported in version 1.0 of SiFive FP32-to-int= 8 Ranged - Clip Instructions Extensions Specification. + vendor extension is supported in version 1.0 of SiFive FP32-to-int8 = Ranged + Clip Instructions Extensions Specification. =20 * :c:macro:`RISCV_HWPROBE_VENDOR_EXT_XSFVFWMACCQQQ`: The Xsfvfwmaccqqq - vendor extension is supported in version 1.0 of Matrix Multiply Ac= cumulate - Instruction Extensions Specification. + vendor extension is supported in version 1.0 of Matrix Multiply Accu= mulate + Instruction Extensions Specification. =20 * :c:macro:`RISCV_HWPROBE_KEY_ZICBOP_BLOCK_SIZE`: An unsigned int which represents the size of the Zicbop block in bytes. --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f176.google.com (mail-pl1-f176.google.com [209.85.214.176]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 561623CF04F for ; Tue, 2 Jun 2026 23:13:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.176 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780441991; cv=none; b=b2U2uwcX7FBPCr7HkWFFNz0WpZHkN+fI0i8vPLT46uj9/iUHvICKpQzjuMnscQwnHYpmF49WCqy+0kVeFk4+f8UuCCkP6tqRpSfRqy9K4WcEVIYkHjczdfCHiBbVMtJOLxNn0N5fcIWaAp/tAVwFRWHVO9iFvsvhKO8PfUQtC7s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780441991; c=relaxed/simple; bh=rqTVVVJCoPVd96u+yhPMJffItnZ+P3H94JKRDHrTXaQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Lr8HKhQSO2RRpi6RNvkIGPsP/5ivWZCSA+AcllzxwrtfYw4o7dQh/Y0L30VmfkEp8Lzu0A9glKnMDIokY6mLMN5//ogYIUmT+E5YwSACnhK216GplYroH6yP18Kf3GuKbbVfjLJFI+B1Qa/qczO/3tbTGJV70+HksrJgfygLPT4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TOR2x72e; arc=none smtp.client-ip=209.85.214.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TOR2x72e" Received: by mail-pl1-f176.google.com with SMTP id d9443c01a7336-2bf22d29dabso36419825ad.2 for ; Tue, 02 Jun 2026 16:13:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780441989; x=1781046789; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=hHFIY+oFxYCby8roDhyuYsQin7Ul79zLqHihVHlWSyo=; b=TOR2x72e4nZ/3IXqxyDzSK70BSJlbKMDi+j8bZsL0QcBFP3K6IdSD6wP5enKJDNO/q aYeuHTLhWFNVL5DgV4Jipm827iiZpKGr6OZ9oV9whmVMBsVdMSrJCP3y4zYupQhUNc4x wrCqjVAwpNMoQaAQ79jDEupyEmBsRrxeSDDHrqlC/3HIgvkjR9IGhpJRvCvxtiu/nhMe ZeG43WzvOoFfb/xlYxDHWa5qleUioVAEDIYGrSCcjHDwW9lLBYMvuoF4GicdvwzcOXUb NQM5wO3lDogTEi4LJ6hjhHXLor+WSQd5dApNuTYmtXb0m/jzoiQCu3uXQ1uSyWbFthuR qdgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780441989; x=1781046789; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=hHFIY+oFxYCby8roDhyuYsQin7Ul79zLqHihVHlWSyo=; b=bDNMlioJz36UnxgzPrgfCtNT/S29J0qV30KHq25Rcz7wSulu9mJPjuV6JycaSnXuAA V8i5N7OEVxvR7xNOsdi7y6wZjVgsWxrOTDYgBF5Rhhu1TGsGzJLOgcyxwldxWn6B3dXj /p3eQKlRcDFOyDZtnhruq6Vf+6zyIDqvc++Y4GuMnCHf8nek0OdI4TsupZU945Q6u221 pUwU7GMddpteFC7/Id2Dnb8eCgiinUFR6zLIKodh9IS4+67lTKPP4jQkvLIxnULff2nf NPAnNu5xsJuNfaXtgnMU27bsHi1b++zVPCtHGwBVdhZA5BPdgBOXmzVyGQt9Kl/hCEOY 5urA== X-Forwarded-Encrypted: i=1; AFNElJ/6gsSkjnPX7ZDSzDTABl197bQ7+kKQD96jkqGGGNfOZbIz89Jq7Qh+KDnwPPgo6iQ4Q6CS4t8g92zCgJ4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw5Hcmwo/gsiGkVoCVJ979gtrtHIKxRcHBG3EmslnOyFfA6iyqA ZL3Fn8kHuut9XaNNbveryxo52kXCIWDiieP/F0qT+Eyj3XNF70UtqMYg X-Gm-Gg: Acq92OHejcaAk95pWKKJ92vCv/i4oZ7IqSqNvJxFQuxZx8Tjvt6LMHWR3HQ5wHUQ9S/ xPJ0Ll2J1VzTBodK3HOUxe7VmGjPF5U5KoIyplJlYlvf5gp8P6if0IE4Sdu5kGy3J3HHgt4oFJS q6XYxKVdl91w6vfi8V84qtDvrJeTKBGNS1GJnXT4wu8HixbmJa1k/ohZlouYkKnoxj5F6nlCtZX oUQ12oaVaJDnvK4y18S3eJTupjVO5odj+emC5mOccRP3sDgkdoO7jdJAIpNmbYE9Jc1pjH00rJm mGbm4xE/7MI3Yv6aijBpjILaYCRusDUkhmxk1ymHuBY3v/todD41Was1LHd18jEe+gzg7WBUdLY fDuRHmEdPXKABeeFp2NOPkhbgs3XFDe1RmRS+LaTjD+cFbb29KgscuvZMiB25qfYxQ9ZIug5ehe dQSLekNlp4+Wsd56U+MnE6 X-Received: by 2002:a17:902:c950:b0:2bf:3074:34dc with SMTP id d9443c01a7336-2c163a59aa1mr7469645ad.14.1780441989552; Tue, 02 Jun 2026 16:13:09 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.12.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:13:09 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:11:57 -0400 Subject: [PATCH v3 02/15] riscv: hwprobe.rst: Document EXT_ZICFISS and EXT_ZICFILP Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-2-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2083; i=docular.xu@gmail.com; h=from:subject:message-id; bh=rqTVVVJCoPVd96u+yhPMJffItnZ+P3H94JKRDHrTXaQ=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHmbj4O13uthymy6JvU+rEL4dKfZMr+tUpU9DpyHf0 ydWIhM6SlkYxLgYZMUUWQ4fbcne+son2vc55w+YOaxMIEMYuDgFYCI1PQx/eHnlc18+d3FcUZbm v82hY/8q8W0sHw4vvh+j1hzCevjDDkaG66/Wxs9YyBsrs37Fy717DyUeav92P6Wk2bE7UWuB6nZ dLgA= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE Commit 30c3099036a9 ("riscv/hwprobe: add zicfilp / zicfiss enumeration in hwprobe") added RISCV_HWPROBE_EXT_ZICFISS and RISCV_HWPROBE_EXT_ZICFILP, but did not add matching entries to Documentation/arch/riscv/hwprobe.rst. Add them now. Fixes: 30c3099036a9 ("riscv/hwprobe: add zicfilp / zicfiss enumeration in h= wprobe") Signed-off-by: Guodong Xu Reviewed-by: Andrew Jones --- v3: - Also document RISCV_HWPROBE_EXT_ZICFILP (bit 63 of IMA_EXT_0), the sibling enumeration added by the same commit (Andrew). v2: New patch. --- Documentation/arch/riscv/hwprobe.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Documentation/arch/riscv/hwprobe.rst b/Documentation/arch/risc= v/hwprobe.rst index a09a8f16bd16f..3cedaaa53f331 100644 --- a/Documentation/arch/riscv/hwprobe.rst +++ b/Documentation/arch/riscv/hwprobe.rst @@ -289,6 +289,11 @@ The following keys are defined: defined in the RISC-V ISA manual starting from commit f88abf1 ("Integr= ating load/store pair for RV32 with the main manual") of the riscv-isa-manua= l. =20 + * :c:macro:`RISCV_HWPROBE_EXT_ZICFILP`: The Zicfilp extension is support= ed, + as defined in version 1.0 of the RISC-V Control-flow Integrity (CFI) + extensions specification, ratified in commit ff03d8485a04 ("Update to + ratified state") of riscv-cfi. + * :c:macro:`RISCV_HWPROBE_KEY_CPUPERF_0`: Deprecated. Returns similar val= ues to :c:macro:`RISCV_HWPROBE_KEY_MISALIGNED_SCALAR_PERF`, but the key was mistakenly classified as a bitmask rather than a value. @@ -391,3 +396,8 @@ The following keys are defined: * :c:macro:`RISCV_HWPROBE_KEY_IMA_EXT_1`: A bitmask containing additional extensions that are compatible with the :c:macro:`RISCV_HWPROBE_BASE_BEHAVIOR_IMA`: base system behavior. + + * :c:macro:`RISCV_HWPROBE_EXT_ZICFISS`: The Zicfiss extension is support= ed, + as defined in version 1.0 of the RISC-V Control-flow Integrity (CFI) + extensions specification, ratified in commit ff03d8485a04 ("Update to + ratified state") of riscv-cfi. --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5AC813CDBD7 for ; Tue, 2 Jun 2026 23:13:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442003; cv=none; b=pq39q0IHdt5Hviy5CroUs3o6ExlUNcKX3nI/tbFgqt+tNJ97aIWbxcTF5oeSIuJkS1ufK71SUogSgz9Hu4bYseJEduvpO3VjKdhrLHpnMh49I0AD+sGZr4qn8In2pCUAblmIhrNmc0p+15FSpR7ZCCsQQ6IdQP/aFSwuihDYbeE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442003; c=relaxed/simple; bh=w5hL82QQ++PqDm6UbHYyjJthETVpbKd8rNq8XZCKaUE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qzksofWSTIHCcI95qA6ySQu3YM+eja9zj+FiSGuK+83FI3jc8O9iRjEFACugX2cOfaj/01KA0UQZRgFqfHkH/RtsAW7Ij3onkTmTqh+K5mj0R2uQFM1dJd2pr0NcUxXPLCuXGOw3z8rUxVUkIFV1LotDC7b2e+pmpQy0sVD7xJs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Nb1q7pmk; arc=none smtp.client-ip=209.85.215.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Nb1q7pmk" Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-c85c9e8b7e4so672918a12.1 for ; Tue, 02 Jun 2026 16:13:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442001; x=1781046801; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=rZlQE/SX+m4OYa5W7MwrfjYgIcakLhXqjfGv9ucXNCI=; b=Nb1q7pmkXupubQGEKRGJB2yzfDSJWm3D3hMQqzmPGHyKDmJxabJdEesVzAdOsKtIct HtQ88s54gIdn27ol88oMj877SVkU7xNYY1MqhrcfXtLeTRTy/pTFhJ5cUtO0bd91JyXX IAZZ4numG/0cOWipjI2WiUNuYxQfMuNg7RgDIBSpdgIkuGH7IIytRHTgnwZvJiHJypTz 52QHeI/0KYSpDQLQDS1mPvPd1eE6LO4yHKYm/ZxwBbdED6rv2Qq1XE4/67ulGFuawceP IDyiIRXw2BYEwSeW7rP5P7SkWIE1npDpakDx84QDggfxkqNmnzlxW2sY9fErA2M7oU10 0gOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442001; x=1781046801; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rZlQE/SX+m4OYa5W7MwrfjYgIcakLhXqjfGv9ucXNCI=; b=tG1lSKWK+LY8wl3sBl+Qyi+iwL9BtLv+OfeuxM4Kap7iA6mLx0Wm8aFpopJCoKNurW wW/WEly99LFSvm7NBWX6jtNXh4ii7ftr0e3SNuh9udICa5wFt6UJGOMwwhQ9/xaG5IX+ E/knbUXs3MiJ22OtQ8qY0O8UlyrOR2TR4nAHh91V9QChEvGx6PKBxgLpgnbthUC5sOXX TN7HFXRwo+eEMrIWvlLMj07GfZlK/nT0/khL2i2Sb1P3j2m2fWQVCt/hHRb5HSeG2cvz lJvsp3+6+G8Fiilk0cXpD0VE4JZvS/Y7lgQwXoexH8QrTLl8AW4A1el1k440dfSTPB7u fuJQ== X-Forwarded-Encrypted: i=1; AFNElJ8C0ATlObOANBLVaq73L9x0rWn44EFxthyI/tbv1JcOaxBFJvcSkqZTfPOgyW2Wf4T2xtzck3qqqreXK/k=@vger.kernel.org X-Gm-Message-State: AOJu0YwegpCh3jEE1u1Wh2+Jcgmgg2O2oqRPvJEmPAVMCRizZxc4szww E4BZFOTxSPj3jiTjKjeRByybwYGLr6TcvmIJuZbkhHYIxQpfX+JFi/At X-Gm-Gg: Acq92OERQ8ZpDMgNUJlhdwQz1bbHM76rJO37S/CIXnrtn6a23uxI5s5YpdhnXxq1Csn Seq498DJL7FNeebOKg6sPFmOBQ28lQzB0lFv9h97Lrykt3Boc9Zy507asYnuT83Bhy3Yz88wnct 5P8Njor+4fARNYABkxHhnkXnujNr+//S6qdUv4h5vG4yetGXY9H4zMlKjHb1ThNQVgqteEwLe0w uCieG8u91p+uk8RhRobkHc+xm4h4ZbuHAg5GoI46nKUW6muSd+OPtiVp/RM/0VdaglgXZFM8to8 u7gMnQ7QAT+x4gxujMMab5b5wS8MfbA4Wa4P4fjWXWb45r35eRorRy8G6yqkf7wvDS2cx3QCnD0 Yt5Pcgri9cJJldJS4FjEjXPgevMqW86xJxGYi5tIGTCT0xrMbfesV7RS/Ki2XDTNXONt1Vp0GmE S3+W4k3Q/PUA== X-Received: by 2002:a17:90b:5289:b0:36a:7c8f:1423 with SMTP id 98e67ed59e1d1-36e30e14912mr724051a91.9.1780442000567; Tue, 02 Jun 2026 16:13:20 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.13.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:13:20 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:11:58 -0400 Subject: [PATCH v3 03/15] riscv: Standardize extension capitalization Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-3-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu , Charlie Jenkins X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=16637; i=docular.xu@gmail.com; h=from:subject:message-id; bh=Lvrl9MDwIWnyzBpUSrpsEPeOLpHJ//EeSWwI/wa1+uE=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHuba5GmzytdxTpaL2f0rx0SDUUxOa7kv6/9bc+9et vTwm3Kro5SFQYyLQVZMkeXw0Zbsra98on2fc/6AmcPKBDKEgYtTACaybTPDb5arKzymyso5X5v+ lcniQEOqsGnNtjylz0WZ5zd1XTDnuM3I0GA1aS3LZqU70/bUXFU02Hps4fnF0Sd/iU2e+2xHOrM iHwcA X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE From: Charlie Jenkins The base extensions are often lowercase and were written as lowercase in hwcap, but other references to these extensions in the kernel are uppercase. Standardize the case to make it easier to handle macro expansion. Signed-off-by: Charlie Jenkins [Apply KVM_ISA_EXT_ARR(), fixup all KVM use.] Signed-off-by: Andrew Jones Signed-off-by: Guodong Xu Acked-by: Anup Patel Reviewed-by: Anup Patel --- v3: - Collected Anup's Acked-by and Reviewed-by. - Rebased onto v7.1-rc6: two more occurances between -rc2 and -rc6: 1). isa2hwcap[] indices added by commit 41337097f2823 2). the T-Head "v" workaround's clear_bit() added by commit d272b8d2dd132 v2: - Rebased onto v7.1-rc2. - KVM_ISA_EXT_ARR() consolidation moved to its new upstream location (kvm/isa.c); host-side checks now use kvm_riscv_isa_check_host(). --- arch/riscv/include/asm/hwcap.h | 18 ++++++++-------- arch/riscv/include/asm/switch_to.h | 4 ++-- arch/riscv/kernel/cpufeature.c | 44 +++++++++++++++++++---------------= ---- arch/riscv/kernel/sys_hwprobe.c | 4 ++-- arch/riscv/kvm/isa.c | 16 +++++++------- arch/riscv/kvm/main.c | 2 +- arch/riscv/kvm/vcpu_fp.c | 20 ++++++++--------- arch/riscv/kvm/vcpu_onereg.c | 6 +++--- arch/riscv/kvm/vcpu_vector.c | 10 ++++----- 9 files changed, 62 insertions(+), 62 deletions(-) diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index 7ef8e5f55c8dc..44bf8c7d8acc5 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -10,15 +10,15 @@ =20 #include =20 -#define RISCV_ISA_EXT_a ('a' - 'a') -#define RISCV_ISA_EXT_c ('c' - 'a') -#define RISCV_ISA_EXT_d ('d' - 'a') -#define RISCV_ISA_EXT_f ('f' - 'a') -#define RISCV_ISA_EXT_h ('h' - 'a') -#define RISCV_ISA_EXT_i ('i' - 'a') -#define RISCV_ISA_EXT_m ('m' - 'a') -#define RISCV_ISA_EXT_q ('q' - 'a') -#define RISCV_ISA_EXT_v ('v' - 'a') +#define RISCV_ISA_EXT_A ('a' - 'a') +#define RISCV_ISA_EXT_C ('c' - 'a') +#define RISCV_ISA_EXT_D ('d' - 'a') +#define RISCV_ISA_EXT_F ('f' - 'a') +#define RISCV_ISA_EXT_H ('h' - 'a') +#define RISCV_ISA_EXT_I ('i' - 'a') +#define RISCV_ISA_EXT_M ('m' - 'a') +#define RISCV_ISA_EXT_Q ('q' - 'a') +#define RISCV_ISA_EXT_V ('v' - 'a') =20 /* * These macros represent the logical IDs of each multi-letter RISC-V ISA diff --git a/arch/riscv/include/asm/switch_to.h b/arch/riscv/include/asm/sw= itch_to.h index 0e71eb82f920c..ff35a4d04f85a 100644 --- a/arch/riscv/include/asm/switch_to.h +++ b/arch/riscv/include/asm/switch_to.h @@ -60,8 +60,8 @@ static inline void __switch_to_fpu(struct task_struct *pr= ev, =20 static __always_inline bool has_fpu(void) { - return riscv_has_extension_likely(RISCV_ISA_EXT_f) || - riscv_has_extension_likely(RISCV_ISA_EXT_d); + return riscv_has_extension_likely(RISCV_ISA_EXT_F) || + riscv_has_extension_likely(RISCV_ISA_EXT_D); } #else static __always_inline bool has_fpu(void) { return false; } diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index f46aa5602d74d..686dde3ce3b98 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -84,7 +84,7 @@ EXPORT_SYMBOL_GPL(__riscv_isa_extension_available); static int riscv_ext_f_depends(const struct riscv_isa_ext_data *data, const unsigned long *isa_bitmap) { - if (__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_f)) + if (__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_F)) return 0; =20 return -EPROBE_DEFER; @@ -146,7 +146,7 @@ static int riscv_ext_f_validate(const struct riscv_isa_= ext_data *data, * Due to extension ordering, d is checked before f, so no deferral * is required. */ - if (!__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_d)) { + if (!__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_D)) { pr_warn_once("This kernel does not support systems with F but not D\n"); return -EINVAL; } @@ -189,7 +189,7 @@ static int riscv_ext_vector_float_validate(const struct= riscv_isa_ext_data *data * Since this function validates vector only, and v/Zve* are probed * after f/d, there's no need for a deferral here. */ - if (!__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_d)) + if (!__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_D)) return -EINVAL; =20 return 0; @@ -224,7 +224,7 @@ static int riscv_ext_zcd_validate(const struct riscv_is= a_ext_data *data, const unsigned long *isa_bitmap) { if (__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_ZCA) && - __riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_d)) + __riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_D)) return 0; =20 return -EPROBE_DEFER; @@ -237,7 +237,7 @@ static int riscv_ext_zcf_validate(const struct riscv_is= a_ext_data *data, return -EINVAL; =20 if (__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_ZCA) && - __riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_f)) + __riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_F)) return 0; =20 return -EPROBE_DEFER; @@ -490,15 +490,15 @@ static const unsigned int riscv_c_exts[] =3D { * New entries to this struct should follow the ordering rules described a= bove. */ const struct riscv_isa_ext_data riscv_isa_ext[] =3D { - __RISCV_ISA_EXT_DATA(i, RISCV_ISA_EXT_i), - __RISCV_ISA_EXT_DATA(m, RISCV_ISA_EXT_m), - __RISCV_ISA_EXT_SUPERSET(a, RISCV_ISA_EXT_a, riscv_a_exts), - __RISCV_ISA_EXT_DATA_VALIDATE(f, RISCV_ISA_EXT_f, riscv_ext_f_validate), - __RISCV_ISA_EXT_DATA_VALIDATE(d, RISCV_ISA_EXT_d, riscv_ext_d_validate), - __RISCV_ISA_EXT_DATA(q, RISCV_ISA_EXT_q), - __RISCV_ISA_EXT_SUPERSET(c, RISCV_ISA_EXT_c, riscv_c_exts), - __RISCV_ISA_EXT_SUPERSET_VALIDATE(v, RISCV_ISA_EXT_v, riscv_v_exts, riscv= _ext_vector_float_validate), - __RISCV_ISA_EXT_DATA(h, RISCV_ISA_EXT_h), + __RISCV_ISA_EXT_DATA(i, RISCV_ISA_EXT_I), + __RISCV_ISA_EXT_DATA(m, RISCV_ISA_EXT_M), + __RISCV_ISA_EXT_SUPERSET(a, RISCV_ISA_EXT_A, riscv_a_exts), + __RISCV_ISA_EXT_DATA_VALIDATE(f, RISCV_ISA_EXT_F, riscv_ext_f_validate), + __RISCV_ISA_EXT_DATA_VALIDATE(d, RISCV_ISA_EXT_D, riscv_ext_d_validate), + __RISCV_ISA_EXT_DATA(q, RISCV_ISA_EXT_Q), + __RISCV_ISA_EXT_SUPERSET(c, RISCV_ISA_EXT_C, riscv_c_exts), + __RISCV_ISA_EXT_SUPERSET_VALIDATE(v, RISCV_ISA_EXT_V, riscv_v_exts, riscv= _ext_vector_float_validate), + __RISCV_ISA_EXT_DATA(h, RISCV_ISA_EXT_H), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicbom, RISCV_ISA_EXT_ZICBOM, riscv_xli= nuxenvcfg_exts, riscv_ext_zicbom_validate), __RISCV_ISA_EXT_DATA_VALIDATE(zicbop, RISCV_ISA_EXT_ZICBOP, riscv_ext_zic= bop_validate), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicboz, RISCV_ISA_EXT_ZICBOZ, riscv_xli= nuxenvcfg_exts, riscv_ext_zicboz_validate), @@ -897,7 +897,7 @@ static void __init riscv_fill_hwcap_from_isa_string(uns= igned long *isa2hwcap) * marchid. */ if (acpi_disabled && boot_vendorid =3D=3D THEAD_VENDOR_ID && boot_archid= =3D=3D 0x0) - clear_bit(RISCV_ISA_EXT_v, source_isa); + clear_bit(RISCV_ISA_EXT_V, source_isa); =20 riscv_resolve_isa(source_isa, isainfo->isa, &this_hwcap, isa2hwcap); =20 @@ -1105,13 +1105,13 @@ void __init riscv_fill_hwcap(void) unsigned long isa2hwcap[RISCV_ISA_EXT_BASE] =3D {0}; int i, j; =20 - isa2hwcap[RISCV_ISA_EXT_i] =3D COMPAT_HWCAP_ISA_I; - isa2hwcap[RISCV_ISA_EXT_m] =3D COMPAT_HWCAP_ISA_M; - isa2hwcap[RISCV_ISA_EXT_a] =3D COMPAT_HWCAP_ISA_A; - isa2hwcap[RISCV_ISA_EXT_f] =3D COMPAT_HWCAP_ISA_F; - isa2hwcap[RISCV_ISA_EXT_d] =3D COMPAT_HWCAP_ISA_D; - isa2hwcap[RISCV_ISA_EXT_c] =3D COMPAT_HWCAP_ISA_C; - isa2hwcap[RISCV_ISA_EXT_v] =3D COMPAT_HWCAP_ISA_V; + isa2hwcap[RISCV_ISA_EXT_I] =3D COMPAT_HWCAP_ISA_I; + isa2hwcap[RISCV_ISA_EXT_M] =3D COMPAT_HWCAP_ISA_M; + isa2hwcap[RISCV_ISA_EXT_A] =3D COMPAT_HWCAP_ISA_A; + isa2hwcap[RISCV_ISA_EXT_F] =3D COMPAT_HWCAP_ISA_F; + isa2hwcap[RISCV_ISA_EXT_D] =3D COMPAT_HWCAP_ISA_D; + isa2hwcap[RISCV_ISA_EXT_C] =3D COMPAT_HWCAP_ISA_C; + isa2hwcap[RISCV_ISA_EXT_V] =3D COMPAT_HWCAP_ISA_V; =20 if (!acpi_disabled) { riscv_fill_hwcap_from_isa_string(isa2hwcap); diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprob= e.c index 1659d31fd288f..f8f68ba781b45 100644 --- a/arch/riscv/kernel/sys_hwprobe.c +++ b/arch/riscv/kernel/sys_hwprobe.c @@ -88,10 +88,10 @@ static void hwprobe_isa_ext0(struct riscv_hwprobe *pair, if (has_fpu()) pair->value |=3D RISCV_HWPROBE_IMA_FD; =20 - if (riscv_isa_extension_available(NULL, c)) + if (riscv_isa_extension_available(NULL, C)) pair->value |=3D RISCV_HWPROBE_IMA_C; =20 - if (has_vector() && riscv_isa_extension_available(NULL, v)) + if (has_vector() && riscv_isa_extension_available(NULL, V)) pair->value |=3D RISCV_HWPROBE_IMA_V; =20 /* diff --git a/arch/riscv/kvm/isa.c b/arch/riscv/kvm/isa.c index 1132d909cc25c..94077117d1136 100644 --- a/arch/riscv/kvm/isa.c +++ b/arch/riscv/kvm/isa.c @@ -17,14 +17,14 @@ /* Mapping between KVM ISA Extension ID & guest ISA extension ID */ static const unsigned long kvm_isa_ext_arr[] =3D { /* Single letter extensions (alphabetically sorted) */ - [KVM_RISCV_ISA_EXT_A] =3D RISCV_ISA_EXT_a, - [KVM_RISCV_ISA_EXT_C] =3D RISCV_ISA_EXT_c, - [KVM_RISCV_ISA_EXT_D] =3D RISCV_ISA_EXT_d, - [KVM_RISCV_ISA_EXT_F] =3D RISCV_ISA_EXT_f, - [KVM_RISCV_ISA_EXT_H] =3D RISCV_ISA_EXT_h, - [KVM_RISCV_ISA_EXT_I] =3D RISCV_ISA_EXT_i, - [KVM_RISCV_ISA_EXT_M] =3D RISCV_ISA_EXT_m, - [KVM_RISCV_ISA_EXT_V] =3D RISCV_ISA_EXT_v, + KVM_ISA_EXT_ARR(A), + KVM_ISA_EXT_ARR(C), + KVM_ISA_EXT_ARR(D), + KVM_ISA_EXT_ARR(F), + KVM_ISA_EXT_ARR(H), + KVM_ISA_EXT_ARR(I), + KVM_ISA_EXT_ARR(M), + KVM_ISA_EXT_ARR(V), /* Multi letter extensions (alphabetically sorted) */ KVM_ISA_EXT_ARR(SMNPM), KVM_ISA_EXT_ARR(SMSTATEEN), diff --git a/arch/riscv/kvm/main.c b/arch/riscv/kvm/main.c index cb8a65273c1f0..70640701310c8 100644 --- a/arch/riscv/kvm/main.c +++ b/arch/riscv/kvm/main.c @@ -85,7 +85,7 @@ static int __init riscv_kvm_init(void) char slist[64]; const char *str; =20 - if (!riscv_isa_extension_available(NULL, h)) { + if (!riscv_isa_extension_available(NULL, H)) { kvm_info("hypervisor extension not available\n"); return -ENODEV; } diff --git a/arch/riscv/kvm/vcpu_fp.c b/arch/riscv/kvm/vcpu_fp.c index 6ad6df26a2fd4..bb11e6757d349 100644 --- a/arch/riscv/kvm/vcpu_fp.c +++ b/arch/riscv/kvm/vcpu_fp.c @@ -21,8 +21,8 @@ void kvm_riscv_vcpu_fp_reset(struct kvm_vcpu *vcpu) struct kvm_cpu_context *cntx =3D &vcpu->arch.guest_context; =20 cntx->sstatus &=3D ~SR_FS; - if (riscv_isa_extension_available(vcpu->arch.isa, f) || - riscv_isa_extension_available(vcpu->arch.isa, d)) + if (riscv_isa_extension_available(vcpu->arch.isa, F) || + riscv_isa_extension_available(vcpu->arch.isa, D)) cntx->sstatus |=3D SR_FS_INITIAL; else cntx->sstatus |=3D SR_FS_OFF; @@ -38,9 +38,9 @@ void kvm_riscv_vcpu_guest_fp_save(struct kvm_cpu_context = *cntx, const unsigned long *isa) { if ((cntx->sstatus & SR_FS) =3D=3D SR_FS_DIRTY) { - if (riscv_isa_extension_available(isa, d)) + if (riscv_isa_extension_available(isa, D)) __kvm_riscv_fp_d_save(cntx); - else if (riscv_isa_extension_available(isa, f)) + else if (riscv_isa_extension_available(isa, F)) __kvm_riscv_fp_f_save(cntx); kvm_riscv_vcpu_fp_clean(cntx); } @@ -50,9 +50,9 @@ void kvm_riscv_vcpu_guest_fp_restore(struct kvm_cpu_conte= xt *cntx, const unsigned long *isa) { if ((cntx->sstatus & SR_FS) !=3D SR_FS_OFF) { - if (riscv_isa_extension_available(isa, d)) + if (riscv_isa_extension_available(isa, D)) __kvm_riscv_fp_d_restore(cntx); - else if (riscv_isa_extension_available(isa, f)) + else if (riscv_isa_extension_available(isa, F)) __kvm_riscv_fp_f_restore(cntx); kvm_riscv_vcpu_fp_clean(cntx); } @@ -89,7 +89,7 @@ int kvm_riscv_vcpu_get_reg_fp(struct kvm_vcpu *vcpu, void *reg_val; =20 if ((rtype =3D=3D KVM_REG_RISCV_FP_F) && - riscv_isa_extension_available(vcpu->arch.isa, f)) { + riscv_isa_extension_available(vcpu->arch.isa, F)) { if (KVM_REG_SIZE(reg->id) !=3D sizeof(u32)) return -EINVAL; if (reg_num =3D=3D KVM_REG_RISCV_FP_F_REG(fcsr)) @@ -102,7 +102,7 @@ int kvm_riscv_vcpu_get_reg_fp(struct kvm_vcpu *vcpu, } else return -ENOENT; } else if ((rtype =3D=3D KVM_REG_RISCV_FP_D) && - riscv_isa_extension_available(vcpu->arch.isa, d)) { + riscv_isa_extension_available(vcpu->arch.isa, D)) { if (reg_num =3D=3D KVM_REG_RISCV_FP_D_REG(fcsr)) { if (KVM_REG_SIZE(reg->id) !=3D sizeof(u32)) return -EINVAL; @@ -138,7 +138,7 @@ int kvm_riscv_vcpu_set_reg_fp(struct kvm_vcpu *vcpu, void *reg_val; =20 if ((rtype =3D=3D KVM_REG_RISCV_FP_F) && - riscv_isa_extension_available(vcpu->arch.isa, f)) { + riscv_isa_extension_available(vcpu->arch.isa, F)) { if (KVM_REG_SIZE(reg->id) !=3D sizeof(u32)) return -EINVAL; if (reg_num =3D=3D KVM_REG_RISCV_FP_F_REG(fcsr)) @@ -151,7 +151,7 @@ int kvm_riscv_vcpu_set_reg_fp(struct kvm_vcpu *vcpu, } else return -ENOENT; } else if ((rtype =3D=3D KVM_REG_RISCV_FP_D) && - riscv_isa_extension_available(vcpu->arch.isa, d)) { + riscv_isa_extension_available(vcpu->arch.isa, D)) { if (reg_num =3D=3D KVM_REG_RISCV_FP_D_REG(fcsr)) { if (KVM_REG_SIZE(reg->id) !=3D sizeof(u32)) return -EINVAL; diff --git a/arch/riscv/kvm/vcpu_onereg.c b/arch/riscv/kvm/vcpu_onereg.c index bb920e8923c93..5cc7ddd4aa276 100644 --- a/arch/riscv/kvm/vcpu_onereg.c +++ b/arch/riscv/kvm/vcpu_onereg.c @@ -770,7 +770,7 @@ static inline unsigned long num_fp_f_regs(const struct = kvm_vcpu *vcpu) { const struct kvm_cpu_context *cntx =3D &vcpu->arch.guest_context; =20 - if (riscv_isa_extension_available(vcpu->arch.isa, f)) + if (riscv_isa_extension_available(vcpu->arch.isa, F)) return sizeof(cntx->fp.f) / sizeof(u32); else return 0; @@ -799,7 +799,7 @@ static inline unsigned long num_fp_d_regs(const struct = kvm_vcpu *vcpu) { const struct kvm_cpu_context *cntx =3D &vcpu->arch.guest_context; =20 - if (riscv_isa_extension_available(vcpu->arch.isa, d)) + if (riscv_isa_extension_available(vcpu->arch.isa, D)) return sizeof(cntx->fp.d.f) / sizeof(u64) + 1; else return 0; @@ -878,7 +878,7 @@ static inline unsigned long num_sbi_regs(struct kvm_vcp= u *vcpu) =20 static inline unsigned long num_vector_regs(const struct kvm_vcpu *vcpu) { - if (!riscv_isa_extension_available(vcpu->arch.isa, v)) + if (!riscv_isa_extension_available(vcpu->arch.isa, V)) return 0; =20 /* vstart, vl, vtype, vcsr, vlenb and 32 vector regs */ diff --git a/arch/riscv/kvm/vcpu_vector.c b/arch/riscv/kvm/vcpu_vector.c index 62d2fb77bb9b9..f26108a4e601e 100644 --- a/arch/riscv/kvm/vcpu_vector.c +++ b/arch/riscv/kvm/vcpu_vector.c @@ -26,7 +26,7 @@ void kvm_riscv_vcpu_vector_reset(struct kvm_vcpu *vcpu) =20 cntx->vector.vlenb =3D riscv_v_vsize / 32; =20 - if (riscv_isa_extension_available(isa, v)) { + if (riscv_isa_extension_available(isa, V)) { cntx->sstatus |=3D SR_VS_INITIAL; WARN_ON(!cntx->vector.datap); memset(cntx->vector.datap, 0, riscv_v_vsize); @@ -45,7 +45,7 @@ void kvm_riscv_vcpu_guest_vector_save(struct kvm_cpu_cont= ext *cntx, unsigned long *isa) { if ((cntx->sstatus & SR_VS) =3D=3D SR_VS_DIRTY) { - if (riscv_isa_extension_available(isa, v)) + if (riscv_isa_extension_available(isa, V)) __kvm_riscv_vector_save(cntx); kvm_riscv_vcpu_vector_clean(cntx); } @@ -55,7 +55,7 @@ void kvm_riscv_vcpu_guest_vector_restore(struct kvm_cpu_c= ontext *cntx, unsigned long *isa) { if ((cntx->sstatus & SR_VS) !=3D SR_VS_OFF) { - if (riscv_isa_extension_available(isa, v)) + if (riscv_isa_extension_available(isa, V)) __kvm_riscv_vector_restore(cntx); kvm_riscv_vcpu_vector_clean(cntx); } @@ -154,7 +154,7 @@ int kvm_riscv_vcpu_get_reg_vector(struct kvm_vcpu *vcpu, void *reg_addr; int rc; =20 - if (!riscv_isa_extension_available(isa, v)) + if (!riscv_isa_extension_available(isa, V)) return -ENOENT; =20 rc =3D kvm_riscv_vcpu_vreg_addr(vcpu, reg_num, reg_size, ®_addr); @@ -180,7 +180,7 @@ int kvm_riscv_vcpu_set_reg_vector(struct kvm_vcpu *vcpu, void *reg_addr; int rc; =20 - if (!riscv_isa_extension_available(isa, v)) + if (!riscv_isa_extension_available(isa, V)) return -ENOENT; =20 if (reg_num =3D=3D KVM_REG_RISCV_VECTOR_CSR_REG(vlenb)) { --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E739E3CE080 for ; Tue, 2 Jun 2026 23:13:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.182 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442014; cv=none; b=Kwp546A/IVXXWVrEbK/iBvEp6fKQYVvbsY3MELDOdGGoxXxgsejSCxq36ajRJfRhYpI+dR+Fnkeu4WWu9FBi/+3dOHpzDYcA5q3wTS5yzJQPt3wCXRmLF3NAn35UxLjQhdFuS2E4Nd9zoG4/gN0uzRbSoioTNC+Dy5lmLSgEevA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442014; c=relaxed/simple; bh=NFhmNvV9DD30X+va7ijI7t1T5dzXyQBPQnD2PSPdR28=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YKacp0S7xP1FVfi2fpvimsolnLPGqiLkduuK4AlOm19mJ5L7vDF4CcgdB4NWJAx2A8xoKV++HhpTkezbLLHIBKQ8g8btBpW/ju54WzxFuK3ai5LtSNoJ1sty5ubcYEsv+7B/NC4Xit3loeGSSMgZkA4HU4+iZqj/cMaqbIRrVB8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=LRg4gscq; arc=none smtp.client-ip=209.85.214.182 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="LRg4gscq" Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-2c0c35980fdso31356475ad.2 for ; Tue, 02 Jun 2026 16:13:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442012; x=1781046812; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=6k1/Inmh2Od2nwTm50g7cFUmPDy1ALLg4fJ2r68DOVo=; b=LRg4gscqtgPsbX24bHL5Di9xHpOdOkTUMns3L0PgVR7CWE/8BrLiQ6jOoT/m063/Qz zE5PZS2X9E8boBv56gOVQ5jb5IwTylEEp14F9+vEuzt/0hfWSZzGQfGcMKdP4MIslLSa zjKzUmqsb6xWWJInjAa5CcpYoTwLyDQv+T45xQH6HZGcjd9Ie2dQPJlaK33kznJy5Gi8 jtZwQJv3ZLtPoO9JXDQSvlkHWlQ2Bh5U2YgVPPZsEN77j4N4RPUyhpy38e7e2GVHibSA /VOFsuJaJCOrcjWH/KScWcxxevmv8ZnSdjtwNM/xRZfwq9zMtCjV5wvVPQ4h1IJirapV BEoA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442012; x=1781046812; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=6k1/Inmh2Od2nwTm50g7cFUmPDy1ALLg4fJ2r68DOVo=; b=qi1GRulYhIzh4hDWMX8ZGPGEPfVWkH+BkDldvXo13z5WkanSrUUbD3I8yKSjh06Il8 4uQrWWaxSSY31Xhg3pU1FSnchB/IttARy3Yf8Fqlcjf7BQmWdMgeSRO96DedO+3u5I50 0CI9wEdka75eMu7qbodXyne0wIJwj7VRkGiJIKMlkPZv3E34kddsR/eIoOL7cHMvybhC E7grqwhMGCiJFepfcB0Z8+NqlH0Nk0kuQWVXoj+OZul2b2KJeaKqBZlue8xwrcKilhrW 3GG/Yb/uk4s/x64xP/D0Y01dRg7E3qL4Uz/CEk0tcZwhlfDczgP+Im4x2d/EnhXsQnza 0ktA== X-Forwarded-Encrypted: i=1; AFNElJ9OZBUIwiVYzWcE6E/Uq4yaiIeGhzQJGdSaQHvspraA+2FjQPQ8VKqIQqiTQv9Hvcj3mnTzAxIsJYa5EGk=@vger.kernel.org X-Gm-Message-State: AOJu0YzvSqaY7t4E49CCvHWJM/erKNu7xaCdqnzJTMUoHUj7J5DB3ihZ EktGvxEaZFWfWI/0h/JfQSLpdlfCmX0NRcnmoLWzX62FuYWlyixk+0GP X-Gm-Gg: Acq92OG92/ExAOBe0zUuPS1Ewq7JEOhR41w4SS6m6kIkj0tFxYQ8axOiwuWoGzhlykK MyXrYYE5t9oB/xRfCFuyw392/60h6aQuWSrrGndHDhuZ9HlxLQkNpxZDr40oQefYgjm9USpSSBZ RA7oDwmHKKXZLMuPVeoSkQ9+NryUk427QbDdyA3j0OXDI0FAfKj+bo5mJsBQMme6HIbpyK9K0vx sBzGnYlvs20JmbU7wuDcr4fNPFabHfOdQBKatXa0dWPOie8dD84EEHhRIRWTcSjbY85r51h42wP Ads9R3fUNcIOvuNpt1iLDEUYRxgHkbBPmfP3JKGJUhPnnY6TX1sXjurQHQmvMCjxr33fJ8GuA3S cKTE3wOA/KY7BWBlzFzTEiJrNGC3/HWZ0oQyBccJHhGq2/YqhRyetxIHM06nu2mXD7jHOH/ofND +oNs4GcNGVsQ== X-Received: by 2002:a17:903:2344:b0:2c0:b35d:ed54 with SMTP id d9443c01a7336-2c1644a93d1mr7243945ad.35.1780442012288; Tue, 02 Jun 2026 16:13:32 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.13.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:13:31 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:11:59 -0400 Subject: [PATCH v3 04/15] riscv: Add Zicclsm to cpufeature and hwprobe Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-4-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu , Jesse Taube , Charlie Jenkins , Andy Chiu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4403; i=docular.xu@gmail.com; h=from:subject:message-id; bh=btdqWDCTYOF/EEFvcKc54moiat+wMaDONmW39rkRzak=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHhYNjbkLtnefubOvT7P+dvl+1coIXY2Gy7btD41j9 /6wlOPtKGVhEONikBVTZDl8tCV76yufaN/nnD9g5rAygQxh4OIUgIlUMDP8ZmfITc7YXSG+7Wb/ Yr3mWK685AN8HfvUalLtPmlnR7/ZzfC/KmfV+tVWOguOVl5autbwHfNsjttiN388NX0+xVfGrfA BGwA= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE From: Jesse Taube Zicclsm requires misaligned support for all regular load and store instructions, both scalar and vector, but not AMOs or other specialized forms of memory access, to main memory regions with both the cacheability and coherence PMAs, as defined in the profiles spec. Even though mandated, misaligned loads and stores might execute extremely slowly. Standard software distributions should assume their existence only for correctness, not for performance. Reviewed-by: Conor Dooley Reviewed-by: Andy Chiu Reviewed-by: Charlie Jenkins Tested-by: Charlie Jenkins Signed-off-by: Jesse Taube [Rebased, rewrote doc text, minor commit message revisions] Signed-off-by: Andrew Jones Signed-off-by: Guodong Xu --- v3: - Move the hwprobe.rst entry to the IMA_EXT_1 section so its documentation matches the IMA_EXT_1 bit it was allocated in v2 (Sashiko, agreed by Andrew). v2: - Rebased onto v7.1-rc2; moved ZICCLSM to IMA_EXT_1 and allocated a new bit for it --- Documentation/arch/riscv/hwprobe.rst | 4 ++++ arch/riscv/include/asm/hwcap.h | 1 + arch/riscv/include/uapi/asm/hwprobe.h | 1 + arch/riscv/kernel/cpufeature.c | 1 + arch/riscv/kernel/sys_hwprobe.c | 1 + 5 files changed, 8 insertions(+) diff --git a/Documentation/arch/riscv/hwprobe.rst b/Documentation/arch/risc= v/hwprobe.rst index 3cedaaa53f331..fa2810bfc1477 100644 --- a/Documentation/arch/riscv/hwprobe.rst +++ b/Documentation/arch/riscv/hwprobe.rst @@ -401,3 +401,7 @@ The following keys are defined: as defined in version 1.0 of the RISC-V Control-flow Integrity (CFI) extensions specification, ratified in commit ff03d8485a04 ("Update to ratified state") of riscv-cfi. + + * :c:macro:`RISCV_HWPROBE_EXT_ZICCLSM`: The Zicclsm extension is support= ed, + as defined in the RISC-V Profiles specification starting from commit + b1d80660 ("Updated to ratified state.") diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index 44bf8c7d8acc5..e8f4a7dd96a93 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -112,6 +112,7 @@ #define RISCV_ISA_EXT_ZCLSD 103 #define RISCV_ISA_EXT_ZICFILP 104 #define RISCV_ISA_EXT_ZICFISS 105 +#define RISCV_ISA_EXT_ZICCLSM 106 =20 #define RISCV_ISA_EXT_XLINUXENVCFG 127 =20 diff --git a/arch/riscv/include/uapi/asm/hwprobe.h b/arch/riscv/include/uap= i/asm/hwprobe.h index 9139edba0aecb..6819df159c51e 100644 --- a/arch/riscv/include/uapi/asm/hwprobe.h +++ b/arch/riscv/include/uapi/asm/hwprobe.h @@ -116,6 +116,7 @@ struct riscv_hwprobe { #define RISCV_HWPROBE_KEY_ZICBOP_BLOCK_SIZE 15 #define RISCV_HWPROBE_KEY_IMA_EXT_1 16 #define RISCV_HWPROBE_EXT_ZICFISS (1ULL << 0) +#define RISCV_HWPROBE_EXT_ZICCLSM (1ULL << 1) =20 /* Increase RISCV_HWPROBE_MAX_KEY when adding items. */ =20 diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 686dde3ce3b98..1fb595581adcf 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -502,6 +502,7 @@ const struct riscv_isa_ext_data riscv_isa_ext[] =3D { __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicbom, RISCV_ISA_EXT_ZICBOM, riscv_xli= nuxenvcfg_exts, riscv_ext_zicbom_validate), __RISCV_ISA_EXT_DATA_VALIDATE(zicbop, RISCV_ISA_EXT_ZICBOP, riscv_ext_zic= bop_validate), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicboz, RISCV_ISA_EXT_ZICBOZ, riscv_xli= nuxenvcfg_exts, riscv_ext_zicboz_validate), + __RISCV_ISA_EXT_DATA(zicclsm, RISCV_ISA_EXT_ZICCLSM), __RISCV_ISA_EXT_DATA(ziccrse, RISCV_ISA_EXT_ZICCRSE), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicfilp, RISCV_ISA_EXT_ZICFILP, riscv_x= linuxenvcfg_exts, riscv_cfilp_validate), diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprob= e.c index f8f68ba781b45..9cf62266f1890 100644 --- a/arch/riscv/kernel/sys_hwprobe.c +++ b/arch/riscv/kernel/sys_hwprobe.c @@ -205,6 +205,7 @@ static void hwprobe_isa_ext1(struct riscv_hwprobe *pair, * in the hart_isa bitmap, are made. */ EXT_KEY(isainfo->isa, ZICFISS, pair->value, missing); + EXT_KEY(isainfo->isa, ZICCLSM, pair->value, missing); } =20 /* Now turn off reporting features if any CPU is missing it. */ --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 176363CDBD7 for ; Tue, 2 Jun 2026 23:13:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442025; cv=none; b=LkNBSfmz8yo+Fayc9RbU0oGtX6hH0YqTPENAzWBU7JszhrvH+XyREijTJZGvtf0qZB4ijDD0nT8tMoKEYWzthXSqNkH9ifn0Cnai2ZpBjYYC9ZKQwwiiqkjNbYXOIxAfsDCl45R5L7QrHIP70XF2jm3wejH35KtrpirDc2kVp2w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442025; c=relaxed/simple; bh=PgvW4MiFnfBH9/7PE1Egee3DCvENYUCtSHGurAuOmJM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Yshq2mGCymJbGvtU+/iKpYgjkCWpJceIh3plUo7b6QzPJUGlA0JrCZZQOnRAJKQlYMXS6v99VvY9bFcF6t/RWiG4OZWlsGg/pMozdZWWUKJ9oXodbbJo5iYu9t1N6k9oU+YmOqRap6s9uxGg7ith03DPZJAt8Xl6CDQ+epGkBDo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=hq+eBbUe; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="hq+eBbUe" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2c0c2c7e0c5so21873015ad.1 for ; Tue, 02 Jun 2026 16:13:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442023; x=1781046823; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=bw7Vrp5oUh2WDw5s8GOf1exSRNbvtmX+nqV+speIpOA=; b=hq+eBbUeHssOS8qpK6nx0mfjKpaBOHUCrR9IWTZVqHViZNfk18uk3dJqDvbIVlte9I g0Vw+TVGgv6z8ATbigkopKTbDAEb5W6Sbuj1Ey+pavdOzc9zZRX1Ybn6Ok5MRN/ICddi 8LfArHYLGE2revvSQ/ZsB9kZzcV9qolSAAS4jr5nvJ8Lvdd4hY80XPtsbd9Hs8q1WV7B vkBC3Es/lFVPs9fUYR6xTT2SlKU7HYafHesXfZ6m8O7/OhcDt2T9b8mVvlMZOyEQx136 VwrkbZxbyVfoccSK8o3zayE26DEV4JrUVLgQmsvgdKO1qkuqwsBavlwrHPnq2W9G4Sm/ 8Ixg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442023; x=1781046823; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bw7Vrp5oUh2WDw5s8GOf1exSRNbvtmX+nqV+speIpOA=; b=oWklWRx6CmVOCqWgpoeKuf2p2krrhRtLz0/wTxV/T1ZF+fKnL0WzitbGFvPRj+OR0X iq9yfe1vU1loocZ4rzMnunZxnk88ePucSFOvw+N6rGDqsZ15c6vlF7jcV4I/L6tEI0f1 HBwDzrnZTM1JStRC+S5VHwAOntHoY7uWxwrbVwH9378XkXa1PsxE6VMt/RK+M5VMJ+ew VGH+SZqEMgV3N8xlfz32HfdKt5IqBo+XqdibHVQ1A4S9LMdM4WBTcKbQegh8MTyHXZ9W nCH11yqA5xcO2UvuWDF29Ii/T7K22Kbqcdq+pZ8m2553QZzFGF2dKiKh+Qa96Yp5EGCb jNzQ== X-Forwarded-Encrypted: i=1; AFNElJ8cLKya5OGm/yRzSfMK2cqNMC7yJA15QmA/7nfPEpU9ICuKbdBP3fAYKSCUhxivELfals7r3iIbHF2JPIg=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9Sz9X+0U+IK9/Q9P5XFJywFSSr8rdedxKnd6zaqhOP0OWONh4 fw6fIk54uRpMuAQRQ21QGXh6tknJKiGxmMg8I/0R+OJ1OX6FNHkTa+Z0 X-Gm-Gg: Acq92OHBS3ZLePn2sc6qYEHm9AAJm2OkdOjWougOYDv9VgGgCU9hKKG2Jyh3fsG35BW lAZR71zy/zZF8l4ZEPvHqXKY8XHLk0AyTyTNFkR7zXcKA8pvU7fcTsGzQFQLKKyyZCKYc3p8ryZ pTmGasKV09Zf0ZhA7U7328r+wzrigXSRlfypwY4Npdb8SIwwW87fb60mKoF/YUlTAHt0rx6Uwbh Kd9RwL72ujhNOXGrwiPLUvKY8F6wE5p5vzSL4CxHlCUE2ueL/uNZbrhPWePiFTdW29lI76Ok7hl LlfUbq3pGEv19Xe9MPaImLJ5QX5h7PtnLgrhl7bcyLW1A2kauSU0SWnndOsLqYEjNUSrAH7MRF/ /8vZm9cbqTJUY4rhBuOVRavmENzocugpENdeC31IbKjX9//onwxMkEM9ZoXlubCCWEOMRYu0LYQ EzDuQvSe3BRg== X-Received: by 2002:a17:903:3887:b0:2bd:9061:d544 with SMTP id d9443c01a7336-2c1644b829bmr7231515ad.34.1780442023354; Tue, 02 Jun 2026 16:13:43 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.13.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:13:43 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:00 -0400 Subject: [PATCH v3 05/15] riscv: Add Ziccamoa, Ziccif, Ziccrse, and Za64rs to cpufeature and hwprobe Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-5-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=7482; i=docular.xu@gmail.com; h=from:subject:message-id; bh=Na9bFIsZ8mb2+W6E0yz8lnHt52zKy2GggwDCAN9B4OQ=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHpYDV7Q6rjApZxi8aVcwzHh95MBPLnYlnt93QgOXp WtMsZDvKGVhEONikBVTZDl8tCV76yufaN/nnD9g5rAygQxh4OIUgImEP2P4X/zhZfPf0vRNZdNi NlhETbs/v81O8P3vyORlSvk1ypuWMzIyXF/BlOCX3rBne7EIv/+WULmlqV/XLtySJXhuzmKphqV LmQE= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE From: Andrew Jones Add Ziccamoa, Ziccif, and Za64rs to riscv_isa_ext[] so they can be parsed from devicetree/ACPI ISA strings. Ziccrse is already present in cpufeature; this patch only adds its hwprobe exposure. Expose all four extensions via hwprobe through new bits in RISCV_HWPROBE_KEY_IMA_EXT_1 (RISCV_HWPROBE_EXT_ZICCAMOA, _ZICCIF, _ZICCRSE, _ZA64RS), so userspace can probe each of these RVA23U64-mandatory extensions individually. Rationale for the validation dependencies added for Ziccamoa and Za64rs: 1) Ziccamoa depends on Zaamo. The RVA23 profile prose was updated post-ratification to spell out the Zaamo reference: commit 2b218613752d in riscv/riscv-profiles ("Improve description of Ziccamoa (#224)") reworded the rva23-profile.adoc (and other profiles that include Ziccamoa) text from "must support all atomics in A" to "must support all atomics in the Zaamo extension" [1]. 2) Za64rs depends on Zalrsc. The unprivileged ISA manual src/zars.adoc, integrated in commit ebe06adc22cd ("Integrate profiles as Volume III (#2771)"), defines Za64rs as: "The Za64rs extension requires that the reservation sets used by the instructions in the Zalrsc extension be contiguous, naturally aligned, and at most 64 bytes in size" [2]. Link: https://github.com/riscv/riscv-profiles/commit/2b218613752d63287286b5= ae801b820cbd8cc10c [1] Link: https://github.com/riscv/riscv-isa-manual/blob/main/src/unpriv/zars.a= doc [2] Signed-off-by: Andrew Jones Signed-off-by: Guodong Xu --- v3: Indent the added hwprobe.rst entries to match the normalized style; no = other change. v2: - Rebased to v7.1-rc2. - Reworded subject and expanded commit message. - Validation added for Ziccamoa depending on Zaamo and Za64rs depending on Zalrsc. --- Documentation/arch/riscv/hwprobe.rst | 16 ++++++++++++++++ arch/riscv/include/asm/hwcap.h | 3 +++ arch/riscv/include/uapi/asm/hwprobe.h | 4 ++++ arch/riscv/kernel/cpufeature.c | 21 +++++++++++++++++++++ arch/riscv/kernel/sys_hwprobe.c | 4 ++++ 5 files changed, 48 insertions(+) diff --git a/Documentation/arch/riscv/hwprobe.rst b/Documentation/arch/risc= v/hwprobe.rst index fa2810bfc1477..b1b2d8803e5c2 100644 --- a/Documentation/arch/riscv/hwprobe.rst +++ b/Documentation/arch/riscv/hwprobe.rst @@ -405,3 +405,19 @@ The following keys are defined: * :c:macro:`RISCV_HWPROBE_EXT_ZICCLSM`: The Zicclsm extension is support= ed, as defined in the RISC-V Profiles specification starting from commit b1d80660 ("Updated to ratified state.") + + * :c:macro:`RISCV_HWPROBE_EXT_ZICCAMOA`: The Ziccamoa extension is suppo= rted, + as defined in the RISC-V Profiles specification starting from commit + b1d80660 ("Updated to ratified state.") + + * :c:macro:`RISCV_HWPROBE_EXT_ZICCIF`: The Ziccif extension is supported, + as defined in the RISC-V Profiles specification starting from commit + b1d80660 ("Updated to ratified state.") + + * :c:macro:`RISCV_HWPROBE_EXT_ZICCRSE`: The Ziccrse extension is support= ed, + as defined in the RISC-V Profiles specification starting from commit + b1d80660 ("Updated to ratified state.") + + * :c:macro:`RISCV_HWPROBE_EXT_ZA64RS`: The Za64rs extension is supported, + as defined in the RISC-V Profiles specification starting from commit + b1d80660 ("Updated to ratified state.") diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index e8f4a7dd96a93..0acb7a01ecc0f 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -113,6 +113,9 @@ #define RISCV_ISA_EXT_ZICFILP 104 #define RISCV_ISA_EXT_ZICFISS 105 #define RISCV_ISA_EXT_ZICCLSM 106 +#define RISCV_ISA_EXT_ZICCAMOA 107 +#define RISCV_ISA_EXT_ZICCIF 108 +#define RISCV_ISA_EXT_ZA64RS 109 =20 #define RISCV_ISA_EXT_XLINUXENVCFG 127 =20 diff --git a/arch/riscv/include/uapi/asm/hwprobe.h b/arch/riscv/include/uap= i/asm/hwprobe.h index 6819df159c51e..58d1e86e47ae7 100644 --- a/arch/riscv/include/uapi/asm/hwprobe.h +++ b/arch/riscv/include/uapi/asm/hwprobe.h @@ -117,6 +117,10 @@ struct riscv_hwprobe { #define RISCV_HWPROBE_KEY_IMA_EXT_1 16 #define RISCV_HWPROBE_EXT_ZICFISS (1ULL << 0) #define RISCV_HWPROBE_EXT_ZICCLSM (1ULL << 1) +#define RISCV_HWPROBE_EXT_ZICCAMOA (1ULL << 2) +#define RISCV_HWPROBE_EXT_ZICCIF (1ULL << 3) +#define RISCV_HWPROBE_EXT_ZICCRSE (1ULL << 4) +#define RISCV_HWPROBE_EXT_ZA64RS (1ULL << 5) =20 /* Increase RISCV_HWPROBE_MAX_KEY when adding items. */ =20 diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 1fb595581adcf..b9538e69fa1b3 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -90,6 +90,24 @@ static int riscv_ext_f_depends(const struct riscv_isa_ex= t_data *data, return -EPROBE_DEFER; } =20 +static int riscv_ext_zaamo_depends(const struct riscv_isa_ext_data *data, + const unsigned long *isa_bitmap) +{ + if (__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_ZAAMO)) + return 0; + + return -EPROBE_DEFER; +} + +static int riscv_ext_zalrsc_depends(const struct riscv_isa_ext_data *data, + const unsigned long *isa_bitmap) +{ + if (__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_ZALRSC)) + return 0; + + return -EPROBE_DEFER; +} + static int riscv_ext_zicbom_validate(const struct riscv_isa_ext_data *data, const unsigned long *isa_bitmap) { @@ -502,6 +520,8 @@ const struct riscv_isa_ext_data riscv_isa_ext[] =3D { __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicbom, RISCV_ISA_EXT_ZICBOM, riscv_xli= nuxenvcfg_exts, riscv_ext_zicbom_validate), __RISCV_ISA_EXT_DATA_VALIDATE(zicbop, RISCV_ISA_EXT_ZICBOP, riscv_ext_zic= bop_validate), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicboz, RISCV_ISA_EXT_ZICBOZ, riscv_xli= nuxenvcfg_exts, riscv_ext_zicboz_validate), + __RISCV_ISA_EXT_DATA_VALIDATE(ziccamoa, RISCV_ISA_EXT_ZICCAMOA, riscv_ext= _zaamo_depends), + __RISCV_ISA_EXT_DATA(ziccif, RISCV_ISA_EXT_ZICCIF), __RISCV_ISA_EXT_DATA(zicclsm, RISCV_ISA_EXT_ZICCLSM), __RISCV_ISA_EXT_DATA(ziccrse, RISCV_ISA_EXT_ZICCRSE), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicfilp, RISCV_ISA_EXT_ZICFILP, riscv_x= linuxenvcfg_exts, @@ -516,6 +536,7 @@ const struct riscv_isa_ext_data riscv_isa_ext[] =3D { __RISCV_ISA_EXT_DATA(zihintpause, RISCV_ISA_EXT_ZIHINTPAUSE), __RISCV_ISA_EXT_DATA(zihpm, RISCV_ISA_EXT_ZIHPM), __RISCV_ISA_EXT_DATA(zimop, RISCV_ISA_EXT_ZIMOP), + __RISCV_ISA_EXT_DATA_VALIDATE(za64rs, RISCV_ISA_EXT_ZA64RS, riscv_ext_zal= rsc_depends), __RISCV_ISA_EXT_DATA(zaamo, RISCV_ISA_EXT_ZAAMO), __RISCV_ISA_EXT_DATA(zabha, RISCV_ISA_EXT_ZABHA), __RISCV_ISA_EXT_DATA(zacas, RISCV_ISA_EXT_ZACAS), diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprob= e.c index 9cf62266f1890..b15ac9adf7920 100644 --- a/arch/riscv/kernel/sys_hwprobe.c +++ b/arch/riscv/kernel/sys_hwprobe.c @@ -206,6 +206,10 @@ static void hwprobe_isa_ext1(struct riscv_hwprobe *pai= r, */ EXT_KEY(isainfo->isa, ZICFISS, pair->value, missing); EXT_KEY(isainfo->isa, ZICCLSM, pair->value, missing); + EXT_KEY(isainfo->isa, ZICCAMOA, pair->value, missing); + EXT_KEY(isainfo->isa, ZICCIF, pair->value, missing); + EXT_KEY(isainfo->isa, ZICCRSE, pair->value, missing); + EXT_KEY(isainfo->isa, ZA64RS, pair->value, missing); } =20 /* Now turn off reporting features if any CPU is missing it. */ --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9034C3CF02C for ; Tue, 2 Jun 2026 23:13:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442037; cv=none; b=tIsT+0YoIk83t5jHZvPNFcyqyfs5zhu/9kWaNDDhxkT7uGFk0KHgA2uyA8EFnBX36DyJlR0wDpGK0ZoGAUWjyr8ynscpZprRzm28LWTnoFKlq3liSbdMew/i+g64n+9p7xT3a/HS682NZzUW2k/MmyWSRDw0722W9uadKWA9J3c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442037; c=relaxed/simple; bh=xNkpTSkaIkqroNzaTuMyYXOXZTYqZyfliGS84YviPGg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=V6PuL2cmbMyLtLHrw+CwRiWsxhvQBBHnKRj/SfXKVV0TqogfDrlxU1muPSVL0gzch4Z09VcYwF1xIvoS8fTHQd0sQRk7hjmOw6MPwk1eB+4MgsJL1tfdkidj9uVMCpheViZulj5BBEZl9xYD4g5590q2Emx61701hClF1TibLHQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=CaG2vxJo; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CaG2vxJo" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2bea7176c72so94576775ad.0 for ; Tue, 02 Jun 2026 16:13:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442034; x=1781046834; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=Rhj+nvBHQ+CacSRsmI/cyKsZedwbZNdref0NZfEXqHA=; b=CaG2vxJo3nA4uoU4TgnV1HCByUzbuBcehAtoMObEJCLlnOFALgUY6u52m4/TGRuwu/ F355MEDRhv6IW49mnSKpFpSTs4TjBp5UeWRfdEiBFu8eCPEdozaVob6mWNsK2Qr4NtKN Qw8qTOGcfiUC125rwN0zgTprtQNMFKiLSXlpE+zkEmItznSTRlcofVdmz+9kActSWkGL 7GxciA9jO+rmmHKv0Yq1NJXWXKmnLjmIR9KUkxN7mw2FGBL4kJpDIzDwEsRw4Aae3KGh /HAEMZ3lmtam4voaANYVPOUuOKX7iITHVGr+k4k2ZLpzgn4EUQyVvewI4fDkWEX3DFMz lqHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442034; x=1781046834; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Rhj+nvBHQ+CacSRsmI/cyKsZedwbZNdref0NZfEXqHA=; b=ctwDa5ycs2NZBo+zXPoGZe+mimN9ASMwFjNJKLXPYK/xAhGjpRc8sATMLC4ZZbRwnz gWullBq1hdf1gyKA60s22yuiHkvF/nlKe6rbxwqk3A2Gumx0Zr9QamVfyHEj+TajRl5J Ldyp1obez9d8HWeXB22Xp++hNV/Gssw4hc8b7YlRd/IrzCOMeLb/ZgopDdmHGhQozCzl ql5Mu2XuOdQAt1CoCYT3bV5J5D520Q3hex9Vxezfr4OF18FMHX874WTr2FawaNxEsn/z oZMGfgBQKGDpnnCyAZr6KpF+jd3vYMNDd42FrMzfpx0kt1GZkiDewjQSbYg9QrnTBfPX 6Gfg== X-Forwarded-Encrypted: i=1; AFNElJ8ZWRPyt1Gac3TYKuyjk1YughXTFrgIrRAgzYYfUgusi2TuvLJimh1Ss6BIh9Wst7fJkzguuzWXQyefKik=@vger.kernel.org X-Gm-Message-State: AOJu0YxU0uNNze3uGZIDrp3sU6lVHvWQYyr7KpuMWnbUgtzTtVPxsFAr Q1ddoO6UuA21ePXYrXT2FKupRVNW0ng26WLGHn6JhPyYCkdvkP0hHmXU X-Gm-Gg: Acq92OH7iUuuPjCYnyvJObji6tqbGNrMiKRT27GFlIFEzd7XnjAAq08xMKqTZA38Hr8 UVlC5DaGjZQnR5andWKj6lbtNCC5J+gq4My+ifJZbG5xCmBDRlWIgS9EplGgF+37RcRmVZ3iGu5 qv4FK7i6USs9HcuEWRz9X13PGot0p6Bi64nfS0iKt8jVCUCKWSuS+4jk0E/ClQYwSkcEg8ZKP7o JZkxQVUefUJzlbelo3eKRqk/eN0rwyy9zLo+44VZIdsV/My9JWW9Td/O05vdsA7RBX1OjLs4Hu9 8eePLPxJAXioBj8bgbDIurMeQ8Op18K8HM7dzAC5eKvWtHwUKQ4tRB1QA8429yecvmNqzTy3vFt 59D2KTuG1HmzZVYxZ8SKJk1TqqqRbfV8pahbM3fstU8uZ6xBNo2Og1z0PmXicHWxZsklWY6fdep 1Qf9BHcUmZvxwdXqYW5ogz X-Received: by 2002:a17:903:3808:b0:2bf:26d:3f42 with SMTP id d9443c01a7336-2c163a43429mr7020065ad.18.1780442033831; Tue, 02 Jun 2026 16:13:53 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.13.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:13:53 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:01 -0400 Subject: [PATCH v3 06/15] riscv: Add B to hwcap and hwprobe Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-6-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=5356; i=docular.xu@gmail.com; h=from:subject:message-id; bh=NxvCb+UtcmfgO40y2Ax6jmE3kx7ULzNHJSgIED+/XZU=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHhZ+FavHaUpXTARZTOadzV9/W3xZ/Nt0/87vsRM6k yqW6zB3lLIwiHExyIopshw+2pK99ZVPtO9zzh8wc1iZQIYwcHEKwETmLWD4X+B+vt4scxnbmZVf 7BKi501N/dJbyRLZtc3qVURaf9S76Qx/pdacVp2tks223PJ3BPtptiN9Vj++MCvsmRnKvfPYzeP V/AA= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE From: Andrew Jones Add B to hwcap and ensure when B is present that Zba, Zbb, and Zbs are all set. Also expose B via hwprobe (RISCV_HWPROBE_EXT_B in RISCV_HWPROBE_KEY_IMA_EXT_1) so that userspace can probe B directly, mirroring the F/D/C/V pattern where each is reported via both hwcap and hwprobe. Signed-off-by: Andrew Jones [Add B to hwprobe] Signed-off-by: Guodong Xu --- v3: - Indent the added hwprobe.rst entry to match the normalized style. - Rebased onto v7.1-rc6: index isa2hwcap[] via RISCV_ISA_EXT_B to match the macro-ization in commit 41337097f2823. v2: - Rebased to v7.1-rc2 - Add B to hwprobe (RISCV_HWPROBE_EXT_B at IMA_EXT_1 bit 6) and document it in hwprobe.rst, so userspace can probe B directly. --- Documentation/arch/riscv/hwprobe.rst | 4 ++++ arch/riscv/include/asm/hwcap.h | 1 + arch/riscv/include/uapi/asm/hwcap.h | 1 + arch/riscv/include/uapi/asm/hwprobe.h | 1 + arch/riscv/kernel/cpufeature.c | 8 ++++++++ arch/riscv/kernel/sys_hwprobe.c | 1 + 6 files changed, 16 insertions(+) diff --git a/Documentation/arch/riscv/hwprobe.rst b/Documentation/arch/risc= v/hwprobe.rst index b1b2d8803e5c2..002d5046ab689 100644 --- a/Documentation/arch/riscv/hwprobe.rst +++ b/Documentation/arch/riscv/hwprobe.rst @@ -421,3 +421,7 @@ The following keys are defined: * :c:macro:`RISCV_HWPROBE_EXT_ZA64RS`: The Za64rs extension is supported, as defined in the RISC-V Profiles specification starting from commit b1d80660 ("Updated to ratified state.") + + * :c:macro:`RISCV_HWPROBE_EXT_B`: The B extension is supported, as defin= ed + in version 1.0 of the Bit-Manipulation ISA extensions, and implies the + presence of the Zba, Zbb, and Zbs sub-extensions. diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index 0acb7a01ecc0f..58523b3a1998a 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -11,6 +11,7 @@ #include =20 #define RISCV_ISA_EXT_A ('a' - 'a') +#define RISCV_ISA_EXT_B ('b' - 'a') #define RISCV_ISA_EXT_C ('c' - 'a') #define RISCV_ISA_EXT_D ('d' - 'a') #define RISCV_ISA_EXT_F ('f' - 'a') diff --git a/arch/riscv/include/uapi/asm/hwcap.h b/arch/riscv/include/uapi/= asm/hwcap.h index c52bb7bbbabe9..96b7cf854e090 100644 --- a/arch/riscv/include/uapi/asm/hwcap.h +++ b/arch/riscv/include/uapi/asm/hwcap.h @@ -21,6 +21,7 @@ #define COMPAT_HWCAP_ISA_F (1 << ('F' - 'A')) #define COMPAT_HWCAP_ISA_D (1 << ('D' - 'A')) #define COMPAT_HWCAP_ISA_C (1 << ('C' - 'A')) +#define COMPAT_HWCAP_ISA_B (1 << ('B' - 'A')) #define COMPAT_HWCAP_ISA_V (1 << ('V' - 'A')) =20 #endif /* _UAPI_ASM_RISCV_HWCAP_H */ diff --git a/arch/riscv/include/uapi/asm/hwprobe.h b/arch/riscv/include/uap= i/asm/hwprobe.h index 58d1e86e47ae7..430dc49a82863 100644 --- a/arch/riscv/include/uapi/asm/hwprobe.h +++ b/arch/riscv/include/uapi/asm/hwprobe.h @@ -121,6 +121,7 @@ struct riscv_hwprobe { #define RISCV_HWPROBE_EXT_ZICCIF (1ULL << 3) #define RISCV_HWPROBE_EXT_ZICCRSE (1ULL << 4) #define RISCV_HWPROBE_EXT_ZA64RS (1ULL << 5) +#define RISCV_HWPROBE_EXT_B (1ULL << 6) =20 /* Increase RISCV_HWPROBE_MAX_KEY when adding items. */ =20 diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index b9538e69fa1b3..e0197160af6dd 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -468,6 +468,12 @@ static const unsigned int riscv_c_exts[] =3D { RISCV_ISA_EXT_ZCD, }; =20 +static const unsigned int riscv_b_exts[] =3D { + RISCV_ISA_EXT_ZBA, + RISCV_ISA_EXT_ZBB, + RISCV_ISA_EXT_ZBS, +}; + /* * The canonical order of ISA extension names in the ISA string is defined= in * chapter 27 of the unprivileged specification. @@ -515,6 +521,7 @@ const struct riscv_isa_ext_data riscv_isa_ext[] =3D { __RISCV_ISA_EXT_DATA_VALIDATE(d, RISCV_ISA_EXT_D, riscv_ext_d_validate), __RISCV_ISA_EXT_DATA(q, RISCV_ISA_EXT_Q), __RISCV_ISA_EXT_SUPERSET(c, RISCV_ISA_EXT_C, riscv_c_exts), + __RISCV_ISA_EXT_SUPERSET(b, RISCV_ISA_EXT_B, riscv_b_exts), __RISCV_ISA_EXT_SUPERSET_VALIDATE(v, RISCV_ISA_EXT_V, riscv_v_exts, riscv= _ext_vector_float_validate), __RISCV_ISA_EXT_DATA(h, RISCV_ISA_EXT_H), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicbom, RISCV_ISA_EXT_ZICBOM, riscv_xli= nuxenvcfg_exts, riscv_ext_zicbom_validate), @@ -1133,6 +1140,7 @@ void __init riscv_fill_hwcap(void) isa2hwcap[RISCV_ISA_EXT_F] =3D COMPAT_HWCAP_ISA_F; isa2hwcap[RISCV_ISA_EXT_D] =3D COMPAT_HWCAP_ISA_D; isa2hwcap[RISCV_ISA_EXT_C] =3D COMPAT_HWCAP_ISA_C; + isa2hwcap[RISCV_ISA_EXT_B] =3D COMPAT_HWCAP_ISA_B; isa2hwcap[RISCV_ISA_EXT_V] =3D COMPAT_HWCAP_ISA_V; =20 if (!acpi_disabled) { diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprob= e.c index b15ac9adf7920..dcc102bf8f183 100644 --- a/arch/riscv/kernel/sys_hwprobe.c +++ b/arch/riscv/kernel/sys_hwprobe.c @@ -210,6 +210,7 @@ static void hwprobe_isa_ext1(struct riscv_hwprobe *pair, EXT_KEY(isainfo->isa, ZICCIF, pair->value, missing); EXT_KEY(isainfo->isa, ZICCRSE, pair->value, missing); EXT_KEY(isainfo->isa, ZA64RS, pair->value, missing); + EXT_KEY(isainfo->isa, B, pair->value, missing); } =20 /* Now turn off reporting features if any CPU is missing it. */ --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 394763CEB92 for ; Tue, 2 Jun 2026 23:14:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442047; cv=none; b=ZCGJzhZPyFSLfGCpwv19QiKE01/WDw+a/j6PGr5iJvJi048WLc1ubjwDkE667lXRCbJowkt95FIFNrvB/hcYhjc7pXWlKgHXg1cNhtbhF/BVRxMnqvWF5RpR4lsFdzMgcUZtOw/bb1XOp+yymNDQocOIptGLFZYzajSganPLDjU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442047; c=relaxed/simple; bh=iGkU1xGI6N0CG6KK3Wa2Gjx9gV+MFto48jC9Pj8TI+0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UdwLByCInDs8QtNkvfSru9UTcDDaxuEUqkzypQY/pAssGIfYkSHUUGdymuyTUj6KQ7pznbDBf7+bJhQwp6G71gHJ81aeVN7vfShzyZhd3+4TCRxqk8MCYmCUK3d9ZQTze2svijpPtxhOav7TdxY87ITjtUBg5E8JuevRkLYK3Ac= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZhQBiors; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZhQBiors" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-36bdda53d99so1891268a91.0 for ; Tue, 02 Jun 2026 16:14:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442045; x=1781046845; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=0LXe5fflvRfl48si4k2cnzpQ6FQhY8QPALZuyX6O/nI=; b=ZhQBiorsJCvdSRRUvcvQMT4SCDp3jUiVIPo7ssAJ6dYBQCsVxk2du5jMqvsHv4rhS0 DvOgqnRH6CC81Z5zSJQgGPO2YdicRSfcAy0NqPVKi7ORfSoKyG9OLgvoNYLUbXG5Mk+N BJckfMa99Iw3gt8UwAe8Ne0F4DctQW0ud0RzT4yoIBj8tSWhwAhLVc/4pv1m6cEuUz75 30iDNHHxkHqzVRkGZ2Kl+Gs2cqubS4qddM/UuhVapYxEDLv0K9e+U+ENpBuEVIgRpbmL 0iA4wKFdGOhP1PjQCv8aDUarJSuqfcUdSOTotxzlsM1WA2dq8TEgYtIudB/LnRKQ+sfn hMmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442045; x=1781046845; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=0LXe5fflvRfl48si4k2cnzpQ6FQhY8QPALZuyX6O/nI=; b=IyzG4wxE1NMZEwHLd4YE6Fw81I2pMj28ubtU7G6nUQGD5s12jeGxhntFdJnsKCG5/Z FAAHz3bLrhCdEPp74MFVeVWLihyHZWv9A7tI6nU42MRzlhSO2hU6s4FwgHmejpDhfH90 9SBX3lVE4qfZ5/Ai+JCGEszI65SEHFa76v4V7L8+yGYgG3zwQiha7ZI8qxBQ7qI+lGUQ XSAti7e7TzS/MGdwnWii9u5WW4VXyr+7+L0vfqj7rN5jaOohtP8ArHo8lZjUdWIhEByn KPPHrc1smUdgFwLiG9v9G58uMsnWFBT0gtEqM8h0eSvmPlsXWmz2uKF6Drp6W5txsufb UE9w== X-Forwarded-Encrypted: i=1; AFNElJ/9hpG91FX9j+8IA31ZoT0oEDaEzjJg+sRlHXX0ggQGgHnA0RbkwVVtyXM/5J31gAoOlD7C59qE7rM/EZc=@vger.kernel.org X-Gm-Message-State: AOJu0YxlIGWfLvBD1Ql237DqttcqWqybpCgvn6zKLShiZ+ZS0A125jl8 qxOr+diONWOoYeTR+Y92aX0MCYu/Ir4CoHdhQUksQTcUdMXCuMUZxKE6 X-Gm-Gg: Acq92OEEEjnHuN4Di8eR6cr079DYga1xqzstHvl8V0V2yXYwHPZ4A/i2XuvW1REPaO9 D9gzrHYGMXBhraS6X8F97x4zXVTYNvsP9ZJfVd1lO/B+aJq5OReanq6cbDh+AjDNGfQNK2KYGge ngOE6OF5r+jZQ+Lij3I7/6lZERw7Yn6mLWCFcOSPEZ31mNsKfQJmSWbX1v7Vidh9nWjnnn/HTB9 C5rXONVzKnAfaKC0UMjIJkm5l2W7J4IjYN3OkNb3g38Sh6TNkgdLA4emKWg2biqbmviEMyAl9wx MU3eMkPjsKTpOXJF5ZOJk1J2ED3iWEMvCtcxOjmvBgYh61oiq6aeXYhN+T7Kh52oOfmGUhK/cIU 6mGnNo4a2nhhSlu00BDfYd/07AjV2dBqUdPPMGEigV1GIbD6HrIwCdckJjxhhPXSO0ruSSZOSpN NetAv/ClqGqw== X-Received: by 2002:a17:902:d4c6:b0:2ba:6bd7:8efc with SMTP id d9443c01a7336-2c1644dc902mr7074735ad.40.1780442045431; Tue, 02 Jun 2026 16:14:05 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.13.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:14:05 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:02 -0400 Subject: [PATCH v3 07/15] dt-bindings: riscv: Add Zic64b extension description Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-7-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2155; i=docular.xu@gmail.com; h=from:subject:message-id; bh=iGkU1xGI6N0CG6KK3Wa2Gjx9gV+MFto48jC9Pj8TI+0=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHhZX60yng3sfSKyeLnNFOnCOeau1WPd/DvXlT9Msl vy5zSPbUcrCIMbFICumyHL4aEv21lc+0b7POX/AzGFlAhnCwMUpABP5eoLhf7ZSe7qiblJtxs30 XtUralUK+yu+KhZlh9p7rtwxO1qzgeGfHcvSFV6qKy/IL1czmcDivZPrbkamCJ/8EevA1Zzcfdz sAA== X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE Zic64b mandates that cache blocks are 64 bytes in size and naturally aligned in the address space. It is a mandatory extension of both the RVA22 (U64/S64) and RVA23 (U64/S64) profiles, ratified with RISC-V Profiles Version 1.0. Document it so it can be described in the riscv,isa-extensions property, alongside the related Zicbom/Zicbop/Zicboz cache-block extensions. As Zic64b is the architectural guarantee that the cache block size is 64 bytes, also require a hart that advertises it to report cbom/cbop/cboz block sizes of 64, so dtbs_check rejects an inconsistent description. Signed-off-by: Guodong Xu --- v3: New patch. --- .../devicetree/bindings/riscv/extensions.yaml | 20 ++++++++++++++++= ++++ 1 file changed, 20 insertions(+) diff --git a/Documentation/devicetree/bindings/riscv/extensions.yaml b/Docu= mentation/devicetree/bindings/riscv/extensions.yaml index 2b0a8a93bb214..ec1c9473d4256 100644 --- a/Documentation/devicetree/bindings/riscv/extensions.yaml +++ b/Documentation/devicetree/bindings/riscv/extensions.yaml @@ -590,6 +590,12 @@ properties: in version 1.0 of RISC-V Cryptography Extensions Volume I specification. =20 + - const: zic64b + description: + The standard Zic64b extension for 64-byte naturally aligned ca= che + blocks, as ratified in RISC-V Profiles Version 1.0, with commit + b1d806605f87 ("Updated to ratified state.") + - const: zicbom description: The standard Zicbom extension for base cache management operat= ions as @@ -1142,6 +1148,20 @@ allOf: not: contains: const: zilsd + # Zic64b mandates 64-byte naturally aligned cache blocks + - if: + properties: + riscv,isa-extensions: + contains: + const: zic64b + then: + properties: + riscv,cbom-block-size: + const: 64 + riscv,cbop-block-size: + const: 64 + riscv,cboz-block-size: + const: 64 =20 additionalProperties: true ... --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C83D03D091B for ; Tue, 2 Jun 2026 23:14:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442058; cv=none; b=A3Lmim4mp5DWO2++M1EyDGvv8mgmbwo78p/+0RJ7thT6/hCnMwkYPfqGfl5jev0GQ3Lw5BfcPiJmWhbixlTZDL8yypqieRTDeUduXVe7nsKRyiGuCCw4RyDK8uWzJko4OYxS5ra6Cz2H3cs3gNf6pvcysibCk6wGnDkv02wLCsk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442058; c=relaxed/simple; bh=ic3wkraCrvoYZ6pSRcfok46YiwVD8eKVuqso6BkVzl4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uRAkxJSRUprgWHU63kIb0mKmvGiMhblqywMzdZv9n+V8xM0IQ01ztHzzRyuc4l8XBa3INXvUvdfaoKOstTzTDKDSvXG85fh7XO5X95V8/g8YhZaNtfkbfQcBFLTWi1dqVAnA4jfGEijUzrR+hGbb8ZF9r+ysSWzytHc2wEczU+Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aN9vUP9w; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aN9vUP9w" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2c0c32f6ce1so20681265ad.2 for ; Tue, 02 Jun 2026 16:14:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442056; x=1781046856; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=tnLxbwZwMbkVvB2Zwz0yZiGVjbTNpgk1H8ZchRPW3Lw=; b=aN9vUP9wSxyzxdxsCtSt9EyidsSW8S98gpGWbKVyzSplk08/4rd2mL7zGVXVVWZGJ/ 5PE3TviOql5UIgxfPcRdIn+trrNcG5Kgqf9myHFSk64ChYqB6sbtsyGk8VQ6oGMfUV0l eWXRkK0fCb35YnAopf/mGeuUAvv0WYHf0nnfOdaiHe7vjRFGZQ/cPnIMRZf22jdh6aR7 TLYwSHC6iYfnPsY8bHuCiCG2BSu2QIlS7oMqnCAUdcWAeZwVgzLGv91VwlaU3r13sB3f aI4v9qhzfmP3cTKv5IozPVLVdHgmLTCx68L+BtCaWbkp0UhZtFNK+TF5jrC7tNGOuhp+ 08tQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442056; x=1781046856; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=tnLxbwZwMbkVvB2Zwz0yZiGVjbTNpgk1H8ZchRPW3Lw=; b=KPZW7GHuRQRQarvLs5XqvXeH61QfLMuZQeSJXbfq5unl1279JSivbnm181Hd4VoD5H i9I9QBBHCJv173FpmONMC0wLkmV7/ck1wOQD1ZScFBhgbqMOBOwUgPyk3UjU+zpTaRj1 4DcSgVctPuFQXGiDlR/1wMhXDj1eBwllvUAMA+iOAd4rex/HR7HWlGF8UAfPd69BYVXi 5yC2UpgQQm/HmUrQ2lLyTjjp6By5+PTUtS7T3ZqaFAq6RbcnNkwFrX3RUBdva/ijTMaJ PIImE4LYPvn7Bed+dJNTfyD4TT5bubj+um11rqatQ2ljY5ZqvEANRU4Lm+lQReL2yIRC QHBQ== X-Forwarded-Encrypted: i=1; AFNElJ+UBa8oLNbId1O5UiC9N3SaERTFGpZaGPhC1b2FPLh4i2tb9zeDxTlF9MRfpl7U8r4ErJPTvgDrmGw87bc=@vger.kernel.org X-Gm-Message-State: AOJu0YxcBObXgIRHpyGVvtorN4rfNBeNMn0nwBn2F6wAPX9u0gVWbdxJ 2dzWllpT7tleapkIJmVli4V0xRahABD0IBxH1rQ12SsEhLbS/gGON16Z X-Gm-Gg: Acq92OGkQIKE0om1tfh5XjzlyyhYPaUsFW/ngOt1b+a6nVkXIsd5ez71XmlNWJAz3c6 41wNrRP4xPi44Uh7lVdP4xYZQJU2136xjZnNp5D74EotenIpfgGlRBhmXhp53HHeGtlmWhInDtM KR3Ad15ynTTyxW74IHV6fj6KqVgTIVdT4AeZ0dB3XvW644DyMkVbV3OrZSIrHv1YZDZmlg3yOxF F6Ie07egNxRsvO57dN3ug2i4s7knBI4PGbIvb2zrFUoaQDZ4Ii4NVZXgvyMtBhe+utufYPEj7nS Z8Et21hmgEMKmMtc89o1U8iVCcp9bkh9URofmDt7edC6xqXODpPfDe18I47i2umR+p6sRZx0uK7 9sC2DpIRRuWaKXlbg2PnzZMvpomS3SKzAwL4wGVHin+h2UuhgI9DJEiANz0Sngmt4osBeSIDDze TBjr86xAigHA== X-Received: by 2002:a17:903:1786:b0:2bf:3309:ecce with SMTP id d9443c01a7336-2c163db0b76mr7281915ad.28.1780442056055; Tue, 02 Jun 2026 16:14:16 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.14.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:14:15 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:03 -0400 Subject: [PATCH v3 08/15] riscv: Add Zic64b to cpufeature and hwprobe Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-8-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4586; i=docular.xu@gmail.com; h=from:subject:message-id; bh=ic3wkraCrvoYZ6pSRcfok46YiwVD8eKVuqso6BkVzl4=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHtaYUAuj5udcaV9+3F8kksMfOan5kXhKXtr2cjvVp 2nby8Q6SlkYxLgYZMUUWQ4fbcne+son2vc55w+YOaxMIEMYuDgFYCKllYwME25NXvdBIXV1yPlz 065MVtg/J8fnxBrLiaLmBjOj9Bc+XM7w3y9bwWLOX9bcybISXpP0V75SEN4vu8JlYdnOpjRnttA uBgA= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE Zic64b mandates 64-byte naturally aligned cache blocks and is a mandatory extension of the RVA22 and RVA23 profiles. Allocate a RISCV_ISA_EXT_ZIC64B id, parse "zic64b" from the ISA string with a validate callback that requires cbom/cbop/cboz cache block sizes of 64 bytes, and export it through hwprobe. Signed-off-by: Guodong Xu Reviewed-by: Andrew Jones --- v3: New patch. --- Documentation/arch/riscv/hwprobe.rst | 3 +++ arch/riscv/include/asm/hwcap.h | 1 + arch/riscv/include/uapi/asm/hwprobe.h | 1 + arch/riscv/kernel/cpufeature.c | 18 ++++++++++++++++++ arch/riscv/kernel/sys_hwprobe.c | 1 + 5 files changed, 24 insertions(+) diff --git a/Documentation/arch/riscv/hwprobe.rst b/Documentation/arch/risc= v/hwprobe.rst index 002d5046ab689..601e81f561421 100644 --- a/Documentation/arch/riscv/hwprobe.rst +++ b/Documentation/arch/riscv/hwprobe.rst @@ -425,3 +425,6 @@ The following keys are defined: * :c:macro:`RISCV_HWPROBE_EXT_B`: The B extension is supported, as defin= ed in version 1.0 of the Bit-Manipulation ISA extensions, and implies the presence of the Zba, Zbb, and Zbs sub-extensions. + * :c:macro:`RISCV_HWPROBE_EXT_ZIC64B`: The Zic64b extension is supported, + as defined in the RISC-V Profiles specification starting from commit + b1d80660 ("Updated to ratified state.") diff --git a/arch/riscv/include/asm/hwcap.h b/arch/riscv/include/asm/hwcap.h index 58523b3a1998a..36572c1ff438a 100644 --- a/arch/riscv/include/asm/hwcap.h +++ b/arch/riscv/include/asm/hwcap.h @@ -117,6 +117,7 @@ #define RISCV_ISA_EXT_ZICCAMOA 107 #define RISCV_ISA_EXT_ZICCIF 108 #define RISCV_ISA_EXT_ZA64RS 109 +#define RISCV_ISA_EXT_ZIC64B 110 =20 #define RISCV_ISA_EXT_XLINUXENVCFG 127 =20 diff --git a/arch/riscv/include/uapi/asm/hwprobe.h b/arch/riscv/include/uap= i/asm/hwprobe.h index 430dc49a82863..36ec8ab470423 100644 --- a/arch/riscv/include/uapi/asm/hwprobe.h +++ b/arch/riscv/include/uapi/asm/hwprobe.h @@ -122,6 +122,7 @@ struct riscv_hwprobe { #define RISCV_HWPROBE_EXT_ZICCRSE (1ULL << 4) #define RISCV_HWPROBE_EXT_ZA64RS (1ULL << 5) #define RISCV_HWPROBE_EXT_B (1ULL << 6) +#define RISCV_HWPROBE_EXT_ZIC64B (1ULL << 7) =20 /* Increase RISCV_HWPROBE_MAX_KEY when adding items. */ =20 diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index e0197160af6dd..79ff431768139 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -154,6 +154,23 @@ static int riscv_ext_zicbop_validate(const struct risc= v_isa_ext_data *data, return 0; } =20 +static int riscv_ext_zic64b_validate(const struct riscv_isa_ext_data *data, + const unsigned long *isa_bitmap) +{ + /* + * Zic64b mandates 64-byte naturally aligned cache blocks; cross-check the + * cbom/cbop/cboz block-size device-tree properties to avoid inconsistenc= y. + */ + if (riscv_cbom_block_size !=3D 64 || + riscv_cbop_block_size !=3D 64 || + riscv_cboz_block_size !=3D 64) { + pr_err("Zic64b detected in ISA string, disabling as the cache block size= is not 64 bytes\n"); + return -EINVAL; + } + + return 0; +} + static int riscv_ext_f_validate(const struct riscv_isa_ext_data *data, const unsigned long *isa_bitmap) { @@ -524,6 +541,7 @@ const struct riscv_isa_ext_data riscv_isa_ext[] =3D { __RISCV_ISA_EXT_SUPERSET(b, RISCV_ISA_EXT_B, riscv_b_exts), __RISCV_ISA_EXT_SUPERSET_VALIDATE(v, RISCV_ISA_EXT_V, riscv_v_exts, riscv= _ext_vector_float_validate), __RISCV_ISA_EXT_DATA(h, RISCV_ISA_EXT_H), + __RISCV_ISA_EXT_DATA_VALIDATE(zic64b, RISCV_ISA_EXT_ZIC64B, riscv_ext_zic= 64b_validate), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicbom, RISCV_ISA_EXT_ZICBOM, riscv_xli= nuxenvcfg_exts, riscv_ext_zicbom_validate), __RISCV_ISA_EXT_DATA_VALIDATE(zicbop, RISCV_ISA_EXT_ZICBOP, riscv_ext_zic= bop_validate), __RISCV_ISA_EXT_SUPERSET_VALIDATE(zicboz, RISCV_ISA_EXT_ZICBOZ, riscv_xli= nuxenvcfg_exts, riscv_ext_zicboz_validate), diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprob= e.c index dcc102bf8f183..3e80e5551ae0d 100644 --- a/arch/riscv/kernel/sys_hwprobe.c +++ b/arch/riscv/kernel/sys_hwprobe.c @@ -211,6 +211,7 @@ static void hwprobe_isa_ext1(struct riscv_hwprobe *pair, EXT_KEY(isainfo->isa, ZICCRSE, pair->value, missing); EXT_KEY(isainfo->isa, ZA64RS, pair->value, missing); EXT_KEY(isainfo->isa, B, pair->value, missing); + EXT_KEY(isainfo->isa, ZIC64B, pair->value, missing); } =20 /* Now turn off reporting features if any CPU is missing it. */ --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 939A13CF69F for ; Tue, 2 Jun 2026 23:14:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442069; cv=none; b=F/dVxXa55XSbhAEFO9fryqCIUuZQ0Ma84bYzBsiZ1PWo+yuu1L20Q2DPcfrC+uPHJvZEl2V4bZR3gvf6EZs61Df7MCdk2c36cHHhyjebzX6xmd2in5tNWoUCr6qGmoVjXxXJoQNWbZNvuQc30bwFlN+YbIOcYK1s6P6+LyVJ3ro= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442069; c=relaxed/simple; bh=hn5Y84v6I4GaSTkzERKI8t9IzJT3/S3blS9lduPRHwg=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mavEUngQtR4hGQAhhmjvoCDcHXDGquCPKiykVHB943hEw9FAkuHIbwg91EVTMoVFfRTfW3MOryCKtvBLFSuqJDqbXMph7eJwRCoHGSbR+PrCI046AnKcfSSzc40CaJmprgzoyI8BpTxHe64IXWpYuemel9I3BZ511Qdy/iXG78U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Cy8X6aU0; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Cy8X6aU0" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2c0c3184c71so21929635ad.1 for ; Tue, 02 Jun 2026 16:14:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442067; x=1781046867; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=XmtWh5mcf4mzD0yR3n/eyuF9cs7/fUbeD923xQ2EWiI=; b=Cy8X6aU0P0ikr5JggN5h5yPA+sRfEXiVuljbhB6CEf01COlF00RNRcAF7HagSobhJB LrjAgVUNiFsJv/VsqH9bt8VklvBxYlw0EAV/A822qtwyHOQar6C0HKMMu7GJIc3GDKBy l+qtD2XzJY+dHMy1Dwu3Jt/0fHBTKwkXMBe6nO2SI4t1qr7QMxMNixMdp3ALT7ezBOx3 ICq0SDjqgLzl36XsUEhjfDqEOljDfAJ10DjFeUfYUpJdVdnUP3jQleniVUn3vkrdNKhC W45/k02BW/ONzSERQoovc38Oy3WAa7AKf3Uaf4J1YvE8fjBLIpFhPRabwnxa3Y10WJnx BG8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442067; x=1781046867; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=XmtWh5mcf4mzD0yR3n/eyuF9cs7/fUbeD923xQ2EWiI=; b=Mvb5mENnue5gH20iBrNbT5x5dERQHYHIbYA2lm1xSW92O2gzmahZa1Y72YNuYmQZ2S hlmJ62Q70nQqsmaWI3Oz9lo/wmA2ePM0I19GAKbBN6Q84j4a/oq4ADayjJL/FA8V+yBE tufPc4n7m3HmLItCXaoaVr3AMpP4KogtNP78mL6dpYEgSJhOJm3lA2iED1j0Z+ZOiBm8 GHrsAOfhaJG8/0UhhMRMt+lV+I4z5JUesSoGO99NgYVHNwFdTOFmbRbpDqP3rKoqnxaO 042qqoKKXV1mP34kjZeNTqzzUjx54rY9eWt8A9rezLzJ5hlNM60M+9IOKX34bbZKlcXp zRzw== X-Forwarded-Encrypted: i=1; AFNElJ8GAhxlRWRRuZ1mW4QxE7csDWdD5flsyIpS2OVv6jq7shgGWFjZDBiubK+/tsteHcm+fhLTzZRqn/7vwq4=@vger.kernel.org X-Gm-Message-State: AOJu0Yw330c3AYxLGpgTEkiILeunCDA9Pvvp0aR+xDY7mvnSa9MGkygW Ca5miD/gU1qWLw9ZwFoSQjFDhnicZtjbVMOZNFTHe+8P5pl64GVSTcSj X-Gm-Gg: Acq92OERsok1zL84/Wwm14b4t9Nwr8qciN14yx29yGwfYe0E8VWatBOanPjumqeLOmQ 3dTeBrpV12++X9FM5R4k73QLplKDK/6nZzaeWIGqo+ovbnoej/PrTlhY8ee6992pSG2ZTEFV6As viACdR4OO04Si6km3skbMQPKl2Ud9er6yncrEPS5CJENeZLtp1vZa58UCYbs1JYFqKpYt6vEcew /qo/XQiH1QVcrIO3AOUiKTi3g0KvRNQywd2zhpvVbUAhHQKg6FftDMoQuRZ9kUjNnis1RL9c5sX GrbKw6FXiXWiRIvXRNe0B5SFR1f14HzpQUexfHQ4Qb5OJJacpSEg4U+xZrAGXi9ALkKA7Eiun5V 925SX2GeamIDfbuAfVf54PxBgRBedrqGsi9yU7+ufA/ALAbWh6bQJF8SYRuNcHvHRxKtle/hFNY +0sHjX+tbjeA== X-Received: by 2002:a17:903:b8d:b0:2bf:172d:ef7e with SMTP id d9443c01a7336-2c1644b3047mr6913055ad.34.1780442066775; Tue, 02 Jun 2026 16:14:26 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.14.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:14:26 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:04 -0400 Subject: [PATCH v3 09/15] riscv: dts: spacemit: k3: Add Zic64b ISA extension Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-9-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=6761; i=docular.xu@gmail.com; h=from:subject:message-id; bh=hn5Y84v6I4GaSTkzERKI8t9IzJT3/S3blS9lduPRHwg=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHtbeyV+9ZDQPSScKpR2ZFqLK13l1zeyJCx4bBshnN TJH/nPoKGVhEONikBVTZDl8tCV76yufaN/nnD9g5rAygQxh4OIUgInsFmT4H1y3R2LXA5HOSecX p1ieO5phIeAonnLw781Fl7WWXTslVMvw3+lp0IRNMvtbTexfvzhdJHby9Ikgw0RevbLttUe/uP3 y4gAA X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE The K3 X100 cores have 64-byte cache blocks, already described by their cbom/cbop/cboz-block-size of 64, so they implement Zic64b, a mandatory RVA23 extension. Declare it in each core's riscv,isa-extensions. Signed-off-by: Guodong Xu --- v3: New patch. --- arch/riscv/boot/dts/spacemit/k3.dtsi | 48 ++++++++++++++++++--------------= ---- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/arch/riscv/boot/dts/spacemit/k3.dtsi b/arch/riscv/boot/dts/spa= cemit/k3.dtsi index 4ac457399b583..b5aa983f0bfa1 100644 --- a/arch/riscv/boot/dts/spacemit/k3.dtsi +++ b/arch/riscv/boot/dts/spacemit/k3.dtsi @@ -35,9 +35,9 @@ cpu_0: cpu@0 { "svinval", "svnapot", "svpbmt", "za64rs", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", "zcmop", "zfa", "zfbfmin", - "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", - "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", - "zicond", "zicsr", "zifencei", "zihintntl", + "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", + "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", + "zicntr", "zicond", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zimop", "zkt", "zvbb", "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", @@ -76,9 +76,9 @@ cpu_1: cpu@1 { "svinval", "svnapot", "svpbmt", "za64rs", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", "zcmop", "zfa", "zfbfmin", - "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", - "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", - "zicond", "zicsr", "zifencei", "zihintntl", + "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", + "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", + "zicntr", "zicond", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zimop", "zkt", "zvbb", "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", @@ -117,9 +117,9 @@ cpu_2: cpu@2 { "svinval", "svnapot", "svpbmt", "za64rs", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", "zcmop", "zfa", "zfbfmin", - "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", - "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", - "zicond", "zicsr", "zifencei", "zihintntl", + "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", + "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", + "zicntr", "zicond", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zimop", "zkt", "zvbb", "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", @@ -158,9 +158,9 @@ cpu_3: cpu@3 { "svinval", "svnapot", "svpbmt", "za64rs", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", "zcmop", "zfa", "zfbfmin", - "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", - "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", - "zicond", "zicsr", "zifencei", "zihintntl", + "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", + "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", + "zicntr", "zicond", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zimop", "zkt", "zvbb", "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", @@ -199,9 +199,9 @@ cpu_4: cpu@4 { "svinval", "svnapot", "svpbmt", "za64rs", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", "zcmop", "zfa", "zfbfmin", - "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", - "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", - "zicond", "zicsr", "zifencei", "zihintntl", + "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", + "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", + "zicntr", "zicond", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zimop", "zkt", "zvbb", "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", @@ -240,9 +240,9 @@ cpu_5: cpu@5 { "svinval", "svnapot", "svpbmt", "za64rs", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", "zcmop", "zfa", "zfbfmin", - "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", - "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", - "zicond", "zicsr", "zifencei", "zihintntl", + "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", + "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", + "zicntr", "zicond", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zimop", "zkt", "zvbb", "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", @@ -281,9 +281,9 @@ cpu_6: cpu@6 { "svinval", "svnapot", "svpbmt", "za64rs", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", "zcmop", "zfa", "zfbfmin", - "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", - "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", - "zicond", "zicsr", "zifencei", "zihintntl", + "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", + "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", + "zicntr", "zicond", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zimop", "zkt", "zvbb", "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", @@ -322,9 +322,9 @@ cpu_7: cpu@7 { "svinval", "svnapot", "svpbmt", "za64rs", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", "zcmop", "zfa", "zfbfmin", - "zfh", "zfhmin", "zicbom", "zicbop", "zicboz", - "ziccamoa", "ziccif", "zicclsm", "ziccrse", "zicntr", - "zicond", "zicsr", "zifencei", "zihintntl", + "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", + "zicboz", "ziccamoa", "ziccif", "zicclsm", "ziccrse", + "zicntr", "zicond", "zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", "zimop", "zkt", "zvbb", "zvbc", "zvfbfmin", "zvfbfwma", "zvfh", "zvfhmin", "zvkb", "zvkg", "zvkn", "zvknc", --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 60FD93CF69F for ; Tue, 2 Jun 2026 23:14:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442079; cv=none; b=gSBoJjV5HeOE/qSMGtha/HHiG2ybFxOmPsQFf0GSVeQTxwecA9xAm99APzntO9hjnoK24LEn6RsCFot/3HdNFjWgUKrKoEe/BcXEkJ9FC1HVVhFvyxMm3T1Lq2HcqIZCh00FIhMyLXnl3RJ0cgJG/Kq8NHTwbzLjNeQ6uLSLEec= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442079; c=relaxed/simple; bh=Q7RYZju2TF5FEkiS6NU6Z8BhXvcsipUIIAlY+MksXC4=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=mgU3zuEGSHO3hkFYepKWJMUgN+kuZQEgTsc4uy4E68twDJ/rvAoRaN2HqVhtQkD29Vk+GLe+kIL0xoBK5qnS5xo0T1cFNnI+ejWed0LsCjEfzWX+xNyJxjpFPOkTqBXFEuW4kLFXaPzOb9oClK7ydVj1+e/ieRd6e/0H+dUKXWA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=gwHzEAxN; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="gwHzEAxN" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2bf1f074a12so50358675ad.0 for ; Tue, 02 Jun 2026 16:14:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442078; x=1781046878; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=V8Fuf4QXCppsW5bDsc2WfyDl0yodmONaopvjB2bbG7o=; b=gwHzEAxNHqclSV5Z2GJCIj6I8mz//jbFqtFv4010SDrMq8y5dasEYVT+S2nbt3HV5I HMviBIPQG9MHO1gjB/KHUjJx/oBs74WWMHH7JDqpujWhMueyUW+RCwwtXiEHIoXKAmmb ebIIfkScVF6V66tV7XgzaiFkW/HuQD+S11cRX4BdnsNs9dVGi+bNDl3H1s1S3Hxii7sB vKUr9p5/J8XZZTpY6oqyd5G5sUxToPSVYir2kOEYCHnOUDAjFwr9thNMEI//FDU3feUb 1Lg7ygsBIDUIPerbICktefCOCj6Genk9bBuaPp3JDHIKc2d2nOLxHe729KwyPXPR5yn6 kgZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442078; x=1781046878; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=V8Fuf4QXCppsW5bDsc2WfyDl0yodmONaopvjB2bbG7o=; b=RcETxbbFxpk4iXYfpjSn88BkwXr3UR8Gy5HTwFLfutzBr+0Unopz3kHRqChoYNJccu MKk0fY/ZqYMbPLhKgnjeRwNC32MdXjDb4wWdnwY20vU9O9G9GMeso3Oh/Hu0otZDqoBK geMaa/5IXPyAjk3qVExP2N1KTrdPE6ulyULqpl4VR2Hi3fwThvAWmiHzDWbFxT3dvveJ 22KF/rMdgpY19MSC8MEC/YyYbWqDvOON6DTyMuoEpjNww1Mi9GbcUTfP4TB15SWdtAQM SCSi1bdsmLD3XOCEQdFhiR8ouFIfmucuqK76gr6zdc0zl8RiyOZtku22HgqTS5Rk0M89 m+rA== X-Forwarded-Encrypted: i=1; AFNElJ+gKLCuzih4DtREanawxUg6yjFF1Z5oExkdI/hDLqiGx6RtpL48XfkTNI/9RKnHNavKGzEZY0xX6R6T4QA=@vger.kernel.org X-Gm-Message-State: AOJu0YyLQ90KlsgTI5ir7K1xNNUBOiIlT0wKcsoAtnmgW8reXXcmYJaV R84LYXUBSJFf5P9cZTkSrvPSxid7J8gKLKt+RuHqNOO2V2ZJoAOmVkXq X-Gm-Gg: Acq92OG8hhDAxgr7QNtjHUUYeHMN+5rgYT6COGUJuKE9jclqUJZtyQaU7d4O5iFCk4y FEqmsvJmDGcjbj7PAmda1/TJSmEEiDL2bUiLzWJ6khIRT4UPht9qzUuf+Mf1avdoDc8sHLyPvDM n66GilV9FjoKmNgVbD6JoERpUZDWzM3caILb0r3quz70FAiXkjllw95zoiCLFIZYlHi5IgP7rW+ BmyCgfQnGoH6bKx59coKXh9/0ujOovKbMnbr5wpBQDKwQNsOzIMfeL9QOUn5A+Bea5BCgAXTZtz NmSWo0LHeTnBR9qJhQaCs6/pZEkIvyV8CywJWOWA6XtQptbSLMTFiHwZn+TAdWQW7KDUgGofgvT uZnQPmteKE1UjKpx1FtEG/a9jjKknZMVH1F5txARjPTdeI6pwGXfrlith0o4vXZkmP7tiVsT4ye JaCy0MAzPx3Q== X-Received: by 2002:a17:902:e78b:b0:2c0:fa4e:9208 with SMTP id d9443c01a7336-2c163a2bb94mr7334255ad.14.1780442077667; Tue, 02 Jun 2026 16:14:37 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.14.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:14:37 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:05 -0400 Subject: [PATCH v3 10/15] riscv: dts: spacemit: k1: Add Zic64b ISA extension Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-10-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=10074; i=docular.xu@gmail.com; h=from:subject:message-id; bh=Q7RYZju2TF5FEkiS6NU6Z8BhXvcsipUIIAlY+MksXC4=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHtYKyZl+nmwaId+LzlkfeXVeTUokc9GleR9TWLkCm ZSm/T3eUcrCIMbFICumyHL4aEv21lc+0b7POX/AzGFlAhnCwMUpABOpWMnIcHbdlCcKC308t586 6bTzYMKFtmn5n8wSl74IuC7m/FTgeDzD/7Kvh7K5/p3YE/vWo9extXFm394pDUWNp05MCjtSqjz NjBkA X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE The K1 X60 cores have 64-byte cache blocks, described by their cbom/cbop/cboz-block-size of 64, so they implement Zic64b. Declare it in each core's riscv,isa-extensions and in the deprecated riscv,isa string. Signed-off-by: Guodong Xu --- v3: New patch. --- arch/riscv/boot/dts/spacemit/k1.dtsi | 80 ++++++++++++++++++--------------= ---- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/arch/riscv/boot/dts/spacemit/k1.dtsi b/arch/riscv/boot/dts/spa= cemit/k1.dtsi index f0bad6855c970..e6fc684ad3898 100644 --- a/arch/riscv/boot/dts/spacemit/k1.dtsi +++ b/arch/riscv/boot/dts/spacemit/k1.dtsi @@ -54,12 +54,12 @@ cpu_0: cpu@0 { compatible =3D "spacemit,x60", "riscv"; device_type =3D "cpu"; reg =3D <0>; - riscv,isa =3D "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zi= fencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_sv= inval_svnapot_svpbmt"; + riscv,isa =3D "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_zicntr_zicond_z= icsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_= sstc_svinval_svnapot_svpbmt"; riscv,isa-base =3D "rv64i"; - riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zicbo= m", - "zicbop", "zicboz", "zicntr", "zicond", "zicsr", - "zifencei", "zihintpause", "zihpm", "zfh", "zba", - "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zic64= b", + "zicbom", "zicbop", "zicboz", "zicntr", "zicond", + "zicsr", "zifencei", "zihintpause", "zihpm", "zfh", + "zba", "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; riscv,cbom-block-size =3D <64>; riscv,cbop-block-size =3D <64>; @@ -84,12 +84,12 @@ cpu_1: cpu@1 { compatible =3D "spacemit,x60", "riscv"; device_type =3D "cpu"; reg =3D <1>; - riscv,isa =3D "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zi= fencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_sv= inval_svnapot_svpbmt"; + riscv,isa =3D "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_zicntr_zicond_z= icsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_= sstc_svinval_svnapot_svpbmt"; riscv,isa-base =3D "rv64i"; - riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zicbo= m", - "zicbop", "zicboz", "zicntr", "zicond", "zicsr", - "zifencei", "zihintpause", "zihpm", "zfh", "zba", - "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zic64= b", + "zicbom", "zicbop", "zicboz", "zicntr", "zicond", + "zicsr", "zifencei", "zihintpause", "zihpm", "zfh", + "zba", "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; riscv,cbom-block-size =3D <64>; riscv,cbop-block-size =3D <64>; @@ -114,12 +114,12 @@ cpu_2: cpu@2 { compatible =3D "spacemit,x60", "riscv"; device_type =3D "cpu"; reg =3D <2>; - riscv,isa =3D "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zi= fencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_sv= inval_svnapot_svpbmt"; + riscv,isa =3D "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_zicntr_zicond_z= icsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_= sstc_svinval_svnapot_svpbmt"; riscv,isa-base =3D "rv64i"; - riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zicbo= m", - "zicbop", "zicboz", "zicntr", "zicond", "zicsr", - "zifencei", "zihintpause", "zihpm", "zfh", "zba", - "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zic64= b", + "zicbom", "zicbop", "zicboz", "zicntr", "zicond", + "zicsr", "zifencei", "zihintpause", "zihpm", "zfh", + "zba", "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; riscv,cbom-block-size =3D <64>; riscv,cbop-block-size =3D <64>; @@ -144,12 +144,12 @@ cpu_3: cpu@3 { compatible =3D "spacemit,x60", "riscv"; device_type =3D "cpu"; reg =3D <3>; - riscv,isa =3D "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zi= fencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_sv= inval_svnapot_svpbmt"; + riscv,isa =3D "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_zicntr_zicond_z= icsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_= sstc_svinval_svnapot_svpbmt"; riscv,isa-base =3D "rv64i"; - riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zicbo= m", - "zicbop", "zicboz", "zicntr", "zicond", "zicsr", - "zifencei", "zihintpause", "zihpm", "zfh", "zba", - "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zic64= b", + "zicbom", "zicbop", "zicboz", "zicntr", "zicond", + "zicsr", "zifencei", "zihintpause", "zihpm", "zfh", + "zba", "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; riscv,cbom-block-size =3D <64>; riscv,cbop-block-size =3D <64>; @@ -174,12 +174,12 @@ cpu_4: cpu@4 { compatible =3D "spacemit,x60", "riscv"; device_type =3D "cpu"; reg =3D <4>; - riscv,isa =3D "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zi= fencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_sv= inval_svnapot_svpbmt"; + riscv,isa =3D "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_zicntr_zicond_z= icsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_= sstc_svinval_svnapot_svpbmt"; riscv,isa-base =3D "rv64i"; - riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zicbo= m", - "zicbop", "zicboz", "zicntr", "zicond", "zicsr", - "zifencei", "zihintpause", "zihpm", "zfh", "zba", - "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zic64= b", + "zicbom", "zicbop", "zicboz", "zicntr", "zicond", + "zicsr", "zifencei", "zihintpause", "zihpm", "zfh", + "zba", "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; riscv,cbom-block-size =3D <64>; riscv,cbop-block-size =3D <64>; @@ -204,12 +204,12 @@ cpu_5: cpu@5 { compatible =3D "spacemit,x60", "riscv"; device_type =3D "cpu"; reg =3D <5>; - riscv,isa =3D "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zi= fencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_sv= inval_svnapot_svpbmt"; + riscv,isa =3D "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_zicntr_zicond_z= icsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_= sstc_svinval_svnapot_svpbmt"; riscv,isa-base =3D "rv64i"; - riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zicbo= m", - "zicbop", "zicboz", "zicntr", "zicond", "zicsr", - "zifencei", "zihintpause", "zihpm", "zfh", "zba", - "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zic64= b", + "zicbom", "zicbop", "zicboz", "zicntr", "zicond", + "zicsr", "zifencei", "zihintpause", "zihpm", "zfh", + "zba", "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; riscv,cbom-block-size =3D <64>; riscv,cbop-block-size =3D <64>; @@ -234,12 +234,12 @@ cpu_6: cpu@6 { compatible =3D "spacemit,x60", "riscv"; device_type =3D "cpu"; reg =3D <6>; - riscv,isa =3D "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zi= fencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_sv= inval_svnapot_svpbmt"; + riscv,isa =3D "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_zicntr_zicond_z= icsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_= sstc_svinval_svnapot_svpbmt"; riscv,isa-base =3D "rv64i"; - riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zicbo= m", - "zicbop", "zicboz", "zicntr", "zicond", "zicsr", - "zifencei", "zihintpause", "zihpm", "zfh", "zba", - "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zic64= b", + "zicbom", "zicbop", "zicboz", "zicntr", "zicond", + "zicsr", "zifencei", "zihintpause", "zihpm", "zfh", + "zba", "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; riscv,cbom-block-size =3D <64>; riscv,cbop-block-size =3D <64>; @@ -264,12 +264,12 @@ cpu_7: cpu@7 { compatible =3D "spacemit,x60", "riscv"; device_type =3D "cpu"; reg =3D <7>; - riscv,isa =3D "rv64imafdcbv_zicbom_zicbop_zicboz_zicntr_zicond_zicsr_zi= fencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_sstc_sv= inval_svnapot_svpbmt"; + riscv,isa =3D "rv64imafdcbv_zic64b_zicbom_zicbop_zicboz_zicntr_zicond_z= icsr_zifencei_zihintpause_zihpm_zfh_zba_zbb_zbc_zbs_zkt_zvfh_zvkt_sscofpmf_= sstc_svinval_svnapot_svpbmt"; riscv,isa-base =3D "rv64i"; - riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zicbo= m", - "zicbop", "zicboz", "zicntr", "zicond", "zicsr", - "zifencei", "zihintpause", "zihpm", "zfh", "zba", - "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", + riscv,isa-extensions =3D "i", "m", "a", "f", "d", "c", "b", "v", "zic64= b", + "zicbom", "zicbop", "zicboz", "zicntr", "zicond", + "zicsr", "zifencei", "zihintpause", "zihpm", "zfh", + "zba", "zbb", "zbc", "zbs", "zkt", "zvfh", "zvkt", "sscofpmf", "sstc", "svinval", "svnapot", "svpbmt"; riscv,cbom-block-size =3D <64>; riscv,cbop-block-size =3D <64>; --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pl1-f178.google.com (mail-pl1-f178.google.com [209.85.214.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 74E653D0BE5 for ; Tue, 2 Jun 2026 23:14:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442091; cv=none; b=nlP/wIed10zlR47K0nt6mbXs+rlH8nBaUSDOFPdfzafz9yWatcxwVliO2p6mp5wQTS1YFhEyXXyLbh/mPEyJpAE10Gz5qAmcaGHeq2IRR76+dhCMgGL9dH4H34ph/5nT6Q6/PHZRD2SuS8E0NZINCQoJ9xqNlXpgiQj33Thz+Uc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442091; c=relaxed/simple; bh=nb7NVTLwEPfSfdQZ6GxDJz+A4OB+DaiRTtoN5drlF7k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=nDGGBZO+a7y8HLV9tZ/MbfZCQey1YFgdTTzK+I6PXh+iLPZ48vTrgOkW6sUFUBIthjAT9Q1ri817vMT1RJofJ4qIhUG5W+3lnW8mcKEafxfMp/grHBTtX6kUP6ZgKPC1lE9JEHAvDAK48m5Bw5ZFqG0Afl2bCkDVdLRkmlZFAUk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OnCexg56; arc=none smtp.client-ip=209.85.214.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OnCexg56" Received: by mail-pl1-f178.google.com with SMTP id d9443c01a7336-2c0c379e8ffso21707785ad.3 for ; Tue, 02 Jun 2026 16:14:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442089; x=1781046889; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=X/ML8+hzJH2M7AcSqLjLBGZwHewuGslxEK4RlYrYBpQ=; b=OnCexg56mF4ND7g/tLpDr5QY1e1I0q9ULETwEFABvc6w1xsyH85NKrW6SyRLvKDj9J RjhzIgIzgygEPsiTgIkGy+vf/quy4lmStSZvcktSjix3ef6Hx8NX0p9wdmL3Pvsd5r/o ZcsO5pimNlN/RkDTCPgvMFDaKzDIkMCd35yTLe+Tco1WtanmZdYar5rx8aXbONT8BafL 4zIEDIS83oI8AnKFnlOIoh+eACBQyf95eL7PyhbP0qCfABDC6yyfuxMpFkMylFwtu7nT 8dUqQpFCoonPGQuxq23HXYIF7Txe1Ub6WVIRuy9gmvwAyMzWGVTHQnuZnUpccw0uT2tM 97bA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442089; x=1781046889; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=X/ML8+hzJH2M7AcSqLjLBGZwHewuGslxEK4RlYrYBpQ=; b=I+8t0HF83UPjTZ2GDWXiTTp4WrelrHQviTC7Hy1XZS0WR58/1uCNqh5PKnK023SU9a UvCcyU+eBQWMdTYUXHx8RrwhEIbJ4GsYe5yxBlxnMTAtjV3hzMkN8T1YN3mGuVS95CvA 35WgwtY6qix7fT8togrjAve/lmHW8bK/07PVua6vajiTIHQwchGCmSDhiXUFZy4KTF9M lWzzyffQhP6ZH2N88VxVdYHivI9UC3yN8+pHPSyxPSI77Ou/W88Pgn2TkAPW2otYCRs3 17P+qon2kNttxi3/PRCI8/lfsRat6PG4cELvK42A9GVcb4VJuPVQXi6t9EnC17ScCWeh 20Rw== X-Forwarded-Encrypted: i=1; AFNElJ+milPSdPBXLozBgxAGGWHYl2qAOjznjkoK6Rf6lsWBklNkQtoG8X4wh+2oD2z9coKakNB66stYJDYGblE=@vger.kernel.org X-Gm-Message-State: AOJu0Yzqy9nqb+pemw4cuFISOqNWBwDQ++HuovRXZUFhIMPRr5NTCqFx mg33aasW7RKX1mtZtTVfWAtjBAYSWP4uqs2zYQ9yoiA0CfLlj7B4nbtT X-Gm-Gg: Acq92OFdmPrzGRKS8yRQfyYDJwSTf/mno46+HUO3WsS3U9M3nZZ3ZjQakZlpiUn6P8k F2PcXCMvX3FKzW2B5Pl9J9C7I5ieSTuWx4xoAgzMZrYX1SuB2mZiNSeCi7k48tvO94lS+olr2KO twgM25BTbM5RvyvqmK951HWt2w96AHf2uT3mP8QmIn4espa5O9U10Yis4Kz5lnC3Huad1oKrnET US1iNzNOVuwQ7TrWnmy1ozQDseqSU7dBFUImkqWOaepaVBAHmadyyae5Lc2j9g8ORrloPcUx57a cs0dNvcq09WNz2IZLUX8SyWB5c6tf519+zhSdk2y3eGZ84I/JbQAffSNPbCv0wxJsbvfrJcB91J QnXvGRSq8hbql98q5I9ZoN+44adjFxw6sSI5ter61DW3w+NZf6v0YH/HuLi990tUi6TNNwZClkr frqTeK7l9t0w== X-Received: by 2002:a17:903:4b50:b0:2b2:5314:e96a with SMTP id d9443c01a7336-2c1640b772emr6249075ad.34.1780442088632; Tue, 02 Jun 2026 16:14:48 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.14.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:14:48 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:06 -0400 Subject: [PATCH v3 11/15] riscv: dts: sophgo: sg2044: Add Zic64b ISA extension Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-11-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=28669; i=docular.xu@gmail.com; h=from:subject:message-id; bh=nb7NVTLwEPfSfdQZ6GxDJz+A4OB+DaiRTtoN5drlF7k=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHjbN82wJql8S53/eETXVQSYz8Iph3a9p3Bn+Z/s/r rVv/tvfUcrCIMbFICumyHL4aEv21lc+0b7POX/AzGFlAhnCwMUpABMxWczwP+fs3IPRF+9cecnV wOkQX1jdtUTg+fMpjEtehjfbxt9/wc3I8N6r4+aBuarOOvIxH/34mCaseraP62Pf3XOKyiE5117 dYwQA X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE The SG2044 cores have 64-byte cache blocks, described by their cbom/cbop/cboz-block-size of 64, so they implement Zic64b. Declare it in each core's riscv,isa-extensions. Signed-off-by: Guodong Xu Acked-by: Inochi Amaoto --- v3: New patch. --- arch/riscv/boot/dts/sophgo/sg2044-cpus.dtsi | 128 ++++++++++++++----------= ---- 1 file changed, 64 insertions(+), 64 deletions(-) diff --git a/arch/riscv/boot/dts/sophgo/sg2044-cpus.dtsi b/arch/riscv/boot/= dts/sophgo/sg2044-cpus.dtsi index 3135409c21492..2ac4a41bbc3a7 100644 --- a/arch/riscv/boot/dts/sophgo/sg2044-cpus.dtsi +++ b/arch/riscv/boot/dts/sophgo/sg2044-cpus.dtsi @@ -31,7 +31,7 @@ cpu0: cpu@0 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -67,7 +67,7 @@ cpu1: cpu@1 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -103,7 +103,7 @@ cpu2: cpu@2 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -139,7 +139,7 @@ cpu3: cpu@3 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -175,7 +175,7 @@ cpu4: cpu@4 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -211,7 +211,7 @@ cpu5: cpu@5 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -247,7 +247,7 @@ cpu6: cpu@6 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -283,7 +283,7 @@ cpu7: cpu@7 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -319,7 +319,7 @@ cpu8: cpu@8 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -355,7 +355,7 @@ cpu9: cpu@9 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -391,7 +391,7 @@ cpu10: cpu@10 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -427,7 +427,7 @@ cpu11: cpu@11 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -463,7 +463,7 @@ cpu12: cpu@12 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -499,7 +499,7 @@ cpu13: cpu@13 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -535,7 +535,7 @@ cpu14: cpu@14 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -571,7 +571,7 @@ cpu15: cpu@15 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -607,7 +607,7 @@ cpu16: cpu@16 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -643,7 +643,7 @@ cpu17: cpu@17 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -679,7 +679,7 @@ cpu18: cpu@18 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -715,7 +715,7 @@ cpu19: cpu@19 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -751,7 +751,7 @@ cpu20: cpu@20 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -787,7 +787,7 @@ cpu21: cpu@21 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -823,7 +823,7 @@ cpu22: cpu@22 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -859,7 +859,7 @@ cpu23: cpu@23 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -895,7 +895,7 @@ cpu24: cpu@24 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -931,7 +931,7 @@ cpu25: cpu@25 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -967,7 +967,7 @@ cpu26: cpu@26 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1003,7 +1003,7 @@ cpu27: cpu@27 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1039,7 +1039,7 @@ cpu28: cpu@28 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1075,7 +1075,7 @@ cpu29: cpu@29 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1111,7 +1111,7 @@ cpu30: cpu@30 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1147,7 +1147,7 @@ cpu31: cpu@31 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1183,7 +1183,7 @@ cpu32: cpu@32 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1219,7 +1219,7 @@ cpu33: cpu@33 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1255,7 +1255,7 @@ cpu34: cpu@34 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1291,7 +1291,7 @@ cpu35: cpu@35 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1327,7 +1327,7 @@ cpu36: cpu@36 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1363,7 +1363,7 @@ cpu37: cpu@37 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1399,7 +1399,7 @@ cpu38: cpu@38 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1435,7 +1435,7 @@ cpu39: cpu@39 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1471,7 +1471,7 @@ cpu40: cpu@40 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1507,7 +1507,7 @@ cpu41: cpu@41 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1543,7 +1543,7 @@ cpu42: cpu@42 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1579,7 +1579,7 @@ cpu43: cpu@43 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1615,7 +1615,7 @@ cpu44: cpu@44 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1651,7 +1651,7 @@ cpu45: cpu@45 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1687,7 +1687,7 @@ cpu46: cpu@46 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1723,7 +1723,7 @@ cpu47: cpu@47 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1759,7 +1759,7 @@ cpu48: cpu@48 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1795,7 +1795,7 @@ cpu49: cpu@49 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1831,7 +1831,7 @@ cpu50: cpu@50 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1867,7 +1867,7 @@ cpu51: cpu@51 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1903,7 +1903,7 @@ cpu52: cpu@52 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1939,7 +1939,7 @@ cpu53: cpu@53 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -1975,7 +1975,7 @@ cpu54: cpu@54 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2011,7 +2011,7 @@ cpu55: cpu@55 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2047,7 +2047,7 @@ cpu56: cpu@56 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2083,7 +2083,7 @@ cpu57: cpu@57 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2119,7 +2119,7 @@ cpu58: cpu@58 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2155,7 +2155,7 @@ cpu59: cpu@59 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2191,7 +2191,7 @@ cpu60: cpu@60 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2227,7 +2227,7 @@ cpu61: cpu@61 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2263,7 +2263,7 @@ cpu62: cpu@62 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", @@ -2299,7 +2299,7 @@ cpu63: cpu@63 { "svinval", "svnapot", "svpbmt", "zawrs", "zba", "zbb", "zbc", "zbs", "zca", "zcb", "zcd", - "zfa", "zfbfmin", "zfh", "zfhmin", + "zfa", "zfbfmin", "zfh", "zfhmin", "zic64b", "zicbom", "zicbop", "zicboz", "ziccrse", "zicntr", "zicond","zicsr", "zifencei", "zihintntl", "zihintpause", "zihpm", --=20 2.43.0 From nobody Mon Jun 8 08:32:12 2026 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 91AC23D1CA7 for ; Tue, 2 Jun 2026 23:15:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442101; cv=none; b=G1FKLrBVWSvSqPx/FpBZ9kb9HaHSCc+Gbr0DYGGzDu3fa4xvi3036a0if6y463psmYu7bTOMwXTmh5IfLf+oyLOQugNjUn0eJ4f5j4vPuGmp4Hk179g5PCHpDK0KYHs4ib1JicjrkxP5Munzf5rh5eNN/wvPWMNgRGuTN6AWQcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442101; c=relaxed/simple; bh=tvhH0zhqIk8afs9rDuWoi/YmPHardg/YTAjvWDHKFDM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=Pew5BibOUEs5AG1TeHI5TSTByn3v7kwC8GKYv86b+vsDgVuWxOeCHJcJW05Iv3rWPjuqOn8u8hzrcxU0zzc9qySEQgVPHpTa7d5WBjcKe1t6wXrJZRPeodiEuNyYV58hM2uLxZuyKrjUrhXSV1lICRAVjq1vAwLCex8BknzWOzY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mIu9obkX; arc=none smtp.client-ip=209.85.216.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mIu9obkX" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-36b7b7b7a80so37415a91.1 for ; Tue, 02 Jun 2026 16:15:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442100; x=1781046900; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=7boHfA/wFrzsz1sM7I2UAXGjLvkEYWGhZgOkDT/r/jQ=; b=mIu9obkXctdRPWMLpieHtxU5GC2buiKGV2RExejH9FKPguZyrNyGTZ960qcyljvZqF iWA8yApg8axJ364z/CurCnxv9nrOGFw5sDUukNYxzPRbFKiQ2Bd+Cy1Xx+6FpNcqxLna UFtXbTqpsCSdLvLjiU8VjFe7xqGRDRLy0olfOd9VAfPNsNDVONhbthiXEHuqlw4p9Vom sMk9EDAey+fW3cpAcLNOy+qkg1upsGhkXT2HSaVNik7DjRxSI+bqEUDKdMR7Y2yguMAW O4jmBlmOrVwJR08Up4Lrn8/HhqNDbgEGsBKaJo7gXyInat9rUZEJQkx5WhAVerqmVOzS elqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442100; x=1781046900; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=7boHfA/wFrzsz1sM7I2UAXGjLvkEYWGhZgOkDT/r/jQ=; b=QxN1218K9sV8HNIkTHWpMqAa9zCAh0B4ZwlskrfiC7yJjLcpK1jeGp5PTSSO5pktkz d3dK0FzAOvy33+kFI5VDeOyssfYBm/tRHh3IybL/mWNDwWIJxtlM666NgGPv5+YGdtGs KqHYOxAr/OE7xTwK+n0C8KxNzJPz1OPoYmBeaEK/B47a7KnPwKCMHKyEnOTNq/1udF5O uBQ0ZnRrHfATYwD40e2uuEcAvWtW6CXYICWw/cRkmgE8mQrO5d9VUmLLWPttjYZYO71X 9x868tlzJhPGE8BVG6dqgnXQ5DIdWnArK9WfLNIvdG1dUJgkgdgdAGKSzOIHzDsXKDVf WPeA== X-Forwarded-Encrypted: i=1; AFNElJ8qON3BmhTFOC2nE3VITphReVNOvaL0waQFMUkzsm/Iwsc17aL9VMF1EQBmx3h53dyxLDvLO+zQTjPt03w=@vger.kernel.org X-Gm-Message-State: AOJu0YwJii6L+tSVNB98r9XNrtgkI4jFartHp6VmImsVBt4WRrGLtFhF FVd45lVQQcqkf8ocL26N/2kcEl82bPOgdaMAwfWGQSV8RBRRgEe70VNG X-Gm-Gg: Acq92OHPWDrrI5XTSBx9QU1AG8fZx9mJk4P7Fh5biZhwsXJe1CaOINjNQ/Xxv+6sIgI paGHF6lYEXC0M4gkfP9xqCC1p5zJR7jW6Ox9jImSwXA57XNe+K4543OcRBSk/rtykIXqBsTKNxn Y6J1yhBRGZG7f3cN3IabeSCS7qS3EbYVETOcwOf3yH6DPtchHW98vzhQFPtxjWLBFmQQ4wcm+am AnB2KKmHd6mmgN2jI0lzkKKwa5FHI8/kORBaoo4cYlV6Kx9OIQ1J0ju4Gst1jsm7G6ciHfKWpDX nXX/JulvvOBtFlmyWmsTcPzINu6NYZz3IIdpDz8HCWdfwbtrrtyUU39R+zz627NjxkcZO4XF2D0 OusCo/588fneKYVvml+/kNxCkIsyNccGUSKmyx0opI7mup6ccRq/VG26R3TlvGydhTEte7GIZDb FqwZK5abo/Og== X-Received: by 2002:a17:903:37ce:b0:2c0:d29b:34ff with SMTP id d9443c01a7336-2c1646eaeacmr5471065ad.10.1780442099816; Tue, 02 Jun 2026 16:14:59 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.14.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:14:59 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:07 -0400 Subject: [PATCH v3 12/15] riscv: Add a getter for user PMLEN support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-12-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1911; i=docular.xu@gmail.com; h=from:subject:message-id; bh=EL8rlxjtR8czox+vDhBwL1idMRjEpfUrJqNmOC0hv58=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHrZY9+q9B3v8ZK6p7otLtTvI4VC+6oT7t0uLhDc13 /XllYvtKGVhEONikBVTZDl8tCV76yufaN/nnD9g5rAygQxh4OIUgIm4SzEyzDZ3u9ASoOlvfSuw pOCJRaxy6cHlb+Zqq85+p/fB6qJvGyPD/E0qV+YFOtwqmPx9rvh/8bKo3NgHqXcrN6WX3/cPMJn PCwA= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE From: Andrew Jones Querying whether a given user PMLEN is supported is needed for RVA23U64 base detection from outside arch/riscv/kernel/process.c. Add riscv_have_user_pmlen() to expose this. Link: https://lore.kernel.org/linux-riscv/rfuwa7a3ebe76udmnwyrssjy7shkkgxnt= vhwzn6oquysj4tuyp@xzvpylcfhz53/ Signed-off-by: Andrew Jones [Guodong: replace exported booleans with getter per Andrew's suggestion] Signed-off-by: Guodong Xu --- v3: No change. v2: Add a getter for user PMLEN. --- arch/riscv/include/asm/processor.h | 4 ++++ arch/riscv/kernel/process.c | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/arch/riscv/include/asm/processor.h b/arch/riscv/include/asm/pr= ocessor.h index 812517b2cec13..febf51e127f70 100644 --- a/arch/riscv/include/asm/processor.h +++ b/arch/riscv/include/asm/processor.h @@ -214,6 +214,10 @@ long set_tagged_addr_ctrl(struct task_struct *task, un= signed long arg); long get_tagged_addr_ctrl(struct task_struct *task); #define SET_TAGGED_ADDR_CTRL(arg) set_tagged_addr_ctrl(current, arg) #define GET_TAGGED_ADDR_CTRL() get_tagged_addr_ctrl(current) + +bool riscv_have_user_pmlen(u8 len); +#else +static inline bool riscv_have_user_pmlen(u8 len) { return false; } #endif =20 #endif /* __ASSEMBLER__ */ diff --git a/arch/riscv/kernel/process.c b/arch/riscv/kernel/process.c index b2df7f72241a5..5d9cb108a6232 100644 --- a/arch/riscv/kernel/process.c +++ b/arch/riscv/kernel/process.c @@ -302,6 +302,18 @@ enum { static bool have_user_pmlen_7; static bool have_user_pmlen_16; =20 +bool riscv_have_user_pmlen(u8 len) +{ + switch (len) { + case PMLEN_7: + return have_user_pmlen_7; + case PMLEN_16: + return have_user_pmlen_16; + default: + return false; + } +} + /* * Control the relaxed ABI allowing tagged user addresses into the kernel. */ --=20 2.43.0 From nobody Mon Jun 8 08:32:13 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E6EB3CD8C5 for ; Tue, 2 Jun 2026 23:15:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442113; cv=none; b=nd/4irBjpqK7HiASLM+J9LmWv4Ugo3+oVh5k3Mz8T7qsJCaDzoRrWmwQIaV3Q2hrZFX2S6ErDubikoi0Xy+fmHobvNkpJE04eAZAaDvgkDoyHncpQrBAeR3qlTSTPuZIu7UIEDR5lB/o6qm0WK7CZZz9tIUXZNAEh4eVv/DMfHk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442113; c=relaxed/simple; bh=tZ/CiPcUsZvtBR97R58s9oCTI1Bte0oaCzSODfd3jpM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=O6+o3QKeSY4wxDBi+GuouAgLojGXSZBs0ZLeHUSSVNKSv9pC+K5B83/yDfDgdHr9+IU3IEOs9AYo6Sg5p6cMCgcpKeGuyhg4TN+ZRfwGfpAqMqhAUIr2dRoMsdbpdeoMrX3hFwzfgr025o0oPkJdcC35zt699IG00XcysZ1aM7s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=o6jMY648; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="o6jMY648" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2c0c3184c71so21931145ad.1 for ; Tue, 02 Jun 2026 16:15:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442112; x=1781046912; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=4UKSxPZqE0keejMk0VWDVENbRB8BR+XN3og3EZcymsU=; b=o6jMY648Um3oN3aiBT/aN4j3aFRJEXrqra+nosSzroAq5uPvQEUcBpz/jehUd99aeW lHDe62N96rFhM2xRNX3z1p0q+2NW/TMPXtUa/bGXA70PJqxJGbUAPCZTOOeTYT6GFLRf /WYMRU7AjUBZ+knsu3o3yMATe6IsfLe5VETuJp1oczYgp8U5z83JZnKYg+wBBTk+Zllg mG1P+Wtr1gktWCWMxeQUlLSui79CwLrnxS2v8h0mzvGXkqB/kFgpZdRhNkH6NSW67NQ9 PnBeG9r2B8DVKLlDL/sLB3Y5ZBd7Zcy9Szd4ieKHySMt/H41Zhl4SXgenjyf1kZ9rSdb n+FA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442112; x=1781046912; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4UKSxPZqE0keejMk0VWDVENbRB8BR+XN3og3EZcymsU=; b=X8QaQEdAZZ4GM+vNfpN+htMkgi1wu1b9OQIqjl+CNP9gPKIWp0cJWAtQvOIZtP2zkf LN4oufPIgbAtSOBmor2r9s2o1TwBrb09uxOAJKei6PdYXd8PNy7duwhmiFs0WYjgOrb0 H9yWW+2qugPIXtmlm0XvMosdJYcRd6NsZhUcIK5ZYdfUNt7PjjUw5SUXlMW9D5euXIym kCzefyI0SdDm3GayxVCuI7ikEetROC0DBzg8pD95CXJTRa0ITFqB3nrrVmTzz+aYNkcj A2Cn2xJNPCCIRUjk8nGi+TXRzakU1Mfyf35eW6lT5hOCdbmjExNy3jd44I+UokTef+wP kcwQ== X-Forwarded-Encrypted: i=1; AFNElJ+fzKpI71pZ4OoU/TEPX46zpczEVts8I3TvnyMsganTJW+QYrkrJ2SBnS6g3d949VfWccFcYyOqbIQLUgo=@vger.kernel.org X-Gm-Message-State: AOJu0YzCldaYTSnP48xznVlr994W354B3ofAA1Z9cBeo78OPNL0NxO/v HdLstixXfbaRuNavJ8z7MeM8YhZ9j8Cw5R+vDGMRKA7uCjzwDbAou6F/ X-Gm-Gg: Acq92OEMLBp3Wy47+dB8YD+/xtgMEKiEXuI/iq808Yv2gZDRZrOK5aM8Qww0WUwCN1e eBTYQwZu/N8gBTUXdWIGSFe5QFzkbQWHIt433bde4szk5BLCy2lz+WqQ35zTfoSTIfTyXp6EGhV +ZdRgU5BLZMeoJKGTE+V0H6/COGkeuwi4yV9bpHUOhd4k4jgGTaiHWCwUYgSfkzZDDQcP9UXOLw yCXuZWWsmRPt+Z0p408p3esFXQ3Fy2YhFbz8USbQ/jCPdBZn4P0borC7V+9fD1VBJhNMlaMJPPw bQk8PtCzLAerANfwYBd4wSWrmsJi3hXjh7dyD1Z6mxGv0CrbcdNn4bSbdQ0N0qjOS9Xou1/gUDW ffWAfD3AOpxiALhrzx76ZR6KjqjLzK5eZD32U5HWGlM+OT/beYXUrh2nj/MOnlrKCFPpPWzNXKm iZW3taf3l1Cg== X-Received: by 2002:a17:902:c946:b0:2c0:c3ac:4ae6 with SMTP id d9443c01a7336-2c163fac80cmr7638215ad.19.1780442110481; Tue, 02 Jun 2026 16:15:10 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.15.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:15:10 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:08 -0400 Subject: [PATCH v3 13/15] riscv: cpufeature: Introduce ISA bases bitmap and rva23u64 detection Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-13-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=5841; i=docular.xu@gmail.com; h=from:subject:message-id; bh=tZ/CiPcUsZvtBR97R58s9oCTI1Bte0oaCzSODfd3jpM=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHraPLXPmpXIEPhB+/Gib1PlNR0K6Hk7843AzqHBdx NRb0v3MHaUsDGJcDLJiiiyHj7Zkb33lE+37nPMHzBxWJpAhDFycAjCRw1kM/z11PpzaICMkPeVW ddw6Sz4ObisRY++ezaLPfa82eRh9OsHwP81i0/VjrCEFZ/P4+Vl/xR9gD5Hc+Uq/gn1TxhPHN9v 1+QA= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE Introduce a per-hart and host-wide bitmap of conformant ISA "bases" (named profile-class sets such as IMA and RVA23U64), computed at init time by riscv_init_isa_bases(). Register riscv_init_isa_bases() as a subsys_initcall so it executes after core_initcall(tagged_addr_init), which probes senvcfg.PMM and populates have_user_pmlen_*. Without that ordering, riscv_have_user_pmlen(7) would still return its default false and the RVA23U64 detection path would always bail. Consider this as the cache that subsequent consumers (hwprobe's RVA23U64 base behavior bit, /proc/cpuinfo's "isa bases" lines, etc.) can read without recomputing. System-wide consistency are ensured. Signed-off-by: Andrew Jones Signed-off-by: Guodong Xu --- v3: - Add a blank line before the subsys_initcall() registration (Andrew). - Set the local ext_mask with __set_bit() and test the mandate set with !bitmap_subset() (Sashiko). - Require the Zic64b ISA extension in the RVA23U64 mask, instead of open-coded cache block-size check. (New, thoughts from Andrew) v2: - Implement riscv_init_isa_bases() that runs at system init time, after tagged_addr_init() populates have_user_pmlen_*. - Split RVA23S64 placeholder into a future patch. --- arch/riscv/include/asm/cpufeature.h | 14 ++++++ arch/riscv/kernel/cpufeature.c | 90 +++++++++++++++++++++++++++++++++= ++++ 2 files changed, 104 insertions(+) diff --git a/arch/riscv/include/asm/cpufeature.h b/arch/riscv/include/asm/c= pufeature.h index 739fcc84bf7b2..facc31b2960c6 100644 --- a/arch/riscv/include/asm/cpufeature.h +++ b/arch/riscv/include/asm/cpufeature.h @@ -25,10 +25,24 @@ struct riscv_cpuinfo { unsigned long mimpid; }; =20 +enum { + RISCV_ISA_BASE_IMA, + RISCV_ISA_BASE_RVA23U64, + RISCV_NR_ISA_BASES, +}; + +/** + * struct riscv_isainfo - per-hart ISA state + * @isa: bitmap of ISA extensions this hart implements + * @isa_bases: bitmap of profile bases this hart conforms to + */ struct riscv_isainfo { DECLARE_BITMAP(isa, RISCV_ISA_EXT_MAX); + DECLARE_BITMAP(isa_bases, RISCV_NR_ISA_BASES); }; =20 +extern unsigned long riscv_isa_bases[BITS_TO_LONGS(RISCV_NR_ISA_BASES)]; + DECLARE_PER_CPU(struct riscv_cpuinfo, riscv_cpuinfo); =20 extern const struct seq_operations cpuinfo_op; diff --git a/arch/riscv/kernel/cpufeature.c b/arch/riscv/kernel/cpufeature.c index 79ff431768139..15b708da98a1c 100644 --- a/arch/riscv/kernel/cpufeature.c +++ b/arch/riscv/kernel/cpufeature.c @@ -41,6 +41,9 @@ unsigned long elf_hwcap __read_mostly; /* Host ISA bitmap */ static DECLARE_BITMAP(riscv_isa, RISCV_ISA_EXT_MAX) __read_mostly; =20 +/* Host ISA bases bitmap */ +DECLARE_BITMAP(riscv_isa_bases, RISCV_NR_ISA_BASES) __read_mostly; + /* Per-cpu ISA extensions. */ struct riscv_isainfo hart_isa[NR_CPUS]; =20 @@ -1321,3 +1324,90 @@ void __init_or_module riscv_cpufeature_patch_func(st= ruct alt_entry *begin, } } #endif + +/* + * Compute the set of profile bases (IMA, RVA23U64, ...) a hart + * conforms to, given its resolved ISA bitmap. + * + * If @isa_bitmap is NULL, the host ISA bitmap (the AND across all harts) = is + * used. + */ +static void riscv_set_isa_bases(unsigned long *bases, const unsigned long = *isa_bitmap) +{ + const unsigned long *isa =3D isa_bitmap ? isa_bitmap : riscv_isa; + DECLARE_BITMAP(ext_mask, RISCV_ISA_EXT_MAX) =3D { 0 }; + + /* IMA */ + __set_bit(RISCV_ISA_EXT_I, ext_mask); + __set_bit(RISCV_ISA_EXT_M, ext_mask); + __set_bit(RISCV_ISA_EXT_A, ext_mask); + + if (!bitmap_subset(ext_mask, isa, RISCV_ISA_EXT_MAX)) + return; + + set_bit(RISCV_ISA_BASE_IMA, bases); + + /* RVA23U64 */ + + /* Supm with PMLEN=3D7 */ + if (!riscv_have_user_pmlen(7)) + return; + + __set_bit(RISCV_ISA_EXT_F, ext_mask); + __set_bit(RISCV_ISA_EXT_D, ext_mask); + __set_bit(RISCV_ISA_EXT_C, ext_mask); + __set_bit(RISCV_ISA_EXT_B, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICSR, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICNTR, ext_mask); + __set_bit(RISCV_ISA_EXT_ZIHPM, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICCIF, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICCRSE, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICCAMOA, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICCLSM, ext_mask); + __set_bit(RISCV_ISA_EXT_ZA64RS, ext_mask); + __set_bit(RISCV_ISA_EXT_ZIHINTPAUSE, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICBOM, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICBOP, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICBOZ, ext_mask); + __set_bit(RISCV_ISA_EXT_ZIC64B, ext_mask); + __set_bit(RISCV_ISA_EXT_ZFHMIN, ext_mask); + __set_bit(RISCV_ISA_EXT_ZKT, ext_mask); + __set_bit(RISCV_ISA_EXT_V, ext_mask); + __set_bit(RISCV_ISA_EXT_ZVFHMIN, ext_mask); + __set_bit(RISCV_ISA_EXT_ZVBB, ext_mask); + __set_bit(RISCV_ISA_EXT_ZVKT, ext_mask); + __set_bit(RISCV_ISA_EXT_ZIHINTNTL, ext_mask); + __set_bit(RISCV_ISA_EXT_ZICOND, ext_mask); + __set_bit(RISCV_ISA_EXT_ZIMOP, ext_mask); + __set_bit(RISCV_ISA_EXT_ZCMOP, ext_mask); + __set_bit(RISCV_ISA_EXT_ZCB, ext_mask); + __set_bit(RISCV_ISA_EXT_ZFA, ext_mask); + __set_bit(RISCV_ISA_EXT_ZAWRS, ext_mask); + __set_bit(RISCV_ISA_EXT_SUPM, ext_mask); + + if (!bitmap_subset(ext_mask, isa, RISCV_ISA_EXT_MAX)) + return; + + set_bit(RISCV_ISA_BASE_RVA23U64, bases); +} + +/* + * Populate the host ISA bases bitmap (riscv_isa_bases) and each + * hart's per-cpu isa_bases. + */ +static int __init riscv_init_isa_bases(void) +{ + int cpu; + + for_each_possible_cpu(cpu) + riscv_set_isa_bases(hart_isa[cpu].isa_bases, hart_isa[cpu].isa); + + riscv_set_isa_bases(riscv_isa_bases, NULL); + return 0; +} + +/* + * Registered as subsys_initcall so it runs after + * core_initcall(tagged_addr_init) populates have_user_pmlen_*. + */ +subsys_initcall(riscv_init_isa_bases); --=20 2.43.0 From nobody Mon Jun 8 08:32:13 2026 Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 75D5430DD00 for ; Tue, 2 Jun 2026 23:15:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.53 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442122; cv=none; b=urtCIOQGSOf9fnRnn4EZDOINQ5EX5M+sInomD/qP+Seq0GLWIODFvQ1HqjRPNk/uyaWQnBOLEOYZKiqv9WoL7wrTgkuVgPp86u+8oUPtCma7Kz+ggMXATWCLiimTd2edPhIwdPb/nf6y5V/NUJwZ0h3ZgAWlj4fft3D/BbKHCCE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442122; c=relaxed/simple; bh=sOGp0iB3i67htt/vt0YyWfexKgE348qHxnlSOAaqgUc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=N3QQC5BO7/i0OvafHN68I3xSNiJ+WEZfx6DRtHCOWO2RnD/3PvrcTEpEmkIcCOto4n8A7Jfj1iqpClbZmSBQmhysJH56+aTbfiQS/+2mENGpe6elDMyttKrI7q2TFViMvxbkSzkkkEmNvtlaUAbkOwL2vvVQXzcnsPc7qaHq1zk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=Vdp7FyRI; arc=none smtp.client-ip=209.85.216.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Vdp7FyRI" Received: by mail-pj1-f53.google.com with SMTP id 98e67ed59e1d1-36ab8816a35so5918455a91.1 for ; Tue, 02 Jun 2026 16:15:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442121; x=1781046921; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=iPBQ++ePsPMFHRPcO/XS56r+jXgkNVBk54cuehJ0cRo=; b=Vdp7FyRI45B5zevlEpnX7YixDmJW8LBoZlbpIQMj4afwObPf4c0ec/jfwz1Pz8YcOJ 0q9KEKxgBDjcFe9U/VUlAcLC5I/zUwuZUrIT6iV1jQx0bmRUUapCiRPwyqJBQ56sdSD9 nwMqxISQ40Qc3PrYR3mlVc/7dm6FB0vXvUVACAHQmERYeRpn94gLbzSdDS31iD1ZWzSC dxpA+7MtNSdCMUD+ATghE/91W1qN8GTEQGGtWolIEweBqLlTTXFq47WGCTk3QBmUVWKC 8ykrxuQ6zBAEAMUUoD70jK94XheNgn2H+2WcHsdNUvYjM2jd9O8wphMtToRDAabCzPIu L9MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442121; x=1781046921; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=iPBQ++ePsPMFHRPcO/XS56r+jXgkNVBk54cuehJ0cRo=; b=iRClP3az7S9T5IGW83vdMsEyJUEmS4j4OPepyNdJFTUv6HhnWopd+aBh1uejI3EBd7 QdujMdivaoyB2W6bij0DsVSlmqjeGWaaZ5kj2BNj141RySdR7tXVEwRKfiFyRZEM79Wq vWsLu4L2Uqs+xEpYAsEK9iLmCG4LKvErJ90HkyLOUp6hgKW2d3Dx6kNDqed9YL7qJG4T pF/75IvfxLVcUN263ipzKwNKPZFzk1U5ADxUuGpmPIUCL9gsRNdktXZMF/d4AVE1mmxb 9INAwV+U58WZAej7htGdCacqrzj4LiKJvIQeD3wye+I89O+/WLbGjZaJGmq22oanntim o7LA== X-Forwarded-Encrypted: i=1; AFNElJ8Clh2Lqo8fk5D4b60GXQdldRxI53Oc9VXbXrA61MYsG0KEUIpgfkzc2DISDiFQE6LS4a2xHTen1aRXdVc=@vger.kernel.org X-Gm-Message-State: AOJu0YxD0ZMN/XDmlZFYLh6+R/pT4jr7XRcUatV9w8iEbRl3Ltkt8Zmv lVn7gc3pLzy4UjTRplY2RkHWeP73CZzraNr8/ATiwHYkT255RdSbJVrf X-Gm-Gg: Acq92OEZ1neSgDdJKHidgKrYDGfzNRVXsjOMa2GQc67WKR5oxqF+RDCnYFdgkUcg5AK tB+ChnApQhjcPH2+QAK/Yq2WHB9BnnnQoYeq3QyhJbMB7WQXjdwrGq5LejiZA1CX4hkbZI+Shez r5zTefD6LH6AEX+lygbXNDFjmumXGTyc+w1Fpnkct7hyyx39Texw6s/VahXMY5es8+hNJ/htl++ 3TOVyxgBXEy84x1aM/G+RRLNyHRw7bnQw38gqZydcMynC6Lanu4YUKICLX0mmOw2D7D67mEmun6 IHAuh3yhC1bRmh6sZMJThxJ4rvwY4b6hS36Lr7P7MSku6e+/ed6oI4wLTT2pSaOqrxqxd/jBEE9 wNXZH9mraAgVlVmumUCkfjYjGDbm07728k9UnUH5cOnRPKbzoCvnHD+g9YFjrbXese+tRjrKWWv 704YKrggJWSQ== X-Received: by 2002:a17:90b:1fc7:b0:36d:8f51:fe29 with SMTP id 98e67ed59e1d1-36e32285958mr783171a91.17.1780442120719; Tue, 02 Jun 2026 16:15:20 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.15.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:15:20 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:09 -0400 Subject: [PATCH v3 14/15] riscv: cpu: Output isa bases lines in cpuinfo Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-14-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2801; i=docular.xu@gmail.com; h=from:subject:message-id; bh=sOGp0iB3i67htt/vt0YyWfexKgE348qHxnlSOAaqgUc=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHvbsu0dSf3uxan3W+P3ws4linXtVZZ/tdq3sy5l8B wK7f5t2lLIwiHExyIopshw+2pK99ZVPtO9zzh8wc1iZQIYwcHEKwET8VjIybPJi3bXcy+RQWf6x r3t0GIXNS9Yy3+L21ZSRiO683bLhOSPD3YeMk3iVKxc06qYfmb89acLLpOA9pQsPtry7kjdFtju CBQA= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE Output two new lines per processor in /proc/cpuinfo: isa bases : hart isa bases : These read directly from the cached riscv_isa_bases and hart_isa[cpu].isa_bases bitmaps populated at boot by riscv_init_isa_bases(). Example output on qemu booted with -cpu rva23s64,sv39=3Don,pmp=3Don (showing only the new lines plus their neighbors for context): processor : 0 hart : 4 isa bases : rv64ima rva23u64 isa : rv64imafdcbvh_zicbom_zicbop_... mmu : sv39 ... mimpid : 0x0 hart isa bases : rv64ima rva23u64 hart isa : rv64imafdcbvh_zicbom_zicbop_... Signed-off-by: Andrew Jones Signed-off-by: Guodong Xu --- v3: No change. v2: - Read from the cached riscv_isa_bases and hart_isa[cpu_id].isa_bases bitmaps populated by riscv_init_isa_bases() at init time. --- arch/riscv/kernel/cpu.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/arch/riscv/kernel/cpu.c b/arch/riscv/kernel/cpu.c index 3dbc8cc557dd1..31e2857dcdcf1 100644 --- a/arch/riscv/kernel/cpu.c +++ b/arch/riscv/kernel/cpu.c @@ -305,6 +305,26 @@ static void print_mmu(struct seq_file *f) seq_printf(f, "mmu\t\t: %s\n", sv_type); } =20 +static const char * const riscv_isa_base_names[] =3D { +#ifdef CONFIG_32BIT + [RISCV_ISA_BASE_IMA] =3D "rv32ima", +#else + [RISCV_ISA_BASE_IMA] =3D "rv64ima", +#endif + [RISCV_ISA_BASE_RVA23U64] =3D "rva23u64", +}; + +static void print_isa_bases(struct seq_file *m, const unsigned long *isa_b= ases) +{ + unsigned int i; + + for (i =3D 0; i < RISCV_NR_ISA_BASES; i++) { + if (test_bit(i, isa_bases)) + seq_printf(m, " %s", riscv_isa_base_names[i]); + } + seq_puts(m, "\n"); +} + static void *c_start(struct seq_file *m, loff_t *pos) { if (*pos =3D=3D nr_cpu_ids) @@ -336,6 +356,9 @@ static int c_show(struct seq_file *m, void *v) seq_printf(m, "processor\t: %lu\n", cpu_id); seq_printf(m, "hart\t\t: %lu\n", cpuid_to_hartid_map(cpu_id)); =20 + seq_puts(m, "isa bases\t:"); + print_isa_bases(m, riscv_isa_bases); + /* * For historical raisins, the isa: line is limited to the lowest common * denominator of extensions supported across all harts. A true list of @@ -360,6 +383,9 @@ static int c_show(struct seq_file *m, void *v) seq_printf(m, "marchid\t\t: 0x%lx\n", ci->marchid); seq_printf(m, "mimpid\t\t: 0x%lx\n", ci->mimpid); =20 + seq_puts(m, "hart isa bases\t:"); + print_isa_bases(m, hart_isa[cpu_id].isa_bases); + /* * Print the ISA extensions specific to this hart, which may show * additional extensions not present across all harts. --=20 2.43.0 From nobody Mon Jun 8 08:32:13 2026 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3DCB13C7691 for ; Tue, 2 Jun 2026 23:15:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442133; cv=none; b=ENtS5j0v15uvssoeLYQ4pAXzUeEWoq4JCOqFZuyp9decQ5YWHkE9+qX0Nt2hEfO2ITCZ6fFUb17jgPov7NYw4Ix+JoRG6qgg1G/eI0lIm/ZPqGpeSchVNA7JU31j8EMCqz+lrLmSgLh2PH/4lMQnvUeymzyLjylrAMcDGonkRc0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780442133; c=relaxed/simple; bh=O+m6esE1h2WCRNa4TSXJ8l0GsbEGYg/n4liKpqmrez8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YtFnuatJ3Zdw4MXEYV75RvpklcpZOOYbvILOn5fr/izsCU0YJppbiSo0Y3Od86Oiz3aktRSV5CaUSnE2MTiBPzE4BN/1bYAcmbJkRyb2btVKveqate+hgtOgJvzXAf/7Dmv1SqfBAGjD7+BEBZDpaLU8QfeK/k3SH+Z4yGpsJ84= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=mRC0FYvb; arc=none smtp.client-ip=209.85.214.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="mRC0FYvb" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2c0c3315c5dso31980665ad.3 for ; Tue, 02 Jun 2026 16:15:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780442131; x=1781046931; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=elAeolCTc2IAaRv5GDeM52BjkVLUXqNe1DIyzckEuoM=; b=mRC0FYvb7xovNewnjKUYev+3ezw89Fc+sIj+CKpcHlTp95tPq7I5GjbzJwP5CI/UDT EOVbiLxQxcFNqfCR5+ILFZ6HGLZMhqu4+Jdm9Ajm9yywZaX4XY8vXh6T1HbgUaj381NE VZCjBaMF5/0CqXvybSwcbhRX9VOo6BA9s3BQM7At6vgO2ydF/pmwoxBnjytIbxhdEiUY w2SfzuZAaTWUZzy8f6wnki1yYx79KxwEAO4TfoNhaSKA0w0Ycw42jVxb2uqrA/oStUff 8iao8Yob6pSkzh1sY0yIoIlNi4+crym+HFHHAhevXWRQUKgTe6YN6ZbwRRtabiZUG6yP xuVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780442131; x=1781046931; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=elAeolCTc2IAaRv5GDeM52BjkVLUXqNe1DIyzckEuoM=; b=XfC9cbMkwAHd8dqKE/A6KtOo2nfPO25+yXbfH8KaT3MiU3mAmSPUN3l+EwAIY+FQ29 NRypua8mxV8hr5PjWycj9HzGyi5ih4qlRfYeVwYHQkt/9/DgSMRTdeuU8NqF2aD6+Ee8 qnyM7QdAsebqJ2bVT17Lk1OwNnhfR673d6xKRTKijOxCKBGaoGmDv5lZ4TNl8GU+HZ8X 5HsNdsHVcTjNTJZznsKVbXiPmFmmSUGHDbCUmATwcazBzzixNrxx2ttTGVnS70mzTu32 NRRyNVfoTWfK2G611WYxb4/xCA+42Cu2O0GeK9bYM15Ld4dKGcJFN38GD/c3DLwtdih1 8xeg== X-Forwarded-Encrypted: i=1; AFNElJ+IQ586LHELvVISLvU9F/M12dPqp4mWOyP0I0oMF10uCwYEBYYm3ACPjggHUuPjx3LaUwgWXl3PLGP/kHQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwsW/8RuHx3c7xSPv7xfgfNddviGEsh8qxEtIYyP0zQZR8jngmk 05F7fZGa6jPAYMUR/c9xNYlQ2Qzl6NHYHZOd4SCSpYqMyHwUAKDONLhg X-Gm-Gg: Acq92OHy08PqCaS20aG/axixJDGBX/NdUTo8n8KMZWeZWwxD7wuZeVJOG8fBTzo9ExN mP6G6sJQhdTlsb3008O1oVVceFtvZp65VuNR6ihydCEZX5eEnoJk3zgvoiMeibPOH1Rs9Xgo8yl ryZ4zzImBOz4u3Y6J4ZxrtEturJjvnTVVDmizAj9d0ascDH/Etp33qYjVH9JnWJ9AdJthBx/r1Y SP9sPDBIjvaA7GoQAxWQ488HLbmeQ8WZjx/vPG/YM2erXYKKMLxkuWiS+a7z+xlk128K0Smau3i P/hO7iZKUS2HxjFdT6eq5ulS18l8tD42+8uokOw+zPU+SW8WsrXTpM2OSRcTpn3oTpH28ME31MD Sx4e2xQ1Vben6Amc0qB1WQqU+bqaCfzuaketoW4LI1Yo6hN4wLTyX2e8DGBnOD5EHtyO46NRVel orLmsvhzzmCg== X-Received: by 2002:a17:902:f547:b0:2b0:c59f:3b58 with SMTP id d9443c01a7336-2c163a3d1b6mr7203385ad.9.1780442131511; Tue, 02 Jun 2026 16:15:31 -0700 (PDT) Received: from [127.0.1.1] ([2a12:a305:4::40e9]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c16649d2dfsm3302965ad.75.2026.06.02.16.15.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 16:15:31 -0700 (PDT) From: Guodong Xu Date: Wed, 03 Jun 2026 07:12:10 -0400 Subject: [PATCH v3 15/15] riscv: hwprobe: Introduce rva23u64 base behavior Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260603-rva23u64-hwprobe-v2-v3-15-5529a7b28384@gmail.com> References: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> In-Reply-To: <20260603-rva23u64-hwprobe-v2-v3-0-5529a7b28384@gmail.com> To: Jonathan Corbet , Shuah Khan , Paul Walmsley , Palmer Dabbelt , Albert Ou , Alexandre Ghiti , Zong Li , Deepak Gupta , Anup Patel , Atish Patra , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Yixun Lan , Chen Wang , Inochi Amaoto , Conor Dooley , Shuah Khan , Christian Brauner Cc: linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, kvm-riscv@lists.infradead.org, Paul Walmsley , Palmer Dabbelt , Conor Dooley , devicetree@vger.kernel.org, spacemit@lists.linux.dev, sophgo@lists.linux.dev, linux-kselftest@vger.kernel.org, Andrew Jones , Charles Jenkins , Samuel Holland , Guodong Xu X-Mailer: b4 0.15.1 X-Developer-Signature: v=1; a=openpgp-sha256; l=4827; i=docular.xu@gmail.com; h=from:subject:message-id; bh=O+m6esE1h2WCRNa4TSXJ8l0GsbEGYg/n4liKpqmrez8=; b=owGbwMvMwCXWtEl1Z3CGpCDjabUkhiwFHvYP001VTd0EX7Jtz/r1fX1MpPDfafPEZD+aHd25Y k/yjFD7jlIWBjEuBlkxRZbDR1uyt77yifZ9zvkDZg4rE8gQBi5OAZiIdQkjQ8cd3dI3NxoXfthj fUXAwaAgPdVj8ZIbF5tKmY5ZCLtMvsfIsIYrRmnaLyfmpTIiSa2u0svvnnrlZeYgUrt9jafMDDt 1HgA= X-Developer-Key: i=docular.xu@gmail.com; a=openpgp; fpr=90B1DC3DF0BD10FD1227BD6344F254AF42F143EE Provide a hwprobe base-behavior bit so userspace can check RVA23U64 support in one call. Without it, a consumer needs five hwprobe calls and four prctl calls, which is error-prone to require of every caller. Most software treats RVA23U64 as a new base anyway, so expose it directly. Signed-off-by: Andrew Jones Signed-off-by: Guodong Xu --- v3: No change. v2: - Detect RVA23U64 by reading from the cached hart_isa[].isa_bases bitmap populated by riscv_init_isa_bases() at init time, sharing one source of truth with /proc/cpuinfo. --- Documentation/arch/riscv/hwprobe.rst | 8 ++++++++ arch/riscv/include/uapi/asm/hwprobe.h | 3 ++- arch/riscv/kernel/sys_hwprobe.c | 23 +++++++++++++++---= ---- tools/testing/selftests/riscv/hwprobe/which-cpus.c | 2 +- 4 files changed, 27 insertions(+), 9 deletions(-) diff --git a/Documentation/arch/riscv/hwprobe.rst b/Documentation/arch/risc= v/hwprobe.rst index 601e81f561421..d6712259946e9 100644 --- a/Documentation/arch/riscv/hwprobe.rst +++ b/Documentation/arch/riscv/hwprobe.rst @@ -67,6 +67,14 @@ The following keys are defined: programs (it may still be executed in userspace via a kernel-controlled mechanism such as the vDSO). =20 + * :c:macro:`RISCV_HWPROBE_BASE_BEHAVIOR_RVA23U64`: Support for all manda= tory + extensions of RVA23U64, as defined in the RISC-V Profiles specification + starting from commit 0273f3c921b6 ("rva23/rvb23 ratified"). + + The RVA23U64 base is based upon the IMA base and therefore IMA extensi= on + keys (e.g. :c:macro:`RISCV_HWPROBE_KEY_IMA_EXT_0`:) may be used to pro= be + optional extensions. + * :c:macro:`RISCV_HWPROBE_KEY_IMA_EXT_0`: A bitmask containing extensions that are compatible with the :c:macro:`RISCV_HWPROBE_BASE_BEHAVIOR_IMA`: base system behavior. diff --git a/arch/riscv/include/uapi/asm/hwprobe.h b/arch/riscv/include/uap= i/asm/hwprobe.h index 36ec8ab470423..50733d3db7633 100644 --- a/arch/riscv/include/uapi/asm/hwprobe.h +++ b/arch/riscv/include/uapi/asm/hwprobe.h @@ -21,7 +21,8 @@ struct riscv_hwprobe { #define RISCV_HWPROBE_KEY_MARCHID 1 #define RISCV_HWPROBE_KEY_MIMPID 2 #define RISCV_HWPROBE_KEY_BASE_BEHAVIOR 3 -#define RISCV_HWPROBE_BASE_BEHAVIOR_IMA (1 << 0) +#define RISCV_HWPROBE_BASE_BEHAVIOR_IMA (1 << 0) +#define RISCV_HWPROBE_BASE_BEHAVIOR_RVA23U64 (1 << 1) #define RISCV_HWPROBE_KEY_IMA_EXT_0 4 #define RISCV_HWPROBE_IMA_FD (1 << 0) #define RISCV_HWPROBE_IMA_C (1 << 1) diff --git a/arch/riscv/kernel/sys_hwprobe.c b/arch/riscv/kernel/sys_hwprob= e.c index 3e80e5551ae0d..3f66f2e99d41a 100644 --- a/arch/riscv/kernel/sys_hwprobe.c +++ b/arch/riscv/kernel/sys_hwprobe.c @@ -226,6 +226,17 @@ static bool hwprobe_ext0_has(const struct cpumask *cpu= s, u64 ext) return (pair.value & ext); } =20 +static bool hwprobe_has_isa_base(const struct cpumask *cpus, unsigned int = base) +{ + int cpu; + + for_each_cpu(cpu, cpus) { + if (!test_bit(base, hart_isa[cpu].isa_bases)) + return false; + } + return true; +} + #if defined(CONFIG_RISCV_PROBE_UNALIGNED_ACCESS) static u64 hwprobe_misaligned(const struct cpumask *cpus) { @@ -308,14 +319,12 @@ static void hwprobe_one_pair(struct riscv_hwprobe *pa= ir, case RISCV_HWPROBE_KEY_MIMPID: hwprobe_arch_id(pair, cpus); break; - /* - * The kernel already assumes that the base single-letter ISA - * extensions are supported on all harts, and only supports the - * IMA base, so just cheat a bit here and tell that to - * userspace. - */ case RISCV_HWPROBE_KEY_BASE_BEHAVIOR: - pair->value =3D RISCV_HWPROBE_BASE_BEHAVIOR_IMA; + pair->value =3D 0; + if (hwprobe_has_isa_base(cpus, RISCV_ISA_BASE_IMA)) + pair->value |=3D RISCV_HWPROBE_BASE_BEHAVIOR_IMA; + if (hwprobe_has_isa_base(cpus, RISCV_ISA_BASE_RVA23U64)) + pair->value |=3D RISCV_HWPROBE_BASE_BEHAVIOR_RVA23U64; break; =20 case RISCV_HWPROBE_KEY_IMA_EXT_0: diff --git a/tools/testing/selftests/riscv/hwprobe/which-cpus.c b/tools/tes= ting/selftests/riscv/hwprobe/which-cpus.c index 587feb198c049..f8c797b1d0fd9 100644 --- a/tools/testing/selftests/riscv/hwprobe/which-cpus.c +++ b/tools/testing/selftests/riscv/hwprobe/which-cpus.c @@ -105,7 +105,7 @@ int main(int argc, char **argv) pairs[0] =3D (struct riscv_hwprobe){ .key =3D RISCV_HWPROBE_KEY_BASE_BEHA= VIOR, }; rc =3D riscv_hwprobe(pairs, 1, 0, NULL, 0); assert(rc =3D=3D 0 && pairs[0].key =3D=3D RISCV_HWPROBE_KEY_BASE_BEHAVIOR= && - pairs[0].value =3D=3D RISCV_HWPROBE_BASE_BEHAVIOR_IMA); + (pairs[0].value & RISCV_HWPROBE_BASE_BEHAVIOR_IMA)); =20 pairs[0] =3D (struct riscv_hwprobe){ .key =3D RISCV_HWPROBE_KEY_IMA_EXT_0= , }; rc =3D riscv_hwprobe(pairs, 1, 0, NULL, 0); --=20 2.43.0