Commit 814f5415 authored by Ard Biesheuvel's avatar Ard Biesheuvel
Browse files

ARM/simd: Add scoped guard API for kernel mode SIMD



Implement the ksimd scoped guard API so that it can be used by code that
supports both ARM and arm64.

Reviewed-by: default avatarKees Cook <kees@kernel.org>
Reviewed-by: default avatarEric Biggers <ebiggers@kernel.org>
Reviewed-by: default avatarJonathan Cameron <jonathan.cameron@huawei.com>
Acked-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
Signed-off-by: default avatarArd Biesheuvel <ardb@kernel.org>
parent c5b91a17
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -2,14 +2,21 @@
#ifndef _ASM_SIMD_H
#define _ASM_SIMD_H

#include <linux/cleanup.h>
#include <linux/compiler_attributes.h>
#include <linux/preempt.h>
#include <linux/types.h>

#include <asm/neon.h>

static __must_check inline bool may_use_simd(void)
{
	return IS_ENABLED(CONFIG_KERNEL_MODE_NEON) && !in_hardirq()
	       && !irqs_disabled();
}

DEFINE_LOCK_GUARD_0(ksimd, kernel_neon_begin(), kernel_neon_end())

#define scoped_ksimd()	scoped_guard(ksimd)

#endif	/* _ASM_SIMD_H */