From 707896531bd8bd88d72855fc60e3c51b99cd0e46 Mon Sep 17 00:00:00 2001 From: Gabriel2392 Date: Sun, 9 Jun 2024 19:53:27 -0300 Subject: [PATCH] a53x: Get, fix, build and load zfs as module --- aarch64-zfs.patch | 27 +++++++++++++++++++++++++++ arch/arm64/configs/a53x_defconfig | 1 + kernel_build/build.sh | 24 ++++++++++++++++++++++++ kernel_build/vboot_dlkm/modules.load | 2 ++ 4 files changed, 54 insertions(+) create mode 100644 aarch64-zfs.patch diff --git a/aarch64-zfs.patch b/aarch64-zfs.patch new file mode 100644 index 000000000..c77302855 --- /dev/null +++ b/aarch64-zfs.patch @@ -0,0 +1,27 @@ +From 91ffd323bb1a12bf5ca312f2bf25ed800f9a9ecb Mon Sep 17 00:00:00 2001 +From: Gabriel2392 +Date: Sun, 9 Jun 2024 21:06:52 -0300 +Subject: [PATCH] aarch64: fix zfs build + +--- + include/zfs/os/linux/kernel/linux/simd_aarch64.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/include/zfs/os/linux/kernel/linux/simd_aarch64.h b/include/zfs/os/linux/kernel/linux/simd_aarch64.h +index 123a0c72b..4e305b516 100644 +--- a/include/zfs/os/linux/kernel/linux/simd_aarch64.h ++++ b/include/zfs/os/linux/kernel/linux/simd_aarch64.h +@@ -83,11 +83,11 @@ + #define kfpu_init() (0) + #define kfpu_fini() do {} while (0) + +-#define get_ftr(id) { \ ++#define get_ftr(id) ({ \ + unsigned long __val; \ + asm("mrs %0, "#id : "=r" (__val)); \ + __val; \ +-} ++}) + + /* + * Check if NEON is available diff --git a/arch/arm64/configs/a53x_defconfig b/arch/arm64/configs/a53x_defconfig index 5558c3c41..0380366ea 100755 --- a/arch/arm64/configs/a53x_defconfig +++ b/arch/arm64/configs/a53x_defconfig @@ -7354,6 +7354,7 @@ CONFIG_XFS_RT=y CONFIG_BTRFS_FS=y CONFIG_BTRFS_FS_POSIX_ACL=y # CONFIG_NILFS2_FS is not set +CONFIG_ZFS=m CONFIG_F2FS_FS=y CONFIG_F2FS_STAT_FS=y CONFIG_F2FS_FS_XATTR=y diff --git a/kernel_build/build.sh b/kernel_build/build.sh index 0d50c36e9..527b9b0d0 100755 --- a/kernel_build/build.sh +++ b/kernel_build/build.sh @@ -1,6 +1,7 @@ #!/bin/bash XY_VERSION="R3.1" +ZFS_VERSION="zfs-2.2.4" set -e @@ -44,6 +45,24 @@ OUT_DTBIMAGE="$TMPDIR/dtb.img" # Kernel-side BUILD_ARGS="LOCALVERSION=-XyUnbound-${XY_VERSION} KBUILD_BUILD_USER=Gabriel260BR KBUILD_BUILD_HOST=ExynosUnbound" +bring_zfs() { + echo "Adding ZFS Support to ktree..." + git clone https://github.com/openzfs/zfs -b "$ZFS_VERSION" --depth=1 || exit + CDIR="$(pwd)" + cd "$CDIR/zfs" + ./autogen.sh + PATH="$SIMPLE_PATH" ./configure --host=aarch64-unknown-linux --enable-linux-builtin=yes --with-linux="$CDIR" --with-linux-obj="$CDIR/out" CC=clang --with-config=kernel --without-udevdir --disable-sysvinit --disable-systemd || exit + ./copy-builtin "$CDIR" || exit + cd "$CDIR" + git apply aarch64-zfs.patch || true + echo 'MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);' >> fs/zfs/os/linux/zfs/zfs_ioctl_os.c + echo 'MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);' >> fs/zfs/os/linux/spl/spl-generic.c + grep -r CDDL include/zfs/|grep -v '\*'|grep -v bsd|cut -d':' -f1|while read FL ; do sed -i 's|ZFS_META_LICENSE = CDDL|ZFS_META_LICENSE = GPL|; s|#define ZFS_META_LICENSE "CDDL"|#define ZFS_META_LICENSE "GPL"|' $FL; done + echo "$(grep CONFIG_ZFS arch/arm64/configs/a33x_defconfig)" >> "$CDIR/out/.config" "$CDIR/out/.config.old" + echo ' - OK' +} + + kfinish() { rm -rf "$TMPDIR" rm -rf "$OUTDIR" @@ -60,6 +79,7 @@ export CC="$PARENT_DIR/clang-r416183b/bin/clang" export PLATFORM_VERSION=12 export ANDROID_MAJOR_VERSION=s +export SIMPLE_PATH="$PARENT_DIR/clang-r416183b/bin:$PATH" export PATH="$PARENT_DIR/build-tools/path/linux-x86:$PARENT_DIR/clang-r416183b/bin:$PATH" export TARGET_SOC=s5e8825 export LLVM=1 LLVM_IAS=1 @@ -74,6 +94,10 @@ if [ ! -d "$PARENT_DIR/build-tools" ]; then fi make -j$(nproc --all) -C $(pwd) O=out $BUILD_ARGS a53x_defconfig >/dev/null +make -j$(nproc --all) -C $(pwd) O=out $BUILD_ARGS modules_prepare >/dev/null +if [ ! -d "$(pwd)/zfs" ]; then + bring_zfs +fi make -j$(nproc --all) -C $(pwd) O=out $BUILD_ARGS dtbs >/dev/null make -j$(nproc --all) -C $(pwd) O=out $BUILD_ARGS >/dev/null make -j$(nproc --all) -C $(pwd) O=out INSTALL_MOD_STRIP="--strip-debug --keep-section=.ARM.attributes" INSTALL_MOD_PATH="$MODULES_OUTDIR" modules_install >/dev/null diff --git a/kernel_build/vboot_dlkm/modules.load b/kernel_build/vboot_dlkm/modules.load index b29e66833..59b332aed 100644 --- a/kernel_build/vboot_dlkm/modules.load +++ b/kernel_build/vboot_dlkm/modules.load @@ -295,4 +295,6 @@ mt76-connac-lib.ko mt76-usb.ko mt7921-common.ko mt7921u.ko +spl.ko +zfs.ko input_booster_lkm.ko