Tested for focal on arm64/amd64 generic and with PREEMPT with ubuntu zfs tests - all OK.
** Tags added: verification-done-focal -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to zfs-linux in Ubuntu. https://bugs.launchpad.net/bugs/1892001 Title: zfs-dkms fails to build on arm64 with PREEMPTION and BLK_CGROUP Status in zfs-linux package in Ubuntu: Fix Released Status in zfs-linux source package in Bionic: Fix Committed Status in zfs-linux source package in Focal: Fix Committed Status in zfs-linux source package in Groovy: Fix Released Bug description: [Impact] On arm64 with PREEMPTION and BLK_CGROUP enabled, preempt_schedule_notrace is being pulled in which is a GPL-only function so the DKMS build fails: DKMS make.log for zfs-0.8.3 for kernel 5.4.0-1015-raspi (aarch64) Tue Aug 18 06:30:17 UTC 2020 ./scripts/make_gitrev.sh /bin/bash: ./scripts/make_gitrev.sh: No such file or directory make: [Makefile:1512: gitrev] Error 127 (ignored) make all-recursive make[1]: Entering directory '/var/lib/dkms/zfs/0.8.3/build' Making all in module make[2]: Entering directory '/var/lib/dkms/zfs/0.8.3/build/module' list='icp lua'; for targetdir in $list; do \ make -C $targetdir; \ done make[3]: Entering directory '/var/lib/dkms/zfs/0.8.3/build/module/icp' mkdir -p api core spi io os algs algs/aes algs/edonr algs/modes algs/sha1 algs/sha2 algs/skein asm-x86_64 asm-x86_64/aes asm-x86_64/modes asm-x86_64/sha1 asm-x86_64/sha2 asm-i386 asm-generic make[3]: Leaving directory '/var/lib/dkms/zfs/0.8.3/build/module/icp' make[3]: Entering directory '/var/lib/dkms/zfs/0.8.3/build/module/lua' mkdir -p setjmp make[3]: Leaving directory '/var/lib/dkms/zfs/0.8.3/build/module/lua' make -C /lib/modules/5.4.0-1015-raspi/build M=`pwd` CONFIG_ZFS=m modules make[3]: Entering directory '/usr/src/linux-headers-5.4.0-1015-raspi' CC [M] /var/lib/dkms/zfs/0.8.3/build/module/avl/avl.o CC [M] /var/lib/dkms/zfs/0.8.3/build/module/nvpair/nvpair.o <SNIP> CC [M] /var/lib/dkms/zfs/0.8.3/build/module/zfs/qat_compress.o CC [M] /var/lib/dkms/zfs/0.8.3/build/module/zfs/qat_crypt.o CC [M] /var/lib/dkms/zfs/0.8.3/build/module/zfs/vdev_raidz_math_aarch64_neon.o CC [M] /var/lib/dkms/zfs/0.8.3/build/module/zfs/vdev_raidz_math_aarch64_neonx2.o LD [M] /var/lib/dkms/zfs/0.8.3/build/module/zfs/zfs.o Building modules, stage 2. MODPOST 8 modules FATAL: modpost: GPL-incompatible module zfs.ko uses GPL-only symbol 'preempt_schedule_notrace' make[4]: *** [scripts/Makefile.modpost:94: __modpost] Error 1 make[3]: *** [Makefile:1647: modules] Error 2 make[3]: Leaving directory '/usr/src/linux-headers-5.4.0-1015-raspi' make[2]: *** [Makefile:30: modules] Error 2 make[2]: Leaving directory '/var/lib/dkms/zfs/0.8.3/build/module' make[1]: *** [Makefile:807: all-recursive] Error 1 make[1]: Leaving directory '/var/lib/dkms/zfs/0.8.3/build' make: *** [Makefile:676: all] Error 2 Note that Ubuntu currently doesn't support/provide a preemptible arm64 kernel so this hasn't been a problem so far. [Test Case] Install zfs-dkms on an arm64 system that has a PREEMPT kernel installed. [Fix] Redefine preempt_schedule_notrace() to preempt_schedule() in the ZFS module (only for arm64 and if PREEMPTION and BLK_CGROUP are both enabled). preempt_schedule() is not a GPL symbol. [Regression Potential] Per comment in the kernel source, preempt_schedule_notrace() is required when tracing is enabled. As long as tracing is not enabled, this 'fix' should not cause any issues. Problems due to this change could show up as kernel splats like: =============================== [ INFO: suspicious RCU usage. ] 3.10.0-rc2+ #1 Not tainted ------------------------------- include/linux/rcupdate.h:771 rcu_read_lock() used illegally while idle! other info that might help us debug this: RCU used illegally from idle CPU! rcu_scheduler_active = 1, debug_locks = 0 RCU used illegally from extended quiescent state! 2 locks held by cc1/63645: #0: (&rq->lock){-.-.-.}, at: [<ffffffff816b39fd>] __schedule+0xed/0x9b0 #1: (rcu_read_lock){.+.+..}, at: [<ffffffff8109d645>] cpuacct_charge+0x5/0x1f0 CPU: 1 PID: 63645 Comm: cc1 Not tainted 3.10.0-rc2+ #1 [loadavg: 40.57 27.55 13.39 25/277 64369] Hardware name: Gigabyte Technology Co., Ltd. GA-MA78GM-S2H/GA-MA78GM-S2H, BIOS F12a 04/23/2010 0000000000000000 ffff88010f78fcf8 ffffffff816ae383 ffff88010f78fd28 ffffffff810b698d ffff88011c092548 000000000023d073 ffff88011c092500 0000000000000001 ffff88010f78fd60 ffffffff8109d7c5 ffffffff8109d645 Call Trace: [<ffffffff816ae383>] dump_stack+0x19/0x1b [<ffffffff810b698d>] lockdep_rcu_suspicious+0xfd/0x130 [<ffffffff8109d7c5>] cpuacct_charge+0x185/0x1f0 [<ffffffff8109d645>] ? cpuacct_charge+0x5/0x1f0 [<ffffffff8108dffc>] update_curr+0xec/0x240 [<ffffffff8108f528>] put_prev_task_fair+0x228/0x480 [<ffffffff816b3a71>] __schedule+0x161/0x9b0 [<ffffffff816b4721>] preempt_schedule+0x51/0x80 [<ffffffff816b4800>] ? __cond_resched_softirq+0x60/0x60 [<ffffffff816b6824>] ? retint_careful+0x12/0x2e [<ffffffff810ff3cc>] ftrace_ops_control_func+0x1dc/0x210 [<ffffffff816be280>] ftrace_call+0x5/0x2f [<ffffffff816b681d>] ? retint_careful+0xb/0x2e [<ffffffff816b4805>] ? schedule_user+0x5/0x70 [<ffffffff816b4805>] ? schedule_user+0x5/0x70 [<ffffffff816b6824>] ? retint_careful+0x12/0x2e ------------[ cut here ]------------ To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/1892001/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp