zstd: disable intrinsics

Disable the aarch64 NEON SIMD intrinsics for kernel builds.  Safely
using them in the kernel context requires saving/restoring the FPU
registers which is not currently done.

Additionally, remove the aarch64 optimized PREFETCH_L1 and PREFETCH_L2
instruction.  Rely on the more portable compiler built ins.

This lets us remove the problematic workaround in the aarch64_compat.h
header which undefines the __aarch64__ macro.

Reviewed-by: Rob Norris <robn@despairlabs.com>
Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #17904
Closes #17852
This commit is contained in:
Brian Behlendorf
2025-11-07 10:01:12 -08:00
committed by GitHub
parent 54876ee85e
commit 962474d1a2
5 changed files with 10 additions and 67 deletions
+9
View File
@@ -12,6 +12,15 @@
#ifndef ZSTD_CCOMMON_H_MODULE
#define ZSTD_CCOMMON_H_MODULE
/*
* Disable the aarch64 NEON SIMD intrinsics for kernel builds. Safely
* using them in the kernel context requires saving/restoring the FPU
* registers which is not currently done.
*/
#ifdef _KERNEL
#define ZSTD_NO_INTRINSICS
#endif
/* this module contains definitions which must be identical
* across compression, decompression and dictBuilder.
* It also contains a few functions useful to at least 2 of them