Boot failures
Kernel does not boot with a black screen or no serial output
Check first:- Confirm the serial console is configured (
console=ttyMSM0,115200n8in the kernel command line). - Verify
efi.binwas flashed successfully by re-runningfastboot flash efi efi.binand check forOKAYresponses. - Erase RPMB area in case its persistent state carrying EFI variables is corrupted or misaligned:
- Add
earlyconto the kernel command line to get output before the UART driver initialises.
Kernel panic at boot
A kernel panic during boot produces a call stack on the serial console. Capture it and identify the faulting function:| Panic message | Likely cause |
|---|---|
Unable to handle kernel NULL pointer dereference | Driver accesses a resource before it is initialised (probe order issue) |
SError Interrupt on CPU | To debug unclocked or protected register access, enable MMIO traces (see Kernel probes and tracing) |
Kernel panic - not syncing: VFS: Unable to mount root fs | Root partition label mismatch or missing file system driver |
KASAN: use-after-free | To check memory safety bug, enable CONFIG_KASAN=y in a debug build to get more detail |
Device tree issues
DTB authentication failure
UEFI firmware authenticates the DTB before passing it to the kernel. An authentication failure prevents the kernel from receiving any device tree. Log signature:dtb.bin that matches the current signing
key provisioned on the device. Ensure efi.bin and dtb.bin are from the same
build.
DTB not found
-
Verify the DTB is included in the packaged
dtb.bin: if using legacy concatenated dtb packaging:if using FIT-based packaging: -
Check that the board DTS file is listed in
KERNEL_DEVICETREEin the Yocto machine configuration. -
Reflash
dtb.bin:
Verify which DTB was loaded at runtime
After a successful boot, confirm the correct device tree was loaded:DTB identification during boot
Refer common dtb issues for more information on device tree identification.Module load failures
Invalid module format showing vermagic mismatch
vermagic string embedded in the .ko
file does not match.
Diagnose:
KERNEL_SRC,
same defconfig and fragments) that produced the running kernel image. If using
Yocto, rebuild with bitbake qcom-multimedia-image to keep the module and
kernel in sync.
missing .ko file
obj-m += my_driver.o in the Makefile)
and installed (make modules_install or via Yocto module class).
Module not found and missing from modules.dep
depmod to rebuild the module dependency map after installing new
modules:
Module loads but does not work
Checkdmesg immediately after insmod for probe errors:
| Log pattern | Cause |
|---|---|
probe of ... failed with error -19 | -ENODEV, hardware not present or DT node has status = "disabled" |
probe of ... failed with error -22 | -EINVAL, missing or malformed device tree property |
probe of ... deferred | -EPROBE_DEFER, a dependency (clock, regulator, GPIO) is not yet ready |
Serial console not working
If there is no output on the serial console after flashing a new kernel:-
Verify Kconfig:
-
Verify kernel command line:
-
Get early boot messages: Add
earlyconto the kernel command line. This enables output before the UART driver is fully initialised. - Check the cable and baud rate: Confirm 115200 baud, 8N1, no hardware flow control on both the device and the host terminal.
Remoteproc failures
Firmware load failure
/lib/firmware/qcom/<SoC>/:
Capture logs on subsystem crash
To prevent the remoteproc driver from automatically recovering a crashed subsystem (which clears the crash logs), disable recovery before reproducing the crash:.elf file to a host and analyse with the Qualcomm Crash Analysis
Portal (QCAP). For more detail see
Configure the remoteprocessor subsystems.
