Received: by 2002:ab2:784b:0:b0:1fd:adc2:8405 with SMTP id m11csp144005lqp; Sun, 9 Jun 2024 21:45:46 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCUKstWrKmvQl6AFcz9bbzExXBvDtB9jegtPhAEOvdLjeuLRXgXxvO0es/Wcr8zATRAd/q6+sjr7jIsbyFhejXb/uJMohh08RhnTLz23Mw== X-Google-Smtp-Source: AGHT+IFrfWglET0TOBHyWPoIwpYB2bwfqlxHGpsPQgZnmqPP7J9vV5wzlpltJ5jOSbqY/OFW+T6J X-Received: by 2002:ac2:484a:0:b0:52b:bf71:cc13 with SMTP id 2adb3069b0e04-52bbf71ce1dmr4169530e87.55.1717994746494; Sun, 09 Jun 2024 21:45:46 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1717994746; cv=pass; d=google.com; s=arc-20160816; b=Ggp42A7J5pJ1qboe6jN9uGpDuj7jreazlqiAXp/YAzyHQ1FdX/QErR9sqqig46Wsjz xvPxlJGJ8tlR0xxNUU+AknJXf+gjnYjzcgEhy7W0TtGjfRCJywICcjRqUozqgKqAYYlr lvEUDPfBq5dVA1/yBcUXrX/tCeYg64f6da9lf/OdrpPtmySEZUvIBbnPMaBnvcXPZ2U4 Bz72wUXWgL9THcY9eaG5MKqQ4Z8cv/EZz7nMaNyZbzIH+DwYmxHj7GrOnoyR44zGThGX HP0Md9FclnNpFiBefOEltDgjnuL/UnqME+5J3cWKdxOuQiNOS9uuJ0mKggqG7DnGhzem CFUw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=cc:to:content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:from :dkim-signature; bh=dN55AJF0PHuFpfwbQ/DJHVULjunoR3y3+KEw1Zkzgt0=; fh=mKIp7P2H4ZJeiMkKb3AGP5UfswRx31nCKAnvadaWOHQ=; b=htFRMPjaQMt3+6R1TJFubLuDv0+G2EJoEDjuTPYf7VFc665rbNIbqsNU/pT8zb6yB5 M/yjI91X5A/N0cjyET+JwiUhidSwLfTvYP3bSVM0hjnGt7l3HJovkgZ6lG4QjACNbTjX hMuho+TxuTxF3Pz1+qzR4xXqSZNZj0fWMU/cbnIIDMot5UmsA+nEq106q9OU7Hc/0Jj8 4JZTSosxuqp5P39lRDcnmLor+1XduRkZHR1xEI3YuT/cViw9e4jztVBKd2T/NDk6roLg OGgQC43UVzt9Ad5/r0G4cF18RH1xJ5SvPJdP6rdvnDvBsEsBRa2shjREG4PZ1f/fTxFu BLQg==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=i5STZ3Fe; arc=pass (i=1 spf=pass spfdomain=rivosinc.com dkim=pass dkdomain=rivosinc-com.20230601.gappssmtp.com); spf=pass (google.com: domain of linux-kernel+bounces-207625-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-207625-linux.lists.archive=gmail.com@vger.kernel.org" Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id 4fb4d7f45d1cf-57c717af592si1791884a12.343.2024.06.09.21.45.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 21:45:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-207625-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@rivosinc-com.20230601.gappssmtp.com header.s=20230601 header.b=i5STZ3Fe; arc=pass (i=1 spf=pass spfdomain=rivosinc.com dkim=pass dkdomain=rivosinc-com.20230601.gappssmtp.com); spf=pass (google.com: domain of linux-kernel+bounces-207625-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-207625-linux.lists.archive=gmail.com@vger.kernel.org" Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 069861F218CB for ; Mon, 10 Jun 2024 04:45:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5518AE54C; Mon, 10 Jun 2024 04:45:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="i5STZ3Fe" Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (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 CA881A935 for ; Mon, 10 Jun 2024 04:45:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717994737; cv=none; b=XVGyQfa//WYwkT6N1e0rBzAtxrkl3Q6oUbawCoYRrn+mG2Z3YDGgMHM7fkP5bXU3MKh24p/5YqNMX5MfmMLTe77BU/ODv++VHzkvsarWfUq5qSzt7vGM/XH69UL3gsjuJqo9czFhCcr1n2sChtbeW5ymXmjtL+05zyaBWj+BQnU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1717994737; c=relaxed/simple; bh=vkSpLdTOCKmV5IhZYXnWR8/RElz7fkjEtj2s36qYkjY=; h=From:Subject:Date:Message-Id:MIME-Version:Content-Type:To:Cc; b=M9p/N59U7O6xUDpKtfiXkJZV/itAwwG38WQsMTz62CqNnc6i5bVoLsxSGfQS4zJgWo98DskndZ/5CFta93CaMFt8q+1sJKri4kq6N8Rb+9l3vsMHQ0TDvaqAXnYg1U/SqfAyiNkGdClHe30M1b+GCrh9wHKWKxFWYQYljlA49i8= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=i5STZ3Fe; arc=none smtp.client-ip=209.85.214.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-1f70131063cso7183845ad.2 for ; Sun, 09 Jun 2024 21:45:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1717994735; x=1718599535; darn=vger.kernel.org; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:from:to:cc:subject:date:message-id:reply-to; bh=dN55AJF0PHuFpfwbQ/DJHVULjunoR3y3+KEw1Zkzgt0=; b=i5STZ3FeaXcWmhvT5UVchXoV0MVop1kwyyYt6Cbm4CUnnSQE8ke4sr1kAqG4PJlCAU phxYKIJgcCWaRWB/7i0/9LGDB1zzV3403j6BMb5LSTQX5XINYO8lLeIlNT250bonSWIv Jbdks5kgz1nollG5X+mHB/DpLgiX7dNdi8oI8KARhI00yCTVi4QZIYMgPqXQ3r/6jiev bLPnwU0SuYZHZXNuUYjrC/SnKeyqeXw6ZUFIJjBFbfO3l3TY4PS79T681A7XCZ5oKKYU GufQaJV8C4d8eHtH/pKWHYgXSy1OXWyneT3KrIj7v2cXZ4KLg+9cCRQHlSCCegBwGf+I 5nxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717994735; x=1718599535; h=cc:to:content-transfer-encoding:mime-version:message-id:date :subject:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=dN55AJF0PHuFpfwbQ/DJHVULjunoR3y3+KEw1Zkzgt0=; b=wb5ufg8oe2cC3mitfKj86gjyZcixLd4BaY67qhKofqqSGU46ypO3CUlw5R8D4RtIWo jemAGB7P8/ErGllpatVEY/f0KnW4RyxEzySJTzwnqxrMqqDBNT0Jn4mbk9OxrsV9UPDL TBvuWI1TiZlz3cdEC0i1erToqBg8Bq4Em6+HMZd1YZOiKs3zYxMa+lVUc40Y8q/z23hC h6JygE8Zo6TxKr5WyhbgBieNKRsk7tvuhzT94nbOmK8TWc8pCEgGZ+/rcLi0+WGGYeIP 6mpFpomDsG4SsCdMfm6AZWC+NhKOXDa58XSPKl2jZHDB1+FyfLJ/12kzY3Aw6qOKfhZG NSlA== X-Forwarded-Encrypted: i=1; AJvYcCW6xcmUGEuk9GOzacTcTWR+9rxrkmnVgbt+794QltElhZDgVMxW+VqVz3AvwB5YWeJFr/HxaEX8ovj9feql3omPgyy+q9tBakSNbtyi X-Gm-Message-State: AOJu0YySmd6LmvwV6Kqbvc0Qt+AOnPp4KNcCNKnDD9EW7BTZqGt5ZwV0 IETY8yn5OVT0TdsnLCC3WhDqdkzLxlLLburDFgTWLZD0Q/kwgYSEm+MdN2zE7DE= X-Received: by 2002:a17:902:e811:b0:1f7:1821:77ad with SMTP id d9443c01a7336-1f718217cbemr8801395ad.14.1717994735007; Sun, 09 Jun 2024 21:45:35 -0700 (PDT) Received: from charlie.ba.rivosinc.com ([64.71.180.162]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-1f6bd76ce8asm73124095ad.77.2024.06.09.21.45.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 09 Jun 2024 21:45:34 -0700 (PDT) From: Charlie Jenkins Subject: [PATCH 00/13] riscv: Add support for xtheadvector Date: Sun, 09 Jun 2024 21:45:05 -0700 Message-Id: <20240609-xtheadvector-v1-0-3fe591d7f109@rivosinc.com> 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: 7bit X-B4-Tracking: v=1; b=H4sIANGEZmYC/6tWKk4tykwtVrJSqFYqSi3LLM7MzwNyDHUUlJIzE vPSU3UzU4B8JSMDIxMDU2MD3YqSjNTElLLU5JL8Il0LY+MU4xRD8yQTI2MloJaCotS0zAqwcdG xtbUAHd9+x14AAAA= To: Conor Dooley , Rob Herring , Krzysztof Kozlowski , Paul Walmsley , Palmer Dabbelt , Albert Ou , Jisheng Zhang , Chen-Yu Tsai , Jernej Skrabec , Samuel Holland , Jonathan Corbet , Shuah Khan , Guo Ren , Evan Green , Andy Chiu Cc: linux-riscv@lists.infradead.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sunxi@lists.linux.dev, linux-doc@vger.kernel.org, linux-kselftest@vger.kernel.org, Charlie Jenkins , Conor Dooley , Heiko Stuebner , Heiko Stuebner X-Mailer: b4 0.13.0 X-Developer-Signature: v=1; a=ed25519-sha256; t=1717994732; l=5669; i=charlie@rivosinc.com; s=20231120; h=from:subject:message-id; bh=vkSpLdTOCKmV5IhZYXnWR8/RElz7fkjEtj2s36qYkjY=; b=F8iBE/qU+gWHTYOUzgJ49eC5lJBiserczetPXroe2jYge4JeZOhpyar3pRnFA6RzDVYnQPUxO 91UulT4jaLZCLDyQtCbwIv10SEdkoX15vesDG1F1IZMrDbhIKYXPJyh X-Developer-Key: i=charlie@rivosinc.com; a=ed25519; pk=t4RSWpMV1q5lf/NWIeR9z58bcje60/dbtxxmoSfBEcs= xtheadvector is a custom extension that is based upon riscv vector version 0.7.1 [1]. All of the vector routines have been modified to support this alternative vector version based upon whether xtheadvector was determined to be supported at boot. vlenb is not supported on the existing xtheadvector hardware, so a devicetree property thead,vlenb is added to provide the vlenb to Linux. There is a new hwprobe key RISCV_HWPROBE_KEY_VENDOR_EXT_THEAD_0 that is used to request which thead vendor extensions are supported on the current platform. This allows future vendors to allocate hwprobe keys for their vendor. Support for xtheadvector is also added to the vector kselftests. Signed-off-by: Charlie Jenkins [1] https://github.com/T-head-Semi/thead-extension-spec/blob/95358cb2cca9489361c61d335e03d3134b14133f/xtheadvector.adoc --- This series is a continuation of a different series that was fragmented into two other series in an attempt to get part of it merged in the 6.10 merge window. The split-off series did not get merged due to a NAK on the series that added the generic riscv,vlenb devicetree entry. This series has converted riscv,vlenb to thead,vlenb to remedy this issue. The original series is titled "riscv: Support vendor extensions and xtheadvector" [3]. The series titled "riscv: Extend cpufeature.c to detect vendor extensions" is still under development and this series is based on that series! [4] I have tested this with an Allwinner Nezha board. I ran into issues booting the board after 6.9-rc1 so I applied these patches to 6.8. There are a couple of minor merge conflicts that do arrise when doing that, so please let me know if you have been able to boot this board with a 6.9 kernel. I used SkiffOS [1] to manage building the image, but upgraded the U-Boot version to Samuel Holland's more up-to-date version [2] and changed out the device tree used by U-Boot with the device trees that are present in upstream linux and this series. Thank you Samuel for all of the work you did to make this task possible. [1] https://github.com/skiffos/SkiffOS/tree/master/configs/allwinner/nezha [2] https://github.com/smaeul/u-boot/commit/2e89b706f5c956a70c989cd31665f1429e9a0b48 [3] https://lore.kernel.org/all/20240503-dev-charlie-support_thead_vector_6_9-v6-0-cb7624e65d82@rivosinc.com/ [4] https://lore.kernel.org/linux-riscv/20240609-support_vendor_extensions-v2-0-9a43f1fdcbb9@rivosinc.com/ --- Charlie Jenkins (12): dt-bindings: riscv: Add xtheadvector ISA extension description dt-bindings: thead: add a vlen register length property riscv: dts: allwinner: Add xtheadvector to the D1/D1s devicetree riscv: Add thead and xtheadvector as a vendor extension riscv: vector: Use vlenb from DT for thead riscv: csr: Add CSR encodings for VCSR_VXRM/VCSR_VXSAT riscv: Add xtheadvector instruction definitions riscv: vector: Support xtheadvector save/restore riscv: hwprobe: Add thead vendor extension probing riscv: hwprobe: Document thead vendor extensions and xtheadvector extension selftests: riscv: Fix vector tests selftests: riscv: Support xtheadvector in vector tests Heiko Stuebner (1): RISC-V: define the elements of the VCSR vector CSR Documentation/arch/riscv/hwprobe.rst | 10 + .../devicetree/bindings/riscv/extensions.yaml | 10 + Documentation/devicetree/bindings/riscv/thead.yaml | 7 + arch/riscv/Kconfig.vendor | 26 ++ arch/riscv/boot/dts/allwinner/sun20i-d1s.dtsi | 3 +- arch/riscv/include/asm/cpufeature.h | 2 + arch/riscv/include/asm/csr.h | 13 + arch/riscv/include/asm/hwprobe.h | 4 +- arch/riscv/include/asm/switch_to.h | 2 +- arch/riscv/include/asm/vector.h | 249 +++++++++++++---- arch/riscv/include/asm/vendor_extensions/thead.h | 42 +++ .../include/asm/vendor_extensions/thead_hwprobe.h | 18 ++ .../include/asm/vendor_extensions/vendor_hwprobe.h | 37 +++ arch/riscv/include/uapi/asm/hwprobe.h | 3 +- arch/riscv/include/uapi/asm/vendor/thead.h | 3 + arch/riscv/kernel/cpufeature.c | 51 +++- arch/riscv/kernel/kernel_mode_vector.c | 8 +- arch/riscv/kernel/process.c | 4 +- arch/riscv/kernel/signal.c | 6 +- arch/riscv/kernel/sys_hwprobe.c | 5 + arch/riscv/kernel/vector.c | 25 +- arch/riscv/kernel/vendor_extensions.c | 10 + arch/riscv/kernel/vendor_extensions/Makefile | 2 + arch/riscv/kernel/vendor_extensions/thead.c | 18 ++ .../riscv/kernel/vendor_extensions/thead_hwprobe.c | 19 ++ tools/testing/selftests/riscv/vector/.gitignore | 3 +- tools/testing/selftests/riscv/vector/Makefile | 17 +- .../selftests/riscv/vector/v_exec_initval_nolibc.c | 93 +++++++ tools/testing/selftests/riscv/vector/v_helpers.c | 67 +++++ tools/testing/selftests/riscv/vector/v_helpers.h | 7 + tools/testing/selftests/riscv/vector/v_initval.c | 22 ++ .../selftests/riscv/vector/v_initval_nolibc.c | 68 ----- .../selftests/riscv/vector/vstate_exec_nolibc.c | 20 +- .../testing/selftests/riscv/vector/vstate_prctl.c | 295 ++++++++++++--------- 34 files changed, 898 insertions(+), 271 deletions(-) --- base-commit: 11cc01d4d2af304b7288251aad7e03315db8dffc change-id: 20240530-xtheadvector-833d3d17b423 -- - Charlie