[PATCH v4 04/21] arm64/simd: Add scoped guard API for kernel mode SIMD
Jonathan Cameron
jonathan.cameron at huawei.com
Fri Oct 31 06:55:52 PDT 2025
On Fri, 31 Oct 2025 11:39:03 +0100
Ard Biesheuvel <ardb+git at google.com> wrote:
> From: Ard Biesheuvel <ardb at kernel.org>
>
> Encapsulate kernel_neon_begin() and kernel_neon_end() using a 'ksimd'
> cleanup guard. This hides the prototype of those functions, allowing
> them to be changed for arm64 but not ARM, without breaking code that is
> shared between those architectures (RAID6, AEGIS-128)
>
> It probably makes sense to expose this API more widely across
> architectures, as it affords more flexibility to the arch code to
> plumb it in, while imposing more rigid rules regarding the start/end
> bookends appearing in matched pairs.
>
> Reviewed-by: Kees Cook <kees at kernel.org>
> Reviewed-by: Eric Biggers <ebiggers at kernel.org>
> Signed-off-by: Ard Biesheuvel <ardb at kernel.org>
Very nice.
FWIW I looked at all the usecases and other than a couple of trivial
comments on individual patches they look good to me.
Reviewed-by: Jonathan Cameron <jonathan.cameron at huawei.com>
For patches 4-19
> ---
> arch/arm64/include/asm/simd.h | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/arch/arm64/include/asm/simd.h b/arch/arm64/include/asm/simd.h
> index 8e86c9e70e48..d9f83c478736 100644
> --- a/arch/arm64/include/asm/simd.h
> +++ b/arch/arm64/include/asm/simd.h
> @@ -6,12 +6,15 @@
> #ifndef __ASM_SIMD_H
> #define __ASM_SIMD_H
>
> +#include <linux/cleanup.h>
> #include <linux/compiler.h>
> #include <linux/irqflags.h>
> #include <linux/percpu.h>
> #include <linux/preempt.h>
> #include <linux/types.h>
>
> +#include <asm/neon.h>
> +
> #ifdef CONFIG_KERNEL_MODE_NEON
>
> /*
> @@ -40,4 +43,8 @@ static __must_check inline bool may_use_simd(void) {
>
> #endif /* ! CONFIG_KERNEL_MODE_NEON */
>
> +DEFINE_LOCK_GUARD_0(ksimd, kernel_neon_begin(), kernel_neon_end())
> +
> +#define scoped_ksimd() scoped_guard(ksimd)
> +
> #endif
More information about the linux-arm-kernel
mailing list