You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EN: On the sm8650_b_16.0.0_* branches listed above, block/blk-mq.c exports test_task_ux, but the vendor module oplus_bsp_sched_assist.ko (first-stage, from sched_assist/sa_common.c) already exports the same symbol. The duplicate export makes that module fail to load, and sched-walt.ko etc. then hit a CRC mismatch on test_task_ux (expected 0x6aae72bc, kernel 0x41fa1ee1), so first-stage init fails and the device bootloops (see #35). Production OTA kernels do not export it. Please drop EXPORT_SYMBOL_GPL(test_task_ux); from block/blk-mq.c. Also, OTA kernels since ColorOS 15 enable CONFIG_HMBIRD_SCHED, which is missing from the published source.
No device logs — I couldn't get early boot logs either (the 900E minidump was encrypted). It's a static check:
Extract the stock kernel from the OTA boot.img, and all modules from vendor_boot (first-stage lib/modules/modules.load) and /vendor_dlkm/lib/modules.
For each module, read its undefined symbols, __ksymtab_strings (its own exports) and __versions (expected CRCs).
For a kernel Image, locate __ksymtab (PREL32 entries) and the __kcrctab that follows it, which gives the exported names and CRCs.
Compare: missing symbols, CRC mismatches, and symbols exported by both the kernel and a module.
The stock kernel gives zero diffs, which validates the parser. A kernel built from sm8650_b_16.0.0_pad2 gives exactly one first-stage problem: test_task_ux is exported by both block/blk-mq.c and oplus_bsp_sched_assist.ko, and sched-walt.ko, oplus_bsp_schedinfo.ko, oplus_bsp_eas_opt.ko, oplus_bsp_qos_sched.ko then hit a CRC mismatch on it. After dropping the export, there are zero first-stage diffs. Since a failed first-stage module load makes init fail, that explains the bootloop.
Activity
fatalcoder524 commentedon Oct 28, 2026
Hi @siri666666
Can you explain how you came to this conclusion and is there a way you got this from device logs? If yes, how did you get the logs!
Getting early boot logs of failed boots on OnePlus is difficult or not well documented!
siri666666 commentedon Oct 28, 2026
No device logs — I couldn't get early boot logs either (the 900E minidump was encrypted). It's a static check:
boot.img, and all modules fromvendor_boot(first-stagelib/modules/modules.load) and/vendor_dlkm/lib/modules.__ksymtab_strings(its own exports) and__versions(expected CRCs).Image, locate__ksymtab(PREL32 entries) and the__kcrctabthat follows it, which gives the exported names and CRCs.The stock kernel gives zero diffs, which validates the parser. A kernel built from
sm8650_b_16.0.0_pad2gives exactly one first-stage problem:test_task_uxis exported by bothblock/blk-mq.candoplus_bsp_sched_assist.ko, andsched-walt.ko,oplus_bsp_schedinfo.ko,oplus_bsp_eas_opt.ko,oplus_bsp_qos_sched.kothen hit a CRC mismatch on it. After dropping the export, there are zero first-stage diffs. Since a failed first-stage module load makes init fail, that explains the bootloop.Script: https://github.com/siri666666/OKI-AK3-Builder/blob/main/tools/kernel_compat_check.py
block: don't export test_task_ux, vendor module already exports it
Fix bootloop caused by export test_task_ux
Fix bootloop caused by export test_task_ux
block: don't export test_task_ux, vendor module already exports it
block: don't export test_task_ux, vendor module already exports it
fatalcoder524 commentedon Nov 3, 2026
Reports from my users:
Tried something similar to Alhugh233/android_kernel_common_oneplus_sm7675@f10f8e3
Will update if other device users report the results!
Edit:-
The solution works as expected. OnePlus broke more stuff on Nord 5 and Nord 4 OOS 16 branches when upstreaming to 6.1.157.
Solution tested on
Add revert patches to fix bootloops in a14-6.1.141+ OnePlus kernels
Fix bootloop caused by export test_task_ux