From nobody Sun Feb 8 02:21:52 2026 Received: from mail-wr1-f43.google.com (mail-wr1-f43.google.com [209.85.221.43]) (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 B19B61FF61E for ; Tue, 4 Mar 2025 12:00:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089621; cv=none; b=RAkPRGBmE3rFrffitcVMnPbjfB1j58KQWBaviU+waNqBc27vnS+L96vtsiGHgnSb/3lYRmAecEkzDJ4uR3KaJwGcjobJ7J+OzZGephRKQyq5hpniiG2t+zQQk4d5mAuu5/zjS7RBNbLt1ZDevT8dlIXCG15I9TO+fcPfD41jQNE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089621; c=relaxed/simple; bh=0KlxLzFd1lxQd/8YpnPnCCibjWag2I74cCn43Ti2Suw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Fc3eiQ3FTjFy5jXdF4BuIrIb3GJTrEjLJBeHO9Tfyxl0amBETdCHRX8/tT1Dr67LkuuW4jWGJyCJL5owtcjj6hn2tjBJTLuRmR+rIRYnaCAmYnkQcceTHFmMeH9Gxk5IwqbC7HJaDzew3Zns8X16GxR/qvxBfyLq1/OUzPZBIkA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=eCMDZPz2; arc=none smtp.client-ip=209.85.221.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="eCMDZPz2" Received: by mail-wr1-f43.google.com with SMTP id ffacd0b85a97d-390f69e71c8so2289677f8f.0 for ; Tue, 04 Mar 2025 04:00:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1741089617; x=1741694417; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dsOXXT+GJOZQxfHaJbyOnCfiUI8BUwrK26GnKW4Oj7U=; b=eCMDZPz2p8uZ8EosEibvpmqnk/dp5MbBhBQXJgRy9JuzWuBAHYWoVGz6gwEBUSpJpA /JQ+eQ1jTRWLaXlyzS96p4nIhNESDzMMROxafvMlEVQka6g6IDdv+3E+Oqi7wUZOPTyr qOcpakguqLnOtd84xGvITidNlCRr/k7xuXusbLgt7HZGt5iQiL2vvNH84QwSBKpxZE8q g5hR2jdOULC7l8I2AUx5QSDOkA+xDxXY5udfqbQkJlU+/NSR+PGDsiwxb/JiohBx1+W9 xknP4fJg+PfAdQrUKRLErpK7X8XhE4ZO9F++0I4KCdvpjUB/M7VT6zd7LkadXwdY2iAW WUHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741089617; x=1741694417; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dsOXXT+GJOZQxfHaJbyOnCfiUI8BUwrK26GnKW4Oj7U=; b=ueasTw0+ab66+LJMmLKE5CgmgvL1n/9pwxYGdcfqRsnD4WSzkf6SH0JC/2WS36mrE2 shidiZ/hc+32g7gdILGU9a4jY8nZAFexhg3GaI1B/52JKv/SitjjObFqJkNDXm2/tj+B 6pIGNR4sLSaVzRAtC3FTjfiwsDdnCUgGGrHqsoAmot+tTBDKb7hl7uZoN6tWyd2zL6Ts vOzqbMxvqizBLhdjNClZBvsKSUB5ddkxKbzrCtmp/pKC3/Fbi2t3RMr0E/4RNdqyjcTM Vd4J0vSpWrlmi+Gg818wWYX7Uhh4nmwQ0mLY3Tp4GkGh8bI5DQRQfWsTS7TKQlimzQw8 +Wog== X-Forwarded-Encrypted: i=1; AJvYcCURmxJV+496f8af7OCXZdrclwjgRkptfXcsbZ5savrkrh5zu6S1Xa8hekEI8XxuM9Dl7QCo2i3OfyBMJPU=@vger.kernel.org X-Gm-Message-State: AOJu0YzoCFdSJeCKyvS/BKZRLX38pESXUpfQOVQUNENkKHJeUUNfkBUY qCA30lxTG3JRzbj18liOb2wawww5TtyPJQ0NsZoxPJ6E8xjzpXeVxf1a51EaeNo= X-Gm-Gg: ASbGnct7OBSIowiDukmU2LDKF8ds2uNCH572sZxZ9BLJlMa2/8q4B+rvTw3XCWJOcM2 4CKQtu00B9rpJOC/m+c2HbfFKgm8aFwGGFwfK/BObQzVseq1I/6QXul9eF/nbtQrWTA/PY+cAUx oS3hZzVKo87xw/zRMZNXc2TsflSSm2ArA7ZoqVgGOyOKKzRw3UVmWGiIVgRLhL5LMM/qYYwlrNK lrLWCSdPVW7u4j8dKC7vVRwY9fLdXYB1g7raJTblq+w1JL2/c5QKKzw3ciCU6Cw2+PUqTxdY+d3 ogopOk4IXRN/LngqnI4lVfrM9f7j/dXu X-Google-Smtp-Source: AGHT+IHfvp/euog7c3Gu4POXjA8Lq4HBzrln9LMIjOKJFZe5dI3SCeWKlW6YsuSzufoq3FjOtkj5Fg== X-Received: by 2002:a5d:59af:0:b0:388:c61d:4415 with SMTP id ffacd0b85a97d-3911560f325mr2216933f8f.18.1741089617020; Tue, 04 Mar 2025 04:00:17 -0800 (PST) Received: from localhost ([2a02:8308:a00c:e200::688c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-390e4844ac6sm17312025f8f.71.2025.03.04.04.00.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 04:00:16 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: paul.walmsley@sifive.com, palmer@dabbelt.com, charlie@rivosinc.com, cleger@rivosinc.com, alex@ghiti.fr, Anup Patel , corbet@lwn.net, Alexandre Ghiti Subject: [PATCH v3 1/8] riscv: Annotate unaligned access init functions Date: Tue, 4 Mar 2025 13:00:16 +0100 Message-ID: <20250304120014.143628-11-ajones@ventanamicro.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304120014.143628-10-ajones@ventanamicro.com> References: <20250304120014.143628-10-ajones@ventanamicro.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Several functions used in unaligned access probing are only run at init time. Annotate them appropriately. Fixes: f413aae96cda ("riscv: Set unaligned access speed at compile time") Reviewed-by: Alexandre Ghiti Signed-off-by: Andrew Jones --- arch/riscv/include/asm/cpufeature.h | 4 ++-- arch/riscv/kernel/traps_misaligned.c | 8 ++++---- arch/riscv/kernel/unaligned_access_speed.c | 14 +++++++------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/arch/riscv/include/asm/cpufeature.h b/arch/riscv/include/asm/c= pufeature.h index 569140d6e639..19defdc2002d 100644 --- a/arch/riscv/include/asm/cpufeature.h +++ b/arch/riscv/include/asm/cpufeature.h @@ -63,7 +63,7 @@ void __init riscv_user_isa_enable(void); #define __RISCV_ISA_EXT_SUPERSET_VALIDATE(_name, _id, _sub_exts, _validate= ) \ _RISCV_ISA_EXT_DATA(_name, _id, _sub_exts, ARRAY_SIZE(_sub_exts), _valida= te) =20 -bool check_unaligned_access_emulated_all_cpus(void); +bool __init check_unaligned_access_emulated_all_cpus(void); #if defined(CONFIG_RISCV_SCALAR_MISALIGNED) void check_unaligned_access_emulated(struct work_struct *work __always_unu= sed); void unaligned_emulation_finish(void); @@ -76,7 +76,7 @@ static inline bool unaligned_ctl_available(void) } #endif =20 -bool check_vector_unaligned_access_emulated_all_cpus(void); +bool __init check_vector_unaligned_access_emulated_all_cpus(void); #if defined(CONFIG_RISCV_VECTOR_MISALIGNED) void check_vector_unaligned_access_emulated(struct work_struct *work __alw= ays_unused); DECLARE_PER_CPU(long, vector_misaligned_access); diff --git a/arch/riscv/kernel/traps_misaligned.c b/arch/riscv/kernel/traps= _misaligned.c index 7cc108aed74e..aacbd9d7196e 100644 --- a/arch/riscv/kernel/traps_misaligned.c +++ b/arch/riscv/kernel/traps_misaligned.c @@ -605,7 +605,7 @@ void check_vector_unaligned_access_emulated(struct work= _struct *work __always_un kernel_vector_end(); } =20 -bool check_vector_unaligned_access_emulated_all_cpus(void) +bool __init check_vector_unaligned_access_emulated_all_cpus(void) { int cpu; =20 @@ -625,7 +625,7 @@ bool check_vector_unaligned_access_emulated_all_cpus(vo= id) return true; } #else -bool check_vector_unaligned_access_emulated_all_cpus(void) +bool __init check_vector_unaligned_access_emulated_all_cpus(void) { return false; } @@ -659,7 +659,7 @@ void check_unaligned_access_emulated(struct work_struct= *work __always_unused) } } =20 -bool check_unaligned_access_emulated_all_cpus(void) +bool __init check_unaligned_access_emulated_all_cpus(void) { int cpu; =20 @@ -684,7 +684,7 @@ bool unaligned_ctl_available(void) return unaligned_ctl; } #else -bool check_unaligned_access_emulated_all_cpus(void) +bool __init check_unaligned_access_emulated_all_cpus(void) { return false; } diff --git a/arch/riscv/kernel/unaligned_access_speed.c b/arch/riscv/kernel= /unaligned_access_speed.c index 91f189cf1611..b7a8ff7ba6df 100644 --- a/arch/riscv/kernel/unaligned_access_speed.c +++ b/arch/riscv/kernel/unaligned_access_speed.c @@ -121,7 +121,7 @@ static int check_unaligned_access(void *param) return 0; } =20 -static void check_unaligned_access_nonboot_cpu(void *param) +static void __init check_unaligned_access_nonboot_cpu(void *param) { unsigned int cpu =3D smp_processor_id(); struct page **pages =3D param; @@ -175,7 +175,7 @@ static void set_unaligned_access_static_branches(void) modify_unaligned_access_branches(&fast_and_online, num_online_cpus()); } =20 -static int lock_and_set_unaligned_access_static_branch(void) +static int __init lock_and_set_unaligned_access_static_branch(void) { cpus_read_lock(); set_unaligned_access_static_branches(); @@ -218,7 +218,7 @@ static int riscv_offline_cpu(unsigned int cpu) } =20 /* Measure unaligned access speed on all CPUs present at boot in parallel.= */ -static int check_unaligned_access_speed_all_cpus(void) +static int __init check_unaligned_access_speed_all_cpus(void) { unsigned int cpu; unsigned int cpu_count =3D num_possible_cpus(); @@ -264,7 +264,7 @@ static int check_unaligned_access_speed_all_cpus(void) return 0; } #else /* CONFIG_RISCV_PROBE_UNALIGNED_ACCESS */ -static int check_unaligned_access_speed_all_cpus(void) +static int __init check_unaligned_access_speed_all_cpus(void) { return 0; } @@ -379,7 +379,7 @@ static int riscv_online_cpu_vec(unsigned int cpu) } =20 /* Measure unaligned access speed on all CPUs present at boot in parallel.= */ -static int vec_check_unaligned_access_speed_all_cpus(void *unused __always= _unused) +static int __init vec_check_unaligned_access_speed_all_cpus(void *unused _= _always_unused) { schedule_on_each_cpu(check_vector_unaligned_access); =20 @@ -393,13 +393,13 @@ static int vec_check_unaligned_access_speed_all_cpus(= void *unused __always_unuse return 0; } #else /* CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS */ -static int vec_check_unaligned_access_speed_all_cpus(void *unused __always= _unused) +static int __init vec_check_unaligned_access_speed_all_cpus(void *unused _= _always_unused) { return 0; } #endif =20 -static int check_unaligned_access_all_cpus(void) +static int __init check_unaligned_access_all_cpus(void) { bool all_cpus_emulated, all_cpus_vec_unsupported; =20 --=20 2.48.1 From nobody Sun Feb 8 02:21:52 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.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 838DB201100 for ; Tue, 4 Mar 2025 12:00:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089622; cv=none; b=LsZBCb5fMgl/z057rMz04hz9JHEOPy4fbFKHkd+XKS5xEmnnUwOMtJJkAm2ZmBYAt1dScNaNncFiYFDncOCKT5nliHwp7qVfzCHVjLaPlz1XrpMQmXy7PqWNf9rJhJZTkF9/kNlfV5i/wqh3eqr/bABKDJNYiBO2+4LIVk6qG5g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089622; c=relaxed/simple; bh=bKMa8fqW6fjvU7IC3trRLzO9pEfTAhYdgpAHUxI/OBw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=X7jbwvhYdp7PPhz3oPMhQxMHFR1BD/MaEhoBGHsk3WHE8XiwY/KUUGsvL088cmp21xEFUzNcF5WLNxPv4BWj/9scQIS+DUPs4yzH7ISDDIoGuvbmwMa+8zJYUgsmHqFlqaKZsenGnuG/3FZyjy18oZE7pBENgGVjoFLuxFif7JA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=Qwji6+5/; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="Qwji6+5/" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-43bcfa6c57fso602825e9.0 for ; Tue, 04 Mar 2025 04:00:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1741089618; x=1741694418; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=XoVXTPIMs1CQCffXwitKYw9GB5bSc15mRPYc+pFsBJQ=; b=Qwji6+5/VTF28jPBNsvck4WH3bCdkBox/CpQySMUy7f1cBbLWvx1jM/ZrmFqbRptvg Zhu5mDNts4HG8s3mpw0Zxm+RbuIzJ89+0cf16mzFHjljvH1mW0FpF28j/I2iWgjRfKW1 ldhGibk7eZRbyzJRE+Xj9G/9gZp5EgpuHPYQpdHwWpJv2KLDAW+xgAo/joq+6viz0/4D ihXMRIR4K4vaj0HYQPgQQKGK7TXOSa2e2OqGG6kzd5gl3xCkoshbbDFYNlE+2jG6xZXr sctRpjnTDNJhI/UEAxJT2boTewuQaowVIz19Oq/K3kN/3xT14XMlXe8+e4JMTr/7n+A0 P0/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741089618; x=1741694418; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XoVXTPIMs1CQCffXwitKYw9GB5bSc15mRPYc+pFsBJQ=; b=gJ5PaacqdrBAYA79lxIEZRGezT6IqDmN0F8513udUdRk/gYMNUk+YQBLN0wOjwwNy/ aDh0G9PuXchdslvQw/tOzCG3atxyT5tkftmjPoSbjhodtQdRIlk9M545gVsfAo7Dp9TG P6b7zJtQHNumEaRnfrNoORvCHCIfgwaqr4NfoaSWdClu8U0P2wjS6Sbxk2rkmK9dYepK Zd31WZeTe/383VrZ+nLg7BwoBgi8kDJJ0nBFJ4HwJeT7+rACbOL2DMQZD1B8aqSuj754 E+0H/IQR9TO3L/eeYCAf5aZqwpMzGFVnDJRlBnWBmDXGb7/kJzO0Pg/C7CIWmvmUSJfK ahBg== X-Forwarded-Encrypted: i=1; AJvYcCWcHVXnj6kfP5Puc2pxvGGewTYXXgXjBl68pxCInbI48llrQzEdv2S/vxMfI0yqD34zh8PEjlx3vGOXGwQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzXBc0PaIkEEG8YOwTqjGqNeEBeaGykPN2UKF11MQMInZXaMPDd MLzYcqCC4DXUwT4xO7HgiIwXFC6HYAA58Tz+vb56yxuhJt4mAmDQRw7/g+r4QpY= X-Gm-Gg: ASbGncsD2t7kU1PHx6ttDKiUfNDoMGpWksR+Baq55SZj65pWc4d41/AxRBPerIIS7GG 5fHqAEGvEPiOIuL+Mn/V4fF/Ia44S3HF0RJO84nJLTjykNs0ZVDcFQqjLt7KdWU6xZHAPmzLeed 6G3S4nQtRxFA4wErA0mQlyzKd1r8IcHxkZBd9LAQS8sWGLwsQ+y7Ih0JLqoFLEwUvt+yM7o4x4D QgLrNKzC/ymIOieuifL2B42lk8+ouz2FVg5i0rMuzfntPMVx6Jejj7qwpCmbvpogeGOORgVJaoo VZaLlLCHaLOBwKyHVtuiq6kC1UA4xHqn X-Google-Smtp-Source: AGHT+IGSlj+jarr0JPc4Azcvd/gVJrRnnAK8bPpcD6KvNf1uMYM/W8wrPief42jLDcp+dxdCRnmVUw== X-Received: by 2002:a05:600c:19cd:b0:439:8346:505f with SMTP id 5b1f17b1804b1-43ba6747836mr129232375e9.20.1741089618179; Tue, 04 Mar 2025 04:00:18 -0800 (PST) Received: from localhost ([2a02:8308:a00c:e200::688c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-390e485e13fsm17295914f8f.100.2025.03.04.04.00.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 04:00:17 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: paul.walmsley@sifive.com, palmer@dabbelt.com, charlie@rivosinc.com, cleger@rivosinc.com, alex@ghiti.fr, Anup Patel , corbet@lwn.net, Alexandre Ghiti Subject: [PATCH v3 2/8] riscv: Fix riscv_online_cpu_vec Date: Tue, 4 Mar 2025 13:00:17 +0100 Message-ID: <20250304120014.143628-12-ajones@ventanamicro.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304120014.143628-10-ajones@ventanamicro.com> References: <20250304120014.143628-10-ajones@ventanamicro.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" We shouldn't probe when we already know vector is unsupported and we should probe when we see we don't yet know whether it's supported. Furthermore, we should ensure we've set the access type to unsupported when we don't have vector at all. Fixes: e7c9d66e313b ("RISC-V: Report vector unaligned access speed hwprobe") Reviewed-by: Alexandre Ghiti Signed-off-by: Andrew Jones --- arch/riscv/kernel/unaligned_access_speed.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/arch/riscv/kernel/unaligned_access_speed.c b/arch/riscv/kernel= /unaligned_access_speed.c index b7a8ff7ba6df..161964cf2abc 100644 --- a/arch/riscv/kernel/unaligned_access_speed.c +++ b/arch/riscv/kernel/unaligned_access_speed.c @@ -367,10 +367,12 @@ static void check_vector_unaligned_access(struct work= _struct *work __always_unus =20 static int riscv_online_cpu_vec(unsigned int cpu) { - if (!has_vector()) + if (!has_vector()) { + per_cpu(vector_misaligned_access, cpu) =3D RISCV_HWPROBE_MISALIGNED_VECT= OR_UNSUPPORTED; return 0; + } =20 - if (per_cpu(vector_misaligned_access, cpu) !=3D RISCV_HWPROBE_MISALIGNED_= VECTOR_UNSUPPORTED) + if (per_cpu(vector_misaligned_access, cpu) !=3D RISCV_HWPROBE_MISALIGNED_= VECTOR_UNKNOWN) return 0; =20 check_vector_unaligned_access_emulated(NULL); --=20 2.48.1 From nobody Sun Feb 8 02:21:52 2026 Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.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 62F6520127D for ; Tue, 4 Mar 2025 12:00:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089624; cv=none; b=eJu7mQb/zgXFByfbuoA0lo3H2cqnyoUCJkW6bhAn61yVtUtMhT3EtdeyFl8mZKeBaIeF8rQcZYF8OhtbkgcJTnP2O+XcPZIQta8p/ajdALD7MnAcPKBk6IZkVa4Fj61dWJQTPMehDHmct5imQmR0HVnLwdySeZCOc71A7FsXPVI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089624; c=relaxed/simple; bh=o9zHYBZOjWU+lYENxdkNUmWAHWMdM0ccAzzowc3/Wqk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Smq8sfRbCPFXzUWurdQGt3ip3HO9/bCnZ575YO4qFUxU0ytk6ESd+AbEDUpnn8P9cpc9hQpRRahyaL+kZi5UVJABJOgK+CmTKQsHs8ECqCKkXE2cvggCv1zQc7pchbSYh59vAHoQWXPOc0X9G250Msrhb17EDPzzqDIraYixyiQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=malMFTyy; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="malMFTyy" Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-390eebcc331so2304248f8f.1 for ; Tue, 04 Mar 2025 04:00:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1741089620; x=1741694420; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BL25umXnpXBBzwUoMnOj2fRLliDIrDaDucRmmKK49J0=; b=malMFTyyntcxxuOqIPiwXc4Vb6eE5/bdi71u7dZ1a/N1arijWciJP3fRpZGC3gkzPO U7X7UjjIUNR9eSt3ZQvRhV2reH1cAnfjntcFR9gG+mEEzsjMeFS+XMaYVEpcz7DLno6b iJvpJDprrGQz7hCRuOpX4ACOEuW90GrYGD+RfdRC0Ep/wYRlYjVLpRBKm9cggsQbxJ5/ F9FQIKDMLyTbGh3WD/8eAC85sK0lJG8CGVs+PF3cIhS9ePR7u78N+eaQ6REmRrcvQG+4 JWpLZa0VAtlOF6wMuBCoAq9aN5EANkFb1AD3QpZP+2hE56mRvWkK4RIELnP+Rf4XOvNA tBhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741089620; x=1741694420; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=BL25umXnpXBBzwUoMnOj2fRLliDIrDaDucRmmKK49J0=; b=c9LAYj71q+6yxMWudaBifewb7B433XpnZoolhYHdoWhAgm2K4xMKUnMsRNAtkwu9JI 13ZDEzjxb77b37SBpN1a/VsxioLjaxr2X9z93vFXIf0Ia1ZSXWfxNKqfJvPC6KsWdmQP /+Fl2v8TK8gIIwFLYF2eX/fSGQNLGpfebi1A6i1tAFtg1NOBr9IbjRp6p9XC8hA9BGgA dDkHXuq1WYZvYnwTUvC0TTSS198MAhpd9vtU0//cQHXDcEofODqznzBG1O1ZLOaljWs/ XHBTxU7WT8RxvDUySi/OHNxjp1hJ8jUndyCgp2/LPstmf2q7Zow/DZcAtnPvkCBDd6M7 n4bg== X-Forwarded-Encrypted: i=1; AJvYcCWhmH6Bz9IiyPDcXYso0yt79IbYRuZ1i5bA2bet7jLgf5T5gHPp8LOtk3DIreVVyUx9+nKZMqAz8lYH8zY=@vger.kernel.org X-Gm-Message-State: AOJu0YxrKQOd1kst7Zo5wrJk0WjHmWQVhCSs9ZRl7+5WfG3DkvKSfZuu SCEafbPP80hxO4UnXUCDtvwyN76xP1ODPNrZxpXkiRdA8NGndV1nc1RWykhXbZk= X-Gm-Gg: ASbGncvAaTTZdmh+Y1KDqgs3LhUN4+lZaxt2E8ftE2DBekVTHbb1PYUQ2FFAK4BBd+S p1CRdvKoRFBCPU+zmfJf7TFH3UFoc6kssLTTxdHd6jFrYQtfHwcZiVCqPCi4xavaK6mmxo0xiO2 uWZpj47N7C3jt2Dc3gKRrUQn3CwDiLh/ToHhdgvDdukrBP9LTxnk2d+zu2OqcPSl4iTbdPBHdLq OmaD9kRi+P2z5WXGjGBiXGodxLxQC1kXWPoJsYuXVda+P3OxKl1DEsLc8nyHssg0iP1w2BrQysO 7zRHMiaVfODHMxNB7SWO+sZ49SyPc9Cm X-Google-Smtp-Source: AGHT+IHGl4juoP1IGvAETEutihGGilncidBGnRXIsTr2+3oea3NO/pXu/tqvOIeNlFeGq7iMlTLrtA== X-Received: by 2002:a5d:64e8:0:b0:38d:df15:2770 with SMTP id ffacd0b85a97d-391154af01cmr2483532f8f.0.1741089619498; Tue, 04 Mar 2025 04:00:19 -0800 (PST) Received: from localhost ([2a02:8308:a00c:e200::688c]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43bcbdf7a9esm21728565e9.13.2025.03.04.04.00.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 04:00:19 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: paul.walmsley@sifive.com, palmer@dabbelt.com, charlie@rivosinc.com, cleger@rivosinc.com, alex@ghiti.fr, Anup Patel , corbet@lwn.net, Alexandre Ghiti Subject: [PATCH v3 3/8] riscv: Fix check_unaligned_access_all_cpus Date: Tue, 4 Mar 2025 13:00:18 +0100 Message-ID: <20250304120014.143628-13-ajones@ventanamicro.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304120014.143628-10-ajones@ventanamicro.com> References: <20250304120014.143628-10-ajones@ventanamicro.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" check_vector_unaligned_access_emulated_all_cpus(), like its name suggests, will return true when all cpus emulate unaligned vector accesses. If the function returned false it may have been because vector isn't supported at all (!has_vector()) or because at least one cpu doesn't emulate unaligned vector accesses. Since false may be returned for two cases, checking for it isn't sufficient when attempting to determine if we should proceed with the vector speed check. Move the !has_vector() functionality to check_unaligned_access_all_cpus() in order for check_vector_unaligned_access_emulated_all_cpus() to return false for a single case. Fixes: e7c9d66e313b ("RISC-V: Report vector unaligned access speed hwprobe") Reviewed-by: Alexandre Ghiti Signed-off-by: Andrew Jones --- arch/riscv/kernel/traps_misaligned.c | 6 ------ arch/riscv/kernel/unaligned_access_speed.c | 11 +++++++---- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/arch/riscv/kernel/traps_misaligned.c b/arch/riscv/kernel/traps= _misaligned.c index aacbd9d7196e..4354c87c0376 100644 --- a/arch/riscv/kernel/traps_misaligned.c +++ b/arch/riscv/kernel/traps_misaligned.c @@ -609,12 +609,6 @@ bool __init check_vector_unaligned_access_emulated_all= _cpus(void) { int cpu; =20 - if (!has_vector()) { - for_each_online_cpu(cpu) - per_cpu(vector_misaligned_access, cpu) =3D RISCV_HWPROBE_MISALIGNED_VEC= TOR_UNSUPPORTED; - return false; - } - schedule_on_each_cpu(check_vector_unaligned_access_emulated); =20 for_each_online_cpu(cpu) diff --git a/arch/riscv/kernel/unaligned_access_speed.c b/arch/riscv/kernel= /unaligned_access_speed.c index 161964cf2abc..02b485dc4bc4 100644 --- a/arch/riscv/kernel/unaligned_access_speed.c +++ b/arch/riscv/kernel/unaligned_access_speed.c @@ -403,13 +403,16 @@ static int __init vec_check_unaligned_access_speed_al= l_cpus(void *unused __alway =20 static int __init check_unaligned_access_all_cpus(void) { - bool all_cpus_emulated, all_cpus_vec_unsupported; + bool all_cpus_emulated; + int cpu; =20 all_cpus_emulated =3D check_unaligned_access_emulated_all_cpus(); - all_cpus_vec_unsupported =3D check_vector_unaligned_access_emulated_all_c= pus(); =20 - if (!all_cpus_vec_unsupported && - IS_ENABLED(CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS)) { + if (!has_vector()) { + for_each_online_cpu(cpu) + per_cpu(vector_misaligned_access, cpu) =3D RISCV_HWPROBE_MISALIGNED_VEC= TOR_UNSUPPORTED; + } else if (!check_vector_unaligned_access_emulated_all_cpus() && + IS_ENABLED(CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS)) { kthread_run(vec_check_unaligned_access_speed_all_cpus, NULL, "vec_check_unaligned_access_speed_all_cpus"); } --=20 2.48.1 From nobody Sun Feb 8 02:21:52 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.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 799F1202996 for ; Tue, 4 Mar 2025 12:00:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089624; cv=none; b=ZgW1P1y9SFLEtUFFRLf9GHJVipbKoawIPsQ5VYvEvN6rjhsBHYLyjGZMjVaFc3uAla1vUcH7SxPhkndwRef+HtLTD2dPunrpCKyb8EKK0TULmZ5wCB0QuWigAgycdsqXprIG8VBUqsJGJZrzUwyO0jpfY2xzC+YgkxyBNm5DTl8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089624; c=relaxed/simple; bh=37qdTKtD627l5e6Qxc7x2IExKolZyjtaGfIkopSnfWs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Tp0prmsEvnFcNHhC5nom+peO1D5Wkd8HXG3pHaO7eCBskXtyGCzgJDm26MEYagcIysmP9RK9wtZSilhYVLLLpDVBJf4achuwK4aUROBlgNaa9iW85/OJwwEnu1dzLw5fUY4ziHLVYEQVZMXhcCIj1sP9DyIht4O2b/7PYXzQPpo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=UkvTCHiB; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="UkvTCHiB" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-439ac3216dcso37767205e9.1 for ; Tue, 04 Mar 2025 04:00:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1741089621; x=1741694421; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=v5+0DAJFyGg9dqAHMt/74M2g7aCiRWRLOEFqoe5G5I8=; b=UkvTCHiBTyGl3Nw+fp/pvMuLhXk/il8e9d/VFc9Hj6ltvkSdfYE13AB1/2Xz8UxHmA GQy5L3po2ILOqNqLqzzYjqjdJJ+yjb1LWL7yIYsKE9ykH6E4pyAGOlwLPtQXQJh7bPAt 9RpTIUw1yv4TZaW6lSqpfjEGpERRgV3v0xMwkD5Q9JEZqYp3pCiX2y9wytH3/MWIu8WS VZNbc2waz4HSE2hvbZDsgFEFZrcmp3T37N4O/VVzb2lUstp5APYaCDkXMKJj4kP373DZ LUcm3i5yYXy2CQn4ihVValkcBv7sohcgzTTD68twpo5x8YTH83pXjEhxGhZv36ATxdUV Rp7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741089621; x=1741694421; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=v5+0DAJFyGg9dqAHMt/74M2g7aCiRWRLOEFqoe5G5I8=; b=Q6W95tljTaU/RgZPscDngqqSiBd/mMe4arf1RlxvU8BHoICuBIDIX3sB9UXiPHdzTj cMob3qjq4zXGbSztXUNGiRUIVJ0SFrjFAKvI+DNQaIxMGKov7kRyOo5r82dzCis3XF0H /dUpeuhemwgrAeQxLn8KgcaZsZRNDA8XPmrG8Nz2EpNP4gpUdAb9bvT6McDLJ5M0awOU OPQ3j0R8tNIo639zCv9TK4WALProEzYv8FE+cNj4YveP91aRJUVQqWeDca4j3nTIXF5z bIghu0rzABqGS5+7yXIdHUPSQW5hGtwE834nKgGe/TGrWBO8Q74eNF3FvsllvDn1Mcmr 8Zqw== X-Forwarded-Encrypted: i=1; AJvYcCUrqDy9uz/JY8Ww8pI+wYEM2R04IN2fzHflzm0VFGjA67WVwjOvXbUF4KWxe6mCfgex51E0wv1j6TQHY3U=@vger.kernel.org X-Gm-Message-State: AOJu0YxUWMils/eYW0kcndUpCbIi5ly4RiMiiJvaG8Z/efpG7k1+hNxS GcWbAlj4x5MisL+hsvh2jIqqaM9nKyJXWgiKvKHqQB+HucVo6sSB1awtaAk+pRw= X-Gm-Gg: ASbGncvAFozneHYYGhryAvCOVF4rA6+vbcRIf8gsUwcH36nNDVPEziPQ+tv3C0eMNNQ 9T6v3UFv9yKQNasnUqexaE4UQBtoFpBkODFwTIjMiRCfZzhelUVe69W491ugeoiwssAi4t9/e0o lZgAwDs3KxIyj6cmWi31LuBTiiBxE4KyWCFh42kbNVqrGZCLfRWkNAupD3bS0PISDtMXdA7+bTA pcojlS/xOOZ/xr0DC/zzo3jrMgxGvJuAgHv8C/xLC3RkMsE7zgk0sa1pvCSr0R2v/aRVqA4SNV5 i1CAMnPutvzWCWw3c13FFLAABVUVmwyh X-Google-Smtp-Source: AGHT+IEqMgV5t8PcK9JSG+SOO4LPXPlwofpngejjCplSgEhGn5nYR0XjUC86Q3nC0sypwkMwdVM5mQ== X-Received: by 2002:a05:600c:4693:b0:439:8523:36cc with SMTP id 5b1f17b1804b1-43ba66e66d7mr161122735e9.11.1741089620734; Tue, 04 Mar 2025 04:00:20 -0800 (PST) Received: from localhost ([2a02:8308:a00c:e200::688c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-390e4795962sm17966864f8f.13.2025.03.04.04.00.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 04:00:20 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: paul.walmsley@sifive.com, palmer@dabbelt.com, charlie@rivosinc.com, cleger@rivosinc.com, alex@ghiti.fr, Anup Patel , corbet@lwn.net, Alexandre Ghiti Subject: [PATCH v3 4/8] riscv: Change check_unaligned_access_speed_all_cpus to void Date: Tue, 4 Mar 2025 13:00:19 +0100 Message-ID: <20250304120014.143628-14-ajones@ventanamicro.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304120014.143628-10-ajones@ventanamicro.com> References: <20250304120014.143628-10-ajones@ventanamicro.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: quoted-printable The return value of check_unaligned_access_speed_all_cpus() is always zero, so make the function void so we don't need to concern ourselves with it. The change also allows us to tidy up check_unaligned_access_all_cpus() a bit. Reviewed-by: Cl=C3=A9ment L=C3=A9ger Reviewed-by: Alexandre Ghiti Signed-off-by: Andrew Jones --- arch/riscv/kernel/unaligned_access_speed.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/arch/riscv/kernel/unaligned_access_speed.c b/arch/riscv/kernel= /unaligned_access_speed.c index 02b485dc4bc4..780f1c5f512a 100644 --- a/arch/riscv/kernel/unaligned_access_speed.c +++ b/arch/riscv/kernel/unaligned_access_speed.c @@ -218,7 +218,7 @@ static int riscv_offline_cpu(unsigned int cpu) } =20 /* Measure unaligned access speed on all CPUs present at boot in parallel.= */ -static int __init check_unaligned_access_speed_all_cpus(void) +static void __init check_unaligned_access_speed_all_cpus(void) { unsigned int cpu; unsigned int cpu_count =3D num_possible_cpus(); @@ -226,7 +226,7 @@ static int __init check_unaligned_access_speed_all_cpus= (void) =20 if (!bufs) { pr_warn("Allocation failure, not measuring misaligned performance\n"); - return 0; + return; } =20 /* @@ -261,12 +261,10 @@ static int __init check_unaligned_access_speed_all_cp= us(void) } =20 kfree(bufs); - return 0; } #else /* CONFIG_RISCV_PROBE_UNALIGNED_ACCESS */ -static int __init check_unaligned_access_speed_all_cpus(void) +static void __init check_unaligned_access_speed_all_cpus(void) { - return 0; } #endif =20 @@ -403,10 +401,10 @@ static int __init vec_check_unaligned_access_speed_al= l_cpus(void *unused __alway =20 static int __init check_unaligned_access_all_cpus(void) { - bool all_cpus_emulated; int cpu; =20 - all_cpus_emulated =3D check_unaligned_access_emulated_all_cpus(); + if (!check_unaligned_access_emulated_all_cpus()) + check_unaligned_access_speed_all_cpus(); =20 if (!has_vector()) { for_each_online_cpu(cpu) @@ -417,9 +415,6 @@ static int __init check_unaligned_access_all_cpus(void) NULL, "vec_check_unaligned_access_speed_all_cpus"); } =20 - if (!all_cpus_emulated) - return check_unaligned_access_speed_all_cpus(); - return 0; } =20 --=20 2.48.1 From nobody Sun Feb 8 02:21:52 2026 Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (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 91061202C46 for ; Tue, 4 Mar 2025 12:00:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089625; cv=none; b=GWN/ELgNEd7krCEP1REBXhwU7I/kfTTu0jAiDxjhYVjEAJPKCiRLIZvbKc/mb6XzF2rBW/injBac3Q63thKFi78nXMkdcBVlAa1yTlZUjgpVw8smjPqy83MCHynOSjM76aUKs9TEO4kq52hBX60lAmpAApX3I3NKLvzvx546zcc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089625; c=relaxed/simple; bh=ZYlkgyx4zI7Kcsijhw4F+FJvIMPd6j6bFB1dgFR6pQA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=aAlMoJvq3dG8DPAfhuGusYcWOsMh2DAY7tnTIHOusPyj1Daph3CFPN4bm4iDPJMKJfdQkogqsSPKfNB8bTg6NxZVFMktkulbpocSbyjEgi0n63QRme7Bj49NiLvJPMpltCjA1p76j+qY5bfvnydkGuTLJTlq2r1haR6o6KI+0Uo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=JSyVTiO6; arc=none smtp.client-ip=209.85.221.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="JSyVTiO6" Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-390e3b3d432so3749932f8f.2 for ; Tue, 04 Mar 2025 04:00:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1741089622; x=1741694422; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wuV5PBYNprCWaplq1fE9KG6ZTDkt+mehdrAbLFdmJ0U=; b=JSyVTiO60eUW7U86lAkEvD6cF2MgMFel8AkDQ8lcAs/elGXLIkwZ1gzPUt8wMQ0V8+ okc5K+N8MNK1oiuG40zJnbDA/6/ZHVOhduCAhjKs/qwvkZlmBjXMMRdaVwk7Ih0iz80O jJjOUyv3TrXMvD7VjqVthT9gp+t65LVBTjl1zlw6Qan03cH4jUF2nNjfmpGXTD42Jr7d YQZXgi7QVph6/A5O3B6RQOtti1tMsq9QxqdBz8GWiVqIJbgBhWUu5FMVHJPYCeftH9WC dQJ0gsCvcV0jewVm4+HPhMJiO51XjcXFHKD6rVnOD863leUxLnTvKszihVsbcQFvpVVv yleA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741089622; x=1741694422; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wuV5PBYNprCWaplq1fE9KG6ZTDkt+mehdrAbLFdmJ0U=; b=N7lw5J63kl4lTmPixAPBLOKL9ssobHJiu5ZE0wcQv56PJzeiow0VSs9mQNsVRIMzIh jrdKdNNoHAJs0u8USCyGZE0aN0RR+MkZtPmI2BZmIF3qDPF3bczNHy/Kr+Qaia9f2YNZ LJD2/Amn22Pqvs06m1AAagEsH8VjRNpKBN37T67TBqnNj4YN8JA5wSAtXfyhdTgAuy8t i8HLLv3yqcxPN23we2elCf9Y5pKQ3psnjHMlBKDIIneuyAjU+ZnDe6earwkeKpz4nJuJ 6/2bazaiC8oEGp4NeOPCQg4WfmQsfZBEqAkpvlxxe5UBmHdJ2PT62FrODeBpxKwl4cdw IYng== X-Forwarded-Encrypted: i=1; AJvYcCWvoD5uD86c0z71f68FC4zrs5y+1nNso4yRIQ5uLy9VIJhRqDpdCI+fWxYdc7XT4MBJTr4KubwcNmyyNgQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzJaQmjlrolXPJFNyoDQh3+gjQE7BDaadNkkCku5emaY7dqwkZr ZD5ir3UarNyZsTi1KyMly0n8fzAO0J4Ok9b09acWszCwe/xqKil3dOa4iUcxpRA= X-Gm-Gg: ASbGncttuLeKLjH+eyA0dJWyC2PmwauVnJJ5CmEpZtDRmJH+KjxDB/NKVLY4oZ62qB3 w7mpGwlnrSc8r6ch0s0jIF5QGdCpWjPFNucUf/NY/71PyuTUQWvc/JEhDgcUGtv57wMCselqMFx h7UN8qBK6xprxy6k0qr4oxbEJV4KWMOZD+6+YdD8kvMYyWR/dyeuKbNh+onDSs8fHfd+GDoHuRq W5U/CputtByp+eTCNWhydH99MXuxZXPy0pNY4o0V7SmdZcG0PblZT+IAXMsMRiw9iMSf7CiYz0S CR4c2rDizOxoAjjGLnpMBUq49tzX+ozU X-Google-Smtp-Source: AGHT+IGcci4G63CqfkUGtRt/jLkQ1vLNMVzi6Jgp49YWUaQ3MwCP8mUgjvhFVQaeb/Hx3FHq79pKNw== X-Received: by 2002:a05:6000:42c9:b0:38f:43c8:f765 with SMTP id ffacd0b85a97d-390ec7d2e69mr10172733f8f.26.1741089621937; Tue, 04 Mar 2025 04:00:21 -0800 (PST) Received: from localhost ([2a02:8308:a00c:e200::688c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-390e4844892sm17593655f8f.64.2025.03.04.04.00.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 04:00:21 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: paul.walmsley@sifive.com, palmer@dabbelt.com, charlie@rivosinc.com, cleger@rivosinc.com, alex@ghiti.fr, Anup Patel , corbet@lwn.net, Alexandre Ghiti Subject: [PATCH v3 5/8] riscv: Fix set up of cpu hotplug callbacks Date: Tue, 4 Mar 2025 13:00:20 +0100 Message-ID: <20250304120014.143628-15-ajones@ventanamicro.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304120014.143628-10-ajones@ventanamicro.com> References: <20250304120014.143628-10-ajones@ventanamicro.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: quoted-printable CPU hotplug callbacks should be set up even if we detected all current cpus emulate misaligned accesses, since we want to ensure our expectations of all cpus emulating is maintained. Fixes: 6e5ce7f2eae3 ("riscv: Decouple emulated unaligned accesses from acce= ss speed") Fixes: e7c9d66e313b ("RISC-V: Report vector unaligned access speed hwprobe") Reviewed-by: Cl=C3=A9ment L=C3=A9ger Reviewed-by: Alexandre Ghiti Signed-off-by: Andrew Jones --- arch/riscv/kernel/unaligned_access_speed.c | 27 +++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/arch/riscv/kernel/unaligned_access_speed.c b/arch/riscv/kernel= /unaligned_access_speed.c index 780f1c5f512a..c9d3237649bb 100644 --- a/arch/riscv/kernel/unaligned_access_speed.c +++ b/arch/riscv/kernel/unaligned_access_speed.c @@ -247,13 +247,6 @@ static void __init check_unaligned_access_speed_all_cp= us(void) /* Check core 0. */ smp_call_on_cpu(0, check_unaligned_access, bufs[0], true); =20 - /* - * Setup hotplug callbacks for any new CPUs that come online or go - * offline. - */ - cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "riscv:online", - riscv_online_cpu, riscv_offline_cpu); - out: for_each_cpu(cpu, cpu_online_mask) { if (bufs[cpu]) @@ -383,13 +376,6 @@ static int __init vec_check_unaligned_access_speed_all= _cpus(void *unused __alway { schedule_on_each_cpu(check_vector_unaligned_access); =20 - /* - * Setup hotplug callbacks for any new CPUs that come online or go - * offline. - */ - cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "riscv:online", - riscv_online_cpu_vec, NULL); - return 0; } #else /* CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS */ @@ -415,6 +401,19 @@ static int __init check_unaligned_access_all_cpus(void) NULL, "vec_check_unaligned_access_speed_all_cpus"); } =20 + /* + * Setup hotplug callbacks for any new CPUs that come online or go + * offline. + */ +#ifdef CONFIG_RISCV_PROBE_UNALIGNED_ACCESS + cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "riscv:online", + riscv_online_cpu, riscv_offline_cpu); +#endif +#ifdef CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS + cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "riscv:online", + riscv_online_cpu_vec, NULL); +#endif + return 0; } =20 --=20 2.48.1 From nobody Sun Feb 8 02:21:52 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 0D9E9202995 for ; Tue, 4 Mar 2025 12:00:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089626; cv=none; b=cbKE4A8p5gUh840ljfXLT4tt5up+XJSyVB8/nV6baVGRdfpJI83ZtPMRKU/TwJyokDQ3+awdqAl3pWjGbwU77E657IzRYvK+9NL24Yvjw9fZEAUGhG1vha58WbmGF3bp3DSNCTejFcVxK8qbyYe2cn6LGUgZ59Pg0+dgh2piACI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089626; c=relaxed/simple; bh=XQFofp4oQ2VYb6uesqvYvCQY5act9lGNRcE9BKooBUg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dMkqkurTrh/xytztto8NUxiURPZ3+BW2DkALE/uYiuD8BSlQqoDcDbkMDOyfXmcKGAQigkUdKiZN3vjmPpEocHybH/R6uQWDeq4jucZXKNdqG63/vRFliRoDZSZk7ZGwcE0MmakuX0i6mtOCDo6PGEKVCdyU9S5HN1pZiKjcGzc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=TOWIUasV; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="TOWIUasV" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-43bbc8b7c65so23965925e9.0 for ; Tue, 04 Mar 2025 04:00:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1741089623; x=1741694423; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qKhFFnzXyWbQAGhMWM6ZzS3r16qIjR6tEgWbgaYi/y8=; b=TOWIUasVD0Zy1yhUTpZPmn6YupxGAf2fhApm047i+SFOj1OCv3DoQPWp736+VwRthd ovqkMvKta8y4L+EJKZncyMXtWgEorT0PgHwf0q85uZ5CDJ+awTWVzhkKrWEo3Neg+fQi hNr3bzQnYcWSQnk7rm3kVme10lUFcN+X+H8PcTmjslAZdlSYbFf26LpDF5rgQRSxvE4A la5jRdQHe3iL3AkicMWFDn8gOyZc6dvI3hx/WETE9XnWyJOXRSWp0JCv2DkrPA8DSguh QPyWuDrAxzeLDzztvkJTImBEnStCjkY6qQ2ZkSAz9LGEGQZpnOlYy9clSYcWs3uq1PVq PlSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741089623; x=1741694423; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qKhFFnzXyWbQAGhMWM6ZzS3r16qIjR6tEgWbgaYi/y8=; b=WYozWR6d2udGmzoOnATtiORYmLe4EbuL8ViRPYi5vuvsI9ISqBX6KKW04YQPCAoMf5 yLTyZh2ECcL2yhyHXA1ywiG4hHMq3DCiUtfYBxKNWEuU7GgNXFn/+MPPSSbrT2aC8mBz pjCSk2/1IAFDniXxBb9lcEdSDNWlZbbZK8Y3mL1BJUB2dnanDZ9gWZbS5B+Q602EvKeQ xm+kkLJX9A3Zk/pMBr0WnIibpSS+sDex0R+LYCbmU5iC+M9RnVyzfaubflaftlt09XZL M9x/n5ws3B/lFhu0v/V/fLs01oSG/JbT9+J47xxjxgkPczd1kf2rOzFGr+WXJ+SK/B/R CXyQ== X-Forwarded-Encrypted: i=1; AJvYcCVXMVxCnB4gmfF8AuIuR3htXOQQCSkdyTlqZ05zCIp3C1j4qtlD1yHMFTRapHlVRY5AM/DimAClXkbhki8=@vger.kernel.org X-Gm-Message-State: AOJu0YyIpOA2//XKOvLxKHYGe5i22o9fkZ6/kQ+NABrMI/BBdj3B8lFQ fXWCPevITZstLUn1lrbBlEdKIpVeBVjbue3Djbk3ra7001cN7B7W4GCgVBk1Ybg= X-Gm-Gg: ASbGncvztSU1hWBpU+wvJaGf5zanVgdCAbWo7cabhHfHK57jqN/ECP/YUB6EI6KhSOI 3r0VDn4y72Xlqd200OzmlS6Ypzx9ysE7+mxWQYYLoyBvw52F1joPigTvh2qB3GWCzzNYfVydXUY +1xePr/y6koEc1TlZayxrmPBxruvCWb+uLRd7OCPmzl3Ny7xVWmL3QCauY7TJlsIefvweLzgrWj vZZjwMOVpadHrj5Z5GX5SUHbr7KDL3bMtAJNY61GYUXxszkkZx4toG+jaWqj2DBdqKUemtvn8Jl N604kLVXEmGAJ5riPUFDb0kN7AsEkoto X-Google-Smtp-Source: AGHT+IGwC3NsIIWUjYgv3G2JO2vmP8wTEbddF/LPoT4rEkNoTbLO+SirlMYHhSaFI3g4F2HReIh7PQ== X-Received: by 2002:a05:600c:1d8e:b0:439:b565:f457 with SMTP id 5b1f17b1804b1-43ba675c3afmr162133765e9.27.1741089623258; Tue, 04 Mar 2025 04:00:23 -0800 (PST) Received: from localhost ([2a02:8308:a00c:e200::688c]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43aba5871f4sm230729625e9.39.2025.03.04.04.00.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 04:00:22 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: paul.walmsley@sifive.com, palmer@dabbelt.com, charlie@rivosinc.com, cleger@rivosinc.com, alex@ghiti.fr, Anup Patel , corbet@lwn.net, Alexandre Ghiti Subject: [PATCH v3 6/8] riscv: Fix set up of vector cpu hotplug callback Date: Tue, 4 Mar 2025 13:00:21 +0100 Message-ID: <20250304120014.143628-16-ajones@ventanamicro.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304120014.143628-10-ajones@ventanamicro.com> References: <20250304120014.143628-10-ajones@ventanamicro.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Whether or not we have RISCV_PROBE_VECTOR_UNALIGNED_ACCESS we need to set up a cpu hotplug callback to check if we have vector at all, since, when we don't have vector, we need to set vector_misaligned_access to unsupported rather than leave it the default of unknown. Fixes: e7c9d66e313b ("RISC-V: Report vector unaligned access speed hwprobe") Reviewed-by: Alexandre Ghiti Signed-off-by: Andrew Jones --- arch/riscv/kernel/unaligned_access_speed.c | 31 +++++++++++----------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/arch/riscv/kernel/unaligned_access_speed.c b/arch/riscv/kernel= /unaligned_access_speed.c index c9d3237649bb..d9d4ca1fadc7 100644 --- a/arch/riscv/kernel/unaligned_access_speed.c +++ b/arch/riscv/kernel/unaligned_access_speed.c @@ -356,6 +356,20 @@ static void check_vector_unaligned_access(struct work_= struct *work __always_unus per_cpu(vector_misaligned_access, cpu) =3D speed; } =20 +/* Measure unaligned access speed on all CPUs present at boot in parallel.= */ +static int __init vec_check_unaligned_access_speed_all_cpus(void *unused _= _always_unused) +{ + schedule_on_each_cpu(check_vector_unaligned_access); + + return 0; +} +#else /* CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS */ +static int __init vec_check_unaligned_access_speed_all_cpus(void *unused _= _always_unused) +{ + return 0; +} +#endif + static int riscv_online_cpu_vec(unsigned int cpu) { if (!has_vector()) { @@ -363,27 +377,16 @@ static int riscv_online_cpu_vec(unsigned int cpu) return 0; } =20 +#ifdef CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS if (per_cpu(vector_misaligned_access, cpu) !=3D RISCV_HWPROBE_MISALIGNED_= VECTOR_UNKNOWN) return 0; =20 check_vector_unaligned_access_emulated(NULL); check_vector_unaligned_access(NULL); - return 0; -} - -/* Measure unaligned access speed on all CPUs present at boot in parallel.= */ -static int __init vec_check_unaligned_access_speed_all_cpus(void *unused _= _always_unused) -{ - schedule_on_each_cpu(check_vector_unaligned_access); +#endif =20 return 0; } -#else /* CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS */ -static int __init vec_check_unaligned_access_speed_all_cpus(void *unused _= _always_unused) -{ - return 0; -} -#endif =20 static int __init check_unaligned_access_all_cpus(void) { @@ -409,10 +412,8 @@ static int __init check_unaligned_access_all_cpus(void) cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "riscv:online", riscv_online_cpu, riscv_offline_cpu); #endif -#ifdef CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "riscv:online", riscv_online_cpu_vec, NULL); -#endif =20 return 0; } --=20 2.48.1 From nobody Sun Feb 8 02:21:52 2026 Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.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 5B4BC203719 for ; Tue, 4 Mar 2025 12:00:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089628; cv=none; b=GJOv/6mZOqnacoGJVqzMncjThcNdI8Gibj5Ty3S4f1E/IhKWdce8nVfVEk4npXH4r6BayLG5ekd4NevPu3Bv8hC34IHJcEuauNAyRN6T/YTsuQvT20jTEQr06xA/PdhLognE95saA5h9QIdL0ywvUNSV8oERqqbnAqXUD1vgJKk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089628; c=relaxed/simple; bh=bN3N/w0YpFIFqTd7bEq/RU5i6s96R3kdEXdmYdu8VEk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fr+Z6Nee/9n3f9LBL5KBKknGu9Yg0mZgSzBasGAxVyCyU+q8oZ1/z4UT1hGD42RZJY06X9WJvZLOQ6b8mcxw6ioOsC433ymzfgvcoYGVcyzRs3/WF++YKo8XKTXU/hKikUpJi1jYqT0Jv5IiTXs3v2+zsolcyDzRAV2y1IUajM0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=HMqkrFkx; arc=none smtp.client-ip=209.85.128.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="HMqkrFkx" Received: by mail-wm1-f41.google.com with SMTP id 5b1f17b1804b1-43bcb1a9890so4689295e9.0 for ; Tue, 04 Mar 2025 04:00:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1741089625; x=1741694425; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GsvuidqxLzlkQbg+w8AmHQXcpq7FTNK4bF6tx3heuhc=; b=HMqkrFkxs7Zpcwb+47wi8Th/N0do9UW//3rMHRHjBl2TlNzSIZLX7dlRxZMKnqfgWF DZrDcxoyu6H3WOGdI6V6Ea5ZAPI1hZrqUU/oFBUe5Y+GEEs9kixGL3pMyFbQ6IQI0j4P rn/Yopp7azJKGvLTJvkbQlffYaR+3rwVb2A35zwx53tbLpqwIL41cUMCea+Ou95ZOfzq K2Y6QeQmnj6O/P9nc5r2atXzXNwxPRY2AFsv4rWb0Knh/R+k9NwBrd8p9Ttl+V20T8BD p3Mit5W5lmJGl3bd6ZT94i2S5z9q/SWxOBtMxfrefH8r48nvspW63CnF9sWPdHTwZGRt 2HEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741089625; x=1741694425; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GsvuidqxLzlkQbg+w8AmHQXcpq7FTNK4bF6tx3heuhc=; b=i4Yq8yuyhiRPmu3yxggwBc6sjt4kubWBWsVydYdNo4TTIOdeVlrLwDqtb6Oat499QN DLKaFd15FF1M24m6JZhWQ8MNRuFi2gDeRj+9hw/QncHAw/ErvajjeodKYze/YJ0lWJc6 aJZ0SqEl5IBVKYJby/X0mz/XzgWb2ncRxcTzzsfOKaETOHeszkq6D0KUjJMOAZQ1RTKQ um+3lMmpYfMh/V2DeaLvAWEUqzsX2BLOy5PXAo4RAKjWO5tMJAREEQ/jtHm13kiGt7cD Ie5O+15ZyrPQwUXpYbXLw3S1FT5v0gNLm5qZOPJlNqPDPyUstbyQG7cnzPr3ymv2hVz0 ZQMw== X-Forwarded-Encrypted: i=1; AJvYcCVYyLJN+ghFu6rLExuzfAzLVSt1sjiKHZQW2NC0XOkSa9XzijydMXXyFByWm+S+6Vslj6vW5jEjL0RSI4w=@vger.kernel.org X-Gm-Message-State: AOJu0Yzhaufxwm+8hc+yhfJYTP5p+pjcbptiMk1tjP8EM1NbHW06rTBA 42PaRXRQ3C1SMuS1tx6dYlUrgYR7CvmX+UC8puylVQFEgXIn+UTbS2mTi3Q6z4U= X-Gm-Gg: ASbGncvajRu0UzoSFZSIMaQoS/8EMt9Q59l6Nu3FEz8G5bDYUzDNoRW6R5nF/xucSZ5 opPQytUPegoVJv65/3flcwnxcERvVh+srtydCawT99Vi2WyjaL6vKIV5Xn2RW7oCb5yXhvhGaD+ ekVUZoVHZjrfWWLW8N3YFcqxRbNMZTC59AJS2cKtJhQO21CW73P0tqeRF4tGn2vG3du/bI6c8bI SgH2xFlUhW2YPiFDssT/2FrxKA4CxvLNu020xbKENpz8dVbYbKYFHNTXcjwzISBBhiXyOt7oVkR zHVWxTDoAJI0KKPNNltEBJPKgwsAUpkB X-Google-Smtp-Source: AGHT+IGQ5X8LL0DZ3UPHsnfOapJsPrretEHDDQzUDGpCH+nIE/GuITrQTn3tEhqjhrUytGCLIAwsgA== X-Received: by 2002:a05:6000:144a:b0:391:bc8:564a with SMTP id ffacd0b85a97d-3911561aaeemr2394550f8f.22.1741089624562; Tue, 04 Mar 2025 04:00:24 -0800 (PST) Received: from localhost ([2a02:8308:a00c:e200::688c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-390e4844ac6sm17312277f8f.71.2025.03.04.04.00.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 04:00:24 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: paul.walmsley@sifive.com, palmer@dabbelt.com, charlie@rivosinc.com, cleger@rivosinc.com, alex@ghiti.fr, Anup Patel , corbet@lwn.net Subject: [PATCH v3 7/8] riscv: Add parameter for skipping access speed tests Date: Tue, 4 Mar 2025 13:00:22 +0100 Message-ID: <20250304120014.143628-17-ajones@ventanamicro.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304120014.143628-10-ajones@ventanamicro.com> References: <20250304120014.143628-10-ajones@ventanamicro.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Allow skipping scalar and vector unaligned access speed tests. This is useful for testing alternative code paths and to skip the tests in environments where they run too slowly. All CPUs must have the same unaligned access speed. The code movement is because we now need the scalar cpu hotplug callback to always run, so we need to bring it and its supporting functions out of CONFIG_RISCV_PROBE_UNALIGNED_ACCESS. Signed-off-by: Andrew Jones --- arch/riscv/kernel/unaligned_access_speed.c | 187 +++++++++++++-------- 1 file changed, 121 insertions(+), 66 deletions(-) diff --git a/arch/riscv/kernel/unaligned_access_speed.c b/arch/riscv/kernel= /unaligned_access_speed.c index d9d4ca1fadc7..18e334549544 100644 --- a/arch/riscv/kernel/unaligned_access_speed.c +++ b/arch/riscv/kernel/unaligned_access_speed.c @@ -24,8 +24,12 @@ DEFINE_PER_CPU(long, misaligned_access_speed) =3D RISCV_HWPROBE_MISALIGNED= _SCALAR_UNKNOWN; DEFINE_PER_CPU(long, vector_misaligned_access) =3D RISCV_HWPROBE_MISALIGNE= D_VECTOR_UNSUPPORTED; =20 -#ifdef CONFIG_RISCV_PROBE_UNALIGNED_ACCESS +static long unaligned_scalar_speed_param =3D RISCV_HWPROBE_MISALIGNED_SCAL= AR_UNKNOWN; +static long unaligned_vector_speed_param =3D RISCV_HWPROBE_MISALIGNED_VECT= OR_UNKNOWN; + static cpumask_t fast_misaligned_access; + +#ifdef CONFIG_RISCV_PROBE_UNALIGNED_ACCESS static int check_unaligned_access(void *param) { int cpu =3D smp_processor_id(); @@ -130,6 +134,50 @@ static void __init check_unaligned_access_nonboot_cpu(= void *param) check_unaligned_access(pages[cpu]); } =20 +/* Measure unaligned access speed on all CPUs present at boot in parallel.= */ +static void __init check_unaligned_access_speed_all_cpus(void) +{ + unsigned int cpu; + unsigned int cpu_count =3D num_possible_cpus(); + struct page **bufs =3D kcalloc(cpu_count, sizeof(*bufs), GFP_KERNEL); + + if (!bufs) { + pr_warn("Allocation failure, not measuring misaligned performance\n"); + return; + } + + /* + * Allocate separate buffers for each CPU so there's no fighting over + * cache lines. + */ + for_each_cpu(cpu, cpu_online_mask) { + bufs[cpu] =3D alloc_pages(GFP_KERNEL, MISALIGNED_BUFFER_ORDER); + if (!bufs[cpu]) { + pr_warn("Allocation failure, not measuring misaligned performance\n"); + goto out; + } + } + + /* Check everybody except 0, who stays behind to tend jiffies. */ + on_each_cpu(check_unaligned_access_nonboot_cpu, bufs, 1); + + /* Check core 0. */ + smp_call_on_cpu(0, check_unaligned_access, bufs[0], true); + +out: + for_each_cpu(cpu, cpu_online_mask) { + if (bufs[cpu]) + __free_pages(bufs[cpu], MISALIGNED_BUFFER_ORDER); + } + + kfree(bufs); +} +#else /* CONFIG_RISCV_PROBE_UNALIGNED_ACCESS */ +static void __init check_unaligned_access_speed_all_cpus(void) +{ +} +#endif + DEFINE_STATIC_KEY_FALSE(fast_unaligned_access_speed_key); =20 static void modify_unaligned_access_branches(cpumask_t *mask, int weight) @@ -188,21 +236,29 @@ arch_initcall_sync(lock_and_set_unaligned_access_stat= ic_branch); =20 static int riscv_online_cpu(unsigned int cpu) { - static struct page *buf; - /* We are already set since the last check */ - if (per_cpu(misaligned_access_speed, cpu) !=3D RISCV_HWPROBE_MISALIGNED_S= CALAR_UNKNOWN) + if (per_cpu(misaligned_access_speed, cpu) !=3D RISCV_HWPROBE_MISALIGNED_S= CALAR_UNKNOWN) { + goto exit; + } else if (unaligned_scalar_speed_param !=3D RISCV_HWPROBE_MISALIGNED_SCA= LAR_UNKNOWN) { + per_cpu(misaligned_access_speed, cpu) =3D unaligned_scalar_speed_param; goto exit; - - check_unaligned_access_emulated(NULL); - buf =3D alloc_pages(GFP_KERNEL, MISALIGNED_BUFFER_ORDER); - if (!buf) { - pr_warn("Allocation failure, not measuring misaligned performance\n"); - return -ENOMEM; } =20 - check_unaligned_access(buf); - __free_pages(buf, MISALIGNED_BUFFER_ORDER); +#ifdef CONFIG_RISCV_PROBE_UNALIGNED_ACCESS + { + static struct page *buf; + + check_unaligned_access_emulated(NULL); + buf =3D alloc_pages(GFP_KERNEL, MISALIGNED_BUFFER_ORDER); + if (!buf) { + pr_warn("Allocation failure, not measuring misaligned performance\n"); + return -ENOMEM; + } + + check_unaligned_access(buf); + __free_pages(buf, MISALIGNED_BUFFER_ORDER); + } +#endif =20 exit: set_unaligned_access_static_branches(); @@ -217,50 +273,6 @@ static int riscv_offline_cpu(unsigned int cpu) return 0; } =20 -/* Measure unaligned access speed on all CPUs present at boot in parallel.= */ -static void __init check_unaligned_access_speed_all_cpus(void) -{ - unsigned int cpu; - unsigned int cpu_count =3D num_possible_cpus(); - struct page **bufs =3D kcalloc(cpu_count, sizeof(*bufs), GFP_KERNEL); - - if (!bufs) { - pr_warn("Allocation failure, not measuring misaligned performance\n"); - return; - } - - /* - * Allocate separate buffers for each CPU so there's no fighting over - * cache lines. - */ - for_each_cpu(cpu, cpu_online_mask) { - bufs[cpu] =3D alloc_pages(GFP_KERNEL, MISALIGNED_BUFFER_ORDER); - if (!bufs[cpu]) { - pr_warn("Allocation failure, not measuring misaligned performance\n"); - goto out; - } - } - - /* Check everybody except 0, who stays behind to tend jiffies. */ - on_each_cpu(check_unaligned_access_nonboot_cpu, bufs, 1); - - /* Check core 0. */ - smp_call_on_cpu(0, check_unaligned_access, bufs[0], true); - -out: - for_each_cpu(cpu, cpu_online_mask) { - if (bufs[cpu]) - __free_pages(bufs[cpu], MISALIGNED_BUFFER_ORDER); - } - - kfree(bufs); -} -#else /* CONFIG_RISCV_PROBE_UNALIGNED_ACCESS */ -static void __init check_unaligned_access_speed_all_cpus(void) -{ -} -#endif - #ifdef CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS static void check_vector_unaligned_access(struct work_struct *work __alway= s_unused) { @@ -372,8 +384,8 @@ static int __init vec_check_unaligned_access_speed_all_= cpus(void *unused __alway =20 static int riscv_online_cpu_vec(unsigned int cpu) { - if (!has_vector()) { - per_cpu(vector_misaligned_access, cpu) =3D RISCV_HWPROBE_MISALIGNED_VECT= OR_UNSUPPORTED; + if (unaligned_vector_speed_param !=3D RISCV_HWPROBE_MISALIGNED_VECTOR_UNK= NOWN) { + per_cpu(vector_misaligned_access, cpu) =3D unaligned_vector_speed_param; return 0; } =20 @@ -388,30 +400,73 @@ static int riscv_online_cpu_vec(unsigned int cpu) return 0; } =20 +static const char * const speed_str[] __initconst =3D { NULL, NULL, "slow"= , "fast", "unsupported" }; + +static int __init set_unaligned_scalar_speed_param(char *str) +{ + if (!strcmp(str, speed_str[RISCV_HWPROBE_MISALIGNED_SCALAR_SLOW])) + unaligned_scalar_speed_param =3D RISCV_HWPROBE_MISALIGNED_SCALAR_SLOW; + else if (!strcmp(str, speed_str[RISCV_HWPROBE_MISALIGNED_SCALAR_FAST])) + unaligned_scalar_speed_param =3D RISCV_HWPROBE_MISALIGNED_SCALAR_FAST; + else if (!strcmp(str, speed_str[RISCV_HWPROBE_MISALIGNED_SCALAR_UNSUPPORT= ED])) + unaligned_scalar_speed_param =3D RISCV_HWPROBE_MISALIGNED_SCALAR_UNSUPPO= RTED; + else + return -EINVAL; + + return 1; +} +__setup("unaligned_scalar_speed=3D", set_unaligned_scalar_speed_param); + +static int __init set_unaligned_vector_speed_param(char *str) +{ + if (!strcmp(str, speed_str[RISCV_HWPROBE_MISALIGNED_VECTOR_SLOW])) + unaligned_vector_speed_param =3D RISCV_HWPROBE_MISALIGNED_VECTOR_SLOW; + else if (!strcmp(str, speed_str[RISCV_HWPROBE_MISALIGNED_VECTOR_FAST])) + unaligned_vector_speed_param =3D RISCV_HWPROBE_MISALIGNED_VECTOR_FAST; + else if (!strcmp(str, speed_str[RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPORT= ED])) + unaligned_vector_speed_param =3D RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPO= RTED; + else + return -EINVAL; + + return 1; +} +__setup("unaligned_vector_speed=3D", set_unaligned_vector_speed_param); + static int __init check_unaligned_access_all_cpus(void) { int cpu; =20 - if (!check_unaligned_access_emulated_all_cpus()) + if (unaligned_scalar_speed_param =3D=3D RISCV_HWPROBE_MISALIGNED_SCALAR_U= NKNOWN && + !check_unaligned_access_emulated_all_cpus()) { check_unaligned_access_speed_all_cpus(); - - if (!has_vector()) { + } else { + pr_info("scalar unaligned access speed set to '%s' by command line\n", + speed_str[unaligned_scalar_speed_param]); for_each_online_cpu(cpu) - per_cpu(vector_misaligned_access, cpu) =3D RISCV_HWPROBE_MISALIGNED_VEC= TOR_UNSUPPORTED; - } else if (!check_vector_unaligned_access_emulated_all_cpus() && - IS_ENABLED(CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS)) { + per_cpu(misaligned_access_speed, cpu) =3D unaligned_scalar_speed_param; + } + + if (!has_vector()) + unaligned_vector_speed_param =3D RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPO= RTED; + + if (unaligned_vector_speed_param =3D=3D RISCV_HWPROBE_MISALIGNED_VECTOR_U= NKNOWN && + !check_vector_unaligned_access_emulated_all_cpus() && + IS_ENABLED(CONFIG_RISCV_PROBE_VECTOR_UNALIGNED_ACCESS)) { kthread_run(vec_check_unaligned_access_speed_all_cpus, NULL, "vec_check_unaligned_access_speed_all_cpus"); + } else { + pr_info("vector unaligned access speed set to '%s' by command line\n", + speed_str[unaligned_vector_speed_param]); + for_each_online_cpu(cpu) + per_cpu(vector_misaligned_access, cpu) =3D unaligned_vector_speed_param; } =20 /* * Setup hotplug callbacks for any new CPUs that come online or go * offline. */ -#ifdef CONFIG_RISCV_PROBE_UNALIGNED_ACCESS cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "riscv:online", riscv_online_cpu, riscv_offline_cpu); -#endif cpuhp_setup_state_nocalls(CPUHP_AP_ONLINE_DYN, "riscv:online", riscv_online_cpu_vec, NULL); =20 --=20 2.48.1 From nobody Sun Feb 8 02:21:52 2026 Received: from mail-wr1-f51.google.com (mail-wr1-f51.google.com [209.85.221.51]) (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 813E62040A8 for ; Tue, 4 Mar 2025 12:00:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089629; cv=none; b=JEDxKYfSgm0BD5Nai8RR/QCEaNrIt4uPiMelhqNnfk7bleCwtSzB+TfuAN7isgyHvv5Nk5I0zvE6Gri8qisphLIUEHx4D5Rpq92ifQrRlCcJVWfShUCr6nbF5kXhknUyGvbsnfefXJhT4Oh8WGCBuW0hzf0sAfdfY2dLnl1/GdI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741089629; c=relaxed/simple; bh=HCTDVZLc27RfB3QlgUMKi3V9KsZa8/51pTH+CsMD1z4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gTJVKglsXkSrjS+FlZNch1arTPXWYRLhsrAik3TfLP2oBZ7MpIgNOvhQT8YEiwfETWtMfb4yYBi3pqWYiXJtr2LojBns2DIDvE0aNMzKmm+boBTu10NZ1Lde9h8ZMqt/riHx7eXDcdDkoL0Oo1Sv8mYvSTDEtn1WeCzLTjxqgmE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com; spf=pass smtp.mailfrom=ventanamicro.com; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b=fK8j81U/; arc=none smtp.client-ip=209.85.221.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ventanamicro.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ventanamicro.com header.i=@ventanamicro.com header.b="fK8j81U/" Received: by mail-wr1-f51.google.com with SMTP id ffacd0b85a97d-38a25d4b9d4so3347845f8f.0 for ; Tue, 04 Mar 2025 04:00:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1741089626; x=1741694426; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KvHP2BboCGauKM0TvBqQfBu7j1TlN9OaRIMMc+Vl6gA=; b=fK8j81U/AqVoW3rzpXJB/UpVv5DYoj/KLcdLyK1ygu0/UQabkISqT/9m6i7qyqPJz3 7oUabz5RzjkikGUz2zvGe+VqdFYdOgmbnp2yOZxVqDs1XcXiBhb3m0mqZfq8EwJCb7V6 URwRkcMuarzaMtv1lbSIbb0WYjl51uh3NRE1p7ThUoRnaRG72Mg7tsXX3gdRQCX0ZT1D f0doM6A4mFj2m22xK8QoVD2Rdqwj5mc4GWAwl6OBLCWJ3zlW0PT0gkdh6jsdY7/SfZMm 9dknLXRWEdcLBd2WSitSgp49uojifozEhMZ3Sr2JDaZfk4lQ6C2Xecgktq0Gv1q57cVV 79MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741089626; x=1741694426; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KvHP2BboCGauKM0TvBqQfBu7j1TlN9OaRIMMc+Vl6gA=; b=LgA1yEPSAclojFV0/ITvWmFy9vuUcmGFxk4kWyh7vouMnyq/8rJ576aVMPkpwxsRaj BlJaFsFqniQ0WFCmF+ra3/SW54pFSYNnYmjY5M8ViprxbPGIF98lfsjrXZcK0Ut0ThUF fGQndGkC3e35TZpuQodVX8wjiXED2h+/UKmk1OIAmhYPJZ0RE7lZptGLYoAGcryu1eAn tVdDp2VUABOMK19vj/bchQ/Eawi7Oi2UH2TA0JVenXyszX1Uu2UquK0aaPICUAVLql/P Oqir2bcCe/nPSp56HU8Ja/NUqgQ7KEJ9d4l9H/OcyZ8/mdmyD18BdCb4lEBNw4RqXmY5 mCag== X-Forwarded-Encrypted: i=1; AJvYcCUPHQCN3DwlfIp0LlrGY+6OWmPG9LGuhHoBqrNzgGGcBzsPPEoGRiMTeaeYWTfjlWYarWy8wnQW5a3jjeo=@vger.kernel.org X-Gm-Message-State: AOJu0Yw3Fg8uqx8SqXY5RWtBS7ODeNDeKDDpfU7/sigTTANGDXgv+Owb TE51ECtPA3q1mde94e6rDFlzC3xQ2lSXC0ZSexf5RxioNemvmeEFcubfnTlpfjE= X-Gm-Gg: ASbGncspPElB1egTcmqN7e26y75G0g+neZZp9Onzre6p8rlRD7VVPpnO6h4qjSTNJbU xv1NikkuFjN1MddfWTmhlVIGik6MiBMcNHtXaWa6Ah+8dEQhO1ZUBhVmhqrHF/k/CYrzLbrrkIg 7YjCEO1b1vfCTECTnk5bbLUaab8FwN0ky7yMRYZuRU1zptuT7/A8TWFjJBzZ6X9+Px5WPRh3fCz vY665PPOP3Z+wGRYvDvEziXTrEndMtnf2BPGb4Gq1/dpyJz58rfcd7fVrTDKJPrxPk11F2WiB+e 2n1QUCLrbh2smWsm6pbo5sjUr8Dunprm X-Google-Smtp-Source: AGHT+IELzkVFh9RITGThHEwxgYy+2Ld8GAacL3JsxhdPQ1ZeOzGuZugE0nk+z2RxPZrajYXuj5Csrw== X-Received: by 2002:a05:6000:2101:b0:390:f750:40df with SMTP id ffacd0b85a97d-390f750412amr7616475f8f.34.1741089625766; Tue, 04 Mar 2025 04:00:25 -0800 (PST) Received: from localhost ([2a02:8308:a00c:e200::688c]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-390e4796517sm17247748f8f.5.2025.03.04.04.00.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 04 Mar 2025 04:00:25 -0800 (PST) From: Andrew Jones To: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org Cc: paul.walmsley@sifive.com, palmer@dabbelt.com, charlie@rivosinc.com, cleger@rivosinc.com, alex@ghiti.fr, Anup Patel , corbet@lwn.net Subject: [PATCH v3 8/8] Documentation/kernel-parameters: Add riscv unaligned speed parameters Date: Tue, 4 Mar 2025 13:00:23 +0100 Message-ID: <20250304120014.143628-18-ajones@ventanamicro.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250304120014.143628-10-ajones@ventanamicro.com> References: <20250304120014.143628-10-ajones@ventanamicro.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Document riscv parameters used to select scalar and vector unaligned access speeds. Signed-off-by: Andrew Jones --- Documentation/admin-guide/kernel-parameters.txt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentatio= n/admin-guide/kernel-parameters.txt index fb8752b42ec8..9e3c5fecfa52 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -7477,6 +7477,22 @@ Note that genuine overcurrent events won't be reported either. =20 + unaligned_scalar_speed=3D + [RISCV] + Format: {slow | fast | unsupported} + Allow skipping scalar unaligned access speed tests. This + is useful for testing alternative code paths and to skip + the tests in environments where they run too slowly. All + CPUs must have the same scalar unaligned access speed. + + unaligned_vector_speed=3D + [RISCV] + Format: {slow | fast | unsupported} + Allow skipping vector unaligned access speed tests. This + is useful for testing alternative code paths and to skip + the tests in environments where they run too slowly. All + CPUs must have the same vector unaligned access speed. + unknown_nmi_panic [X86] Cause panic on unknown NMI. =20 --=20 2.48.1