Created
March 17, 2024 15:55
-
-
Save luckylinux/6b3778d01e30ed1421178d2c6cac2e6f to your computer and use it in GitHub Desktop.
aarch64-disable-neon.patch
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Source: https://raw.githubusercontent.com/chimera-linux/cports/master/main/zfs/patches/aarch64-disable-neon.patch (no longer available) | |
ERROR: modpost: GPL-incompatible module zfs.ko uses GPL-only symbol 'kernel_neon_begin' | |
ERROR: modpost: GPL-incompatible module zfs.ko uses GPL-only symbol 'kernel_neon_end' | |
There is no way around this so just disable all zfs kernel SIMD on aarch64 | |
for the time being. | |
diff --git a/include/os/linux/kernel/linux/simd.h b/include/os/linux/kernel/linux/simd.h | |
index f4376b2..02f8110 100644 | |
--- a/include/os/linux/kernel/linux/simd.h | |
+++ b/include/os/linux/kernel/linux/simd.h | |
@@ -31,9 +31,6 @@ | |
#elif defined(__arm__) | |
#include <linux/simd_arm.h> | |
-#elif defined(__aarch64__) | |
-#include <linux/simd_aarch64.h> | |
- | |
#elif defined(__powerpc__) | |
#include <linux/simd_powerpc.h> | |
diff --git a/module/Kbuild.in b/module/Kbuild.in | |
index 4395938..dc991b6 100644 | |
--- a/module/Kbuild.in | |
+++ b/module/Kbuild.in | |
@@ -169,7 +169,6 @@ zfs-$(CONFIG_X86) += $(addprefix icp/,$(ICP_OBJS_X86)) | |
zfs-$(CONFIG_UML_X86)+= $(addprefix icp/,$(ICP_OBJS_X86)) | |
zfs-$(CONFIG_X86_64) += $(addprefix icp/,$(ICP_OBJS_X86_64)) | |
zfs-$(CONFIG_ARM) += $(addprefix icp/,$(ICP_OBJS_ARM)) | |
-zfs-$(CONFIG_ARM64) += $(addprefix icp/,$(ICP_OBJS_ARM64)) | |
zfs-$(CONFIG_PPC) += $(addprefix icp/,$(ICP_OBJS_PPC_PPC64)) | |
zfs-$(CONFIG_PPC64) += $(addprefix icp/,$(ICP_OBJS_PPC_PPC64)) | |
@@ -257,7 +256,6 @@ ZCOMMON_OBJS_ARM64 := \ | |
zfs-objs += $(addprefix zcommon/,$(ZCOMMON_OBJS)) | |
zfs-$(CONFIG_X86) += $(addprefix zcommon/,$(ZCOMMON_OBJS_X86)) | |
zfs-$(CONFIG_UML_X86)+= $(addprefix zcommon/,$(ZCOMMON_OBJS_X86)) | |
-zfs-$(CONFIG_ARM64) += $(addprefix zcommon/,$(ZCOMMON_OBJS_ARM64)) | |
# Zstd uses -O3 by default, so we should follow | |
@@ -484,7 +482,6 @@ ZFS_OBJS_PPC_PPC64 := \ | |
zfs-objs += $(addprefix zfs/,$(ZFS_OBJS)) $(addprefix os/linux/zfs/,$(ZFS_OBJS_OS)) | |
zfs-$(CONFIG_X86) += $(addprefix zfs/,$(ZFS_OBJS_X86)) | |
zfs-$(CONFIG_UML_X86)+= $(addprefix zfs/,$(ZFS_OBJS_X86)) | |
-zfs-$(CONFIG_ARM64) += $(addprefix zfs/,$(ZFS_OBJS_ARM64)) | |
zfs-$(CONFIG_PPC) += $(addprefix zfs/,$(ZFS_OBJS_PPC_PPC64)) | |
zfs-$(CONFIG_PPC64) += $(addprefix zfs/,$(ZFS_OBJS_PPC_PPC64)) | |
diff --git a/module/icp/algs/blake3/blake3_impl.c b/module/icp/algs/blake3/blake3_impl.c | |
index f3f48c2..df02487 100644 | |
--- a/module/icp/algs/blake3/blake3_impl.c | |
+++ b/module/icp/algs/blake3/blake3_impl.c | |
@@ -30,7 +30,7 @@ | |
#include "blake3_impl.h" | |
-#if defined(__aarch64__) || \ | |
+#if 0 || \ | |
(defined(__x86_64) && defined(HAVE_SSE2)) || \ | |
(defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) | |
@@ -96,7 +96,7 @@ const blake3_ops_t blake3_sse2_impl = { | |
}; | |
#endif | |
-#if defined(__aarch64__) || \ | |
+#if 0 || \ | |
(defined(__x86_64) && defined(HAVE_SSE2)) || \ | |
(defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) | |
@@ -257,12 +257,12 @@ extern const blake3_ops_t blake3_generic_impl; | |
static const blake3_ops_t *const blake3_impls[] = { | |
&blake3_generic_impl, | |
-#if defined(__aarch64__) || \ | |
+#if 0 || \ | |
(defined(__x86_64) && defined(HAVE_SSE2)) || \ | |
(defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) | |
&blake3_sse2_impl, | |
#endif | |
-#if defined(__aarch64__) || \ | |
+#if 0 || \ | |
(defined(__x86_64) && defined(HAVE_SSE4_1)) || \ | |
(defined(__PPC64__) && defined(__LITTLE_ENDIAN__)) | |
&blake3_sse41_impl, | |
diff --git a/module/icp/algs/sha2/sha256_impl.c b/module/icp/algs/sha2/sha256_impl.c | |
index 01ce5cb..69f8233 100644 | |
--- a/module/icp/algs/sha2/sha256_impl.c | |
+++ b/module/icp/algs/sha2/sha256_impl.c | |
@@ -118,7 +118,7 @@ const sha256_ops_t sha256_shani_impl = { | |
}; | |
#endif | |
-#elif defined(__aarch64__) || (defined(__arm__) && __ARM_ARCH > 6) | |
+#elif (defined(__aarch64__) && 0) || (defined(__arm__) && __ARM_ARCH > 6) | |
static boolean_t sha256_have_neon(void) | |
{ | |
return (kfpu_allowed() && zfs_neon_available()); | |
@@ -192,7 +192,7 @@ static const sha256_ops_t *const sha256_impls[] = { | |
#if defined(__x86_64) && defined(HAVE_SSE4_1) | |
&sha256_shani_impl, | |
#endif | |
-#if defined(__aarch64__) || (defined(__arm__) && __ARM_ARCH > 6) | |
+#if 0 || (defined(__arm__) && __ARM_ARCH > 6) | |
&sha256_armv7_impl, | |
&sha256_neon_impl, | |
&sha256_armv8_impl, | |
diff --git a/module/icp/algs/sha2/sha512_impl.c b/module/icp/algs/sha2/sha512_impl.c | |
index 27b35a6..23f5ea5 100644 | |
--- a/module/icp/algs/sha2/sha512_impl.c | |
+++ b/module/icp/algs/sha2/sha512_impl.c | |
@@ -88,7 +88,7 @@ const sha512_ops_t sha512_avx2_impl = { | |
}; | |
#endif | |
-#elif defined(__aarch64__) | |
+#elif defined(__aarch64__) && 0 | |
extern void zfs_sha512_block_armv7(uint64_t s[8], const void *, size_t); | |
const sha512_ops_t sha512_armv7_impl = { | |
.is_supported = sha2_is_supported, | |
@@ -164,7 +164,7 @@ static const sha512_ops_t *const sha512_impls[] = { | |
#if defined(__x86_64) && defined(HAVE_AVX2) | |
&sha512_avx2_impl, | |
#endif | |
-#if defined(__aarch64__) | |
+#if 0 | |
&sha512_armv7_impl, | |
&sha512_armv8_impl, | |
#endif | |
diff --git a/module/zcommon/zfs_fletcher.c b/module/zcommon/zfs_fletcher.c | |
index 619ddef..39dbd65 100644 | |
--- a/module/zcommon/zfs_fletcher.c | |
+++ b/module/zcommon/zfs_fletcher.c | |
@@ -188,9 +188,6 @@ static const fletcher_4_ops_t *fletcher_4_impls[] = { | |
#if defined(__x86_64) && defined(HAVE_AVX512BW) | |
&fletcher_4_avx512bw_ops, | |
#endif | |
-#if defined(__aarch64__) && !defined(__FreeBSD__) | |
- &fletcher_4_aarch64_neon_ops, | |
-#endif | |
}; | |
/* Hold all supported implementations */ | |
diff --git a/module/zfs/vdev_raidz_math.c b/module/zfs/vdev_raidz_math.c | |
index e12b961..62c0063 100644 | |
--- a/module/zfs/vdev_raidz_math.c | |
+++ b/module/zfs/vdev_raidz_math.c | |
@@ -61,10 +61,6 @@ static const raidz_impl_ops_t *const raidz_all_maths[] = { | |
#if defined(__x86_64) && defined(HAVE_AVX512BW) /* only x86_64 for now */ | |
&vdev_raidz_avx512bw_impl, | |
#endif | |
-#if defined(__aarch64__) && !defined(__FreeBSD__) | |
- &vdev_raidz_aarch64_neon_impl, | |
- &vdev_raidz_aarch64_neonx2_impl, | |
-#endif | |
#if defined(__powerpc__) && defined(__altivec__) | |
&vdev_raidz_powerpc_altivec_impl, | |
#endif |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment