Re: [PATCH v4 04/21] arm64/simd: Add scoped guard API for kernel mode SIMD

From: Jonathan Cameron

Date: Fri Oct 31 2025 - 09:55:56 EST


On Fri, 31 Oct 2025 11:39:03 +0100
Ard Biesheuvel <ardb+git@xxxxxxxxxx> wrote:

> From: Ard Biesheuvel <ardb@xxxxxxxxxx>
>
> 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@xxxxxxxxxx>
> Reviewed-by: Eric Biggers <ebiggers@xxxxxxxxxx>
> Signed-off-by: Ard Biesheuvel <ardb@xxxxxxxxxx>
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@xxxxxxxxxx>
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