From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <gentoo-commits+bounces-1595596-garchives=archives.gentoo.org@lists.gentoo.org>
Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (2048 bits))
	(No client certificate requested)
	by finch.gentoo.org (Postfix) with ESMTPS id 3A06115838C
	for <garchives@archives.gentoo.org>; Mon, 29 Jan 2024 16:08:14 +0000 (UTC)
Received: from pigeon.gentoo.org (localhost [127.0.0.1])
	by pigeon.gentoo.org (Postfix) with SMTP id 5F15CE2A2C;
	Mon, 29 Jan 2024 16:08:13 +0000 (UTC)
Received: from smtp.gentoo.org (woodpecker.gentoo.org [140.211.166.183])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by pigeon.gentoo.org (Postfix) with ESMTPS id 31D7AE2A2C
	for <gentoo-commits@lists.gentoo.org>; Mon, 29 Jan 2024 16:08:13 +0000 (UTC)
Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52])
	(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
	 key-exchange X25519 server-signature RSA-PSS (4096 bits))
	(No client certificate requested)
	by smtp.gentoo.org (Postfix) with ESMTPS id 240D23432D6
	for <gentoo-commits@lists.gentoo.org>; Mon, 29 Jan 2024 16:08:12 +0000 (UTC)
Received: from localhost.localdomain (localhost [IPv6:::1])
	by oystercatcher.gentoo.org (Postfix) with ESMTP id AA7EAEC0
	for <gentoo-commits@lists.gentoo.org>; Mon, 29 Jan 2024 16:08:10 +0000 (UTC)
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Content-Transfer-Encoding: 8bit
Content-type: text/plain; charset=UTF-8
Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" <sam@gentoo.org>
Message-ID: <1706544478.1d106b3c4cc3d9d10e558558d4fbffbdf9c694ad.sam@gentoo>
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-fs/zfs-kmod/, sys-fs/zfs-kmod/files/
X-VCS-Repository: repo/gentoo
X-VCS-Files: sys-fs/zfs-kmod/files/zfs-kmod-2.2.2-arm64-neon.patch sys-fs/zfs-kmod/zfs-kmod-2.2.2.ebuild
X-VCS-Directories: sys-fs/zfs-kmod/ sys-fs/zfs-kmod/files/
X-VCS-Committer: sam
X-VCS-Committer-Name: Sam James
X-VCS-Revision: 1d106b3c4cc3d9d10e558558d4fbffbdf9c694ad
X-VCS-Branch: master
Date: Mon, 29 Jan 2024 16:08:10 +0000 (UTC)
Precedence: bulk
List-Post: <mailto:gentoo-commits@lists.gentoo.org>
List-Help: <mailto:gentoo-commits+help@lists.gentoo.org>
List-Unsubscribe: <mailto:gentoo-commits+unsubscribe@lists.gentoo.org>
List-Subscribe: <mailto:gentoo-commits+subscribe@lists.gentoo.org>
List-Id: Gentoo Linux mail <gentoo-commits.gentoo.org>
X-BeenThere: gentoo-commits@lists.gentoo.org
X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply
X-Archives-Salt: ef2f2a5d-4083-418a-918b-fe35c91d293c
X-Archives-Hash: 9bef39f9550d222b1aa56d58c7d2ba37

commit:     1d106b3c4cc3d9d10e558558d4fbffbdf9c694ad
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 29 16:07:58 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Jan 29 16:07:58 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d106b3c

sys-fs/zfs-kmod: fix arm64 neon compat w/ >=linux-6.2

Closes: https://bugs.gentoo.org/904657
Signed-off-by: Sam James <sam <AT> gentoo.org>

 .../zfs-kmod/files/zfs-kmod-2.2.2-arm64-neon.patch | 100 +++++++++++++++++++++
 sys-fs/zfs-kmod/zfs-kmod-2.2.2.ebuild              |   3 +-
 2 files changed, 102 insertions(+), 1 deletion(-)

diff --git a/sys-fs/zfs-kmod/files/zfs-kmod-2.2.2-arm64-neon.patch b/sys-fs/zfs-kmod/files/zfs-kmod-2.2.2-arm64-neon.patch
new file mode 100644
index 000000000000..54121adcdca3
--- /dev/null
+++ b/sys-fs/zfs-kmod/files/zfs-kmod-2.2.2-arm64-neon.patch
@@ -0,0 +1,100 @@
+https://bugs.gentoo.org/904657
+https://github.com/openzfs/zfs/issues/14555
+https://github.com/openzfs/zfs/commit/976bf9b6a61919638d42ed79cd207132785d128a
+
+From 976bf9b6a61919638d42ed79cd207132785d128a Mon Sep 17 00:00:00 2001
+From: Shengqi Chen <harry-chen@outlook.com>
+Date: Tue, 9 Jan 2024 08:05:24 +0800
+Subject: [PATCH] Linux 6.2 compat: add check for kernel_neon_* availability
+
+This patch adds check for `kernel_neon_*` symbols on arm and arm64
+platforms to address the following issues:
+
+1. Linux 6.2+ on arm64 has exported them with `EXPORT_SYMBOL_GPL`, so
+   license compatibility must be checked before use.
+2. On both arm and arm64, the definitions of these symbols are guarded
+   by `CONFIG_KERNEL_MODE_NEON`, but their declarations are still
+   present. Checking in configuration phase only leads to MODPOST
+   errors (undefined references).
+
+Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
+Signed-off-by: Shengqi Chen <harry-chen@outlook.com>
+Closes #15711
+Closes #14555
+Closes: #15401
+--- a/config/kernel-fpu.m4
++++ b/config/kernel-fpu.m4
+@@ -79,6 +79,12 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_FPU], [
+ 		__kernel_fpu_end();
+ 	], [], [ZFS_META_LICENSE])
+ 
++	ZFS_LINUX_TEST_SRC([kernel_neon], [
++		#include <asm/neon.h>
++	], [
++		kernel_neon_begin();
++		kernel_neon_end();
++	], [], [ZFS_META_LICENSE])
+ ])
+ 
+ AC_DEFUN([ZFS_AC_KERNEL_FPU], [
+@@ -105,9 +111,20 @@ AC_DEFUN([ZFS_AC_KERNEL_FPU], [
+ 			AC_DEFINE(KERNEL_EXPORTS_X86_FPU, 1,
+ 			    [kernel exports FPU functions])
+ 		],[
+-			AC_MSG_RESULT(internal)
+-			AC_DEFINE(HAVE_KERNEL_FPU_INTERNAL, 1,
+-			    [kernel fpu internal])
++			dnl #
++			dnl # ARM neon symbols (only on arm and arm64)
++			dnl # could be GPL-only on arm64 after Linux 6.2
++			dnl #
++			ZFS_LINUX_TEST_RESULT([kernel_neon_license],[
++				AC_MSG_RESULT(kernel_neon_*)
++				AC_DEFINE(HAVE_KERNEL_NEON, 1,
++				    [kernel has kernel_neon_* functions])
++			],[
++				# catch-all
++				AC_MSG_RESULT(internal)
++				AC_DEFINE(HAVE_KERNEL_FPU_INTERNAL, 1,
++				    [kernel fpu internal])
++			])
+ 		])
+ 	])
+ ])
+--- a/include/os/linux/kernel/linux/simd_aarch64.h
++++ b/include/os/linux/kernel/linux/simd_aarch64.h
+@@ -71,9 +71,15 @@
+ #define	ID_AA64PFR0_EL1		sys_reg(3, 0, 0, 1, 0)
+ #define	ID_AA64ISAR0_EL1	sys_reg(3, 0, 0, 6, 0)
+ 
++#if (defined(HAVE_KERNEL_NEON) && defined(CONFIG_KERNEL_MODE_NEON))
+ #define	kfpu_allowed()		1
+ #define	kfpu_begin()		kernel_neon_begin()
+ #define	kfpu_end()		kernel_neon_end()
++#else
++#define	kfpu_allowed()		0
++#define	kfpu_begin()		do {} while (0)
++#define	kfpu_end()		do {} while (0)
++#endif
+ #define	kfpu_init()		(0)
+ #define	kfpu_fini()		do {} while (0)
+ 
+--- a/include/os/linux/kernel/linux/simd_arm.h
++++ b/include/os/linux/kernel/linux/simd_arm.h
+@@ -53,9 +53,15 @@
+ #include <asm/elf.h>
+ #include <asm/hwcap.h>
+ 
++#if (defined(HAVE_KERNEL_NEON) && defined(CONFIG_KERNEL_MODE_NEON))
+ #define	kfpu_allowed()		1
+ #define	kfpu_begin()		kernel_neon_begin()
+ #define	kfpu_end()		kernel_neon_end()
++#else
++#define	kfpu_allowed()		0
++#define	kfpu_begin()		do {} while (0)
++#define	kfpu_end()		do {} while (0)
++#endif
+ #define	kfpu_init()		(0)
+ #define	kfpu_fini()		do {} while (0)
+ 
+

diff --git a/sys-fs/zfs-kmod/zfs-kmod-2.2.2.ebuild b/sys-fs/zfs-kmod/zfs-kmod-2.2.2.ebuild
index 18f9e126cc32..863395ebfef3 100644
--- a/sys-fs/zfs-kmod/zfs-kmod-2.2.2.ebuild
+++ b/sys-fs/zfs-kmod/zfs-kmod-2.2.2.ebuild
@@ -60,6 +60,7 @@ PDEPEND="dist-kernel? ( ~sys-fs/zfs-${PV}[dist-kernel] )"
 
 PATCHES=(
 	"${FILESDIR}"/${PN}-2.1.11-gentoo.patch
+	"${FILESDIR}"/${PN}-2.2.2-arm64-neon.patch
 )
 
 pkg_pretend() {
@@ -103,7 +104,7 @@ pkg_setup() {
 			"Linux ${kv_major_max}.${kv_minor_max} is the latest supported version"
 	fi
 
-	linux-mod-r1_pkg_setup
+	#linux-mod-r1_pkg_setup
 }
 
 src_prepare() {