devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Conor Dooley <conor@kernel.org>
To: Charlie Jenkins <charlie@rivosinc.com>
Cc: "Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzysztof.kozlowski+dt@linaro.org>,
	"Paul Walmsley" <paul.walmsley@sifive.com>,
	"Palmer Dabbelt" <palmer@dabbelt.com>,
	"Albert Ou" <aou@eecs.berkeley.edu>,
	"Guo Ren" <guoren@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Chen-Yu Tsai" <wens@csie.org>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>,
	"Samuel Holland" <samuel@sholland.org>,
	"Conor Dooley" <conor.dooley@microchip.com>,
	"Evan Green" <evan@rivosinc.com>,
	"Clément Léger" <cleger@rivosinc.com>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Shuah Khan" <shuah@kernel.org>,
	linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	"Palmer Dabbelt" <palmer@rivosinc.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-sunxi@lists.linux.dev, linux-doc@vger.kernel.org,
	linux-kselftest@vger.kernel.org
Subject: Re: [PATCH v2 13/17] riscv: vector: Support xtheadvector save/restore
Date: Wed, 17 Apr 2024 15:50:24 +0100	[thread overview]
Message-ID: <20240417-semisweet-willed-1ce1098d8c41@spud> (raw)
In-Reply-To: <20240415-dev-charlie-support_thead_vector_6_9-v2-13-c7d68c603268@rivosinc.com>

[-- Attachment #1: Type: text/plain, Size: 3042 bytes --]

On Mon, Apr 15, 2024 at 09:12:10PM -0700, Charlie Jenkins wrote:

> diff --git a/arch/riscv/kernel/vector.c b/arch/riscv/kernel/vector.c
> index 6727d1d3b8f2..f42eaa8178e9 100644
> --- a/arch/riscv/kernel/vector.c
> +++ b/arch/riscv/kernel/vector.c
> @@ -33,10 +33,24 @@ int riscv_v_setup_vsize(void)
>  {
>  	unsigned long this_vsize;
>  
> -	/* There are 32 vector registers with vlenb length. */
> -	riscv_v_enable();
> -	this_vsize = csr_read(CSR_VLENB) * 32;
> -	riscv_v_disable();
> +	/*
> +	 * This is called before alternatives have been patched so can't use
> +	 * riscv_has_vendor_extension_unlikely

() after that function name please.

> +	 */
> +	if (has_xtheadvector_no_alternatives()) {
> +		/*
> +		 * Although xtheadvector states that th.vlenb exists and
> +		 * overlaps with the vector 1.0 vlenb, an illegal instruction is
> +		 * raised if read. These systems all currently have a fixed
> +		 * vector length of 128, so hardcode that value.

I had this written before the meeting, so pasting it anyway:
-- >8 --
From 5ed25d0f841e755b8dd4f1f6a3ea824601758d8e Mon Sep 17 00:00:00 2001
From: Conor Dooley <conor.dooley@microchip.com>
Date: Wed, 17 Apr 2024 14:39:36 +0100
Subject: [PATCH] dt-bindings: riscv: cpus: add a vlen register length property

Add a property analogous to the vlenb CSR so that software can detect
the vector length of each CPU prior to it being brought online.
Currently software has to assume that the vector length read from the
boot CPU applies to all possible CPUs. On T-Head CPUs implementing
pre-ratification vector, reading the th.vlenb CSR may produce an illegal
instruction trap, so this property is required on such systems.

Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
---
We could actually enforce the latter since we know the compatibles of
the relevant CPUs and can tell if xtheadvector is present.
---
 Documentation/devicetree/bindings/riscv/cpus.yaml | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/riscv/cpus.yaml b/Documentation/devicetree/bindings/riscv/cpus.yaml
index d067f2a468ee..2a6449a0f1d7 100644
--- a/Documentation/devicetree/bindings/riscv/cpus.yaml
+++ b/Documentation/devicetree/bindings/riscv/cpus.yaml
@@ -95,6 +95,12 @@ properties:
     description:
       The blocksize in bytes for the Zicboz cache operations.
 
+  riscv,vlenb:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      VLEN/8, the vector register length in bytes. This property is required in
+      systems where the vector register length is not identical on all harts.
+
   # RISC-V has multiple properties for cache op block sizes as the sizes
   # differ between individual CBO extensions
   cache-op-block-size: false
-- 
2.43.0



> +		 */
> +		this_vsize = 128;
> +	} else {
> +		/* There are 32 vector registers with vlenb length. */
> +		riscv_v_enable();
> +		this_vsize = csr_read(CSR_VLENB) * 32;
> +		riscv_v_disable();
> +	}

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2024-04-17 14:50 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-16  4:11 [PATCH v2 00/17] riscv: Support vendor extensions and xtheadvector Charlie Jenkins
2024-04-16  4:11 ` [PATCH v2 01/17] riscv: cpufeature: Fix thead vector hwcap removal Charlie Jenkins
2024-04-16 15:03   ` Conor Dooley
2024-04-16 20:40     ` Charlie Jenkins
2024-04-16  4:11 ` [PATCH v2 02/17] dt-bindings: riscv: Add xtheadvector ISA extension description Charlie Jenkins
2024-04-16 15:16   ` Conor Dooley
2024-04-16 20:43     ` Charlie Jenkins
2024-04-16 21:10       ` Conor Dooley
2024-04-17 22:51         ` Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 03/17] dt-bindings: riscv: Add vendorid Charlie Jenkins
2024-04-16 15:05   ` Conor Dooley
2024-04-16  4:12 ` [PATCH v2 04/17] riscv: dts: allwinner: Add xtheadvector to the D1/D1s devicetree Charlie Jenkins
2024-04-16 15:28   ` Conor Dooley
2024-04-16 20:39     ` Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 05/17] riscv: Fix extension subset checking Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 06/17] riscv: Extend cpufeature.c to detect vendor extensions Charlie Jenkins
2024-04-17 13:42   ` Conor Dooley
2024-04-16  4:12 ` [PATCH v2 07/17] riscv: Introduce vendor variants of extension helpers Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 08/17] riscv: drivers: Convert xandespmu to use the vendor extension framework Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 09/17] riscv: uaccess: Add alternative for xtheadvector uaccess Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 10/17] RISC-V: define the elements of the VCSR vector CSR Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 11/17] riscv: csr: Add CSR encodings for VCSR_VXRM/VCSR_VXSAT Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 12/17] riscv: Create xtheadvector file Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 13/17] riscv: vector: Support xtheadvector save/restore Charlie Jenkins
2024-04-17 14:50   ` Conor Dooley [this message]
2024-04-17 22:00     ` Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 14/17] riscv: hwprobe: Add vendor extension probing Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 15/17] riscv: hwprobe: Document vendor extensions and xtheadvector extension Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 16/17] selftests: riscv: Fix vector tests Charlie Jenkins
2024-04-16  4:12 ` [PATCH v2 17/17] selftests: riscv: Support xtheadvector in " Charlie Jenkins
2024-04-16 15:39 ` [PATCH v2 00/17] riscv: Support vendor extensions and xtheadvector Conor Dooley
2024-04-17 13:17 ` Conor Dooley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240417-semisweet-willed-1ce1098d8c41@spud \
    --to=conor@kernel.org \
    --cc=aou@eecs.berkeley.edu \
    --cc=charlie@rivosinc.com \
    --cc=cleger@rivosinc.com \
    --cc=conor+dt@kernel.org \
    --cc=conor.dooley@microchip.com \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=evan@rivosinc.com \
    --cc=guoren@kernel.org \
    --cc=jernej.skrabec@gmail.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=palmer@dabbelt.com \
    --cc=palmer@rivosinc.com \
    --cc=paul.walmsley@sifive.com \
    --cc=robh@kernel.org \
    --cc=samuel@sholland.org \
    --cc=shuah@kernel.org \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).