Boot failure due to incorrect or no DTB picked
When troubleshooting boot failure due to DTB load issues, verify authentication and DTB availability, and follow the steps to fix the problem. The following scenarios lead to boot failure:- Authentication failure
The following example shows the logs for failure due to incorrect authentication:
- Failure due to unavailability of DTB
The following example shows the logs for failure due to the missing DTB:
To fix the unavailability of DTB issues, do the following:
- Verify if the corresponding DTB file is a part of a packaged
dtb.binfile. - Mount the
dtb.binfile locally on the host development machine to verify the following:
- Verify if the corresponding DTB file is a part of a packaged
- To verify loaded DTB from the kernel log
Use the following command to verify DTB loaded during boot from the kernel log:
Serial console not working
To troubleshoot serial console log failure, enable specific drivers in the kernel configuration and add relevant parameters to the kernel boot arguments.- Enable the following driver in the kernel configuration file:
CONFIG_SERIAL_QCOM_GENI=yCONFIG_SERIAL_QCOM_GENI_CONSOLE=y
- Add the following parameter to the kernel boot arguments:
- To get early boot messages from the kernel, add the following parameter to the kernel boot arguments:
Debug remote processor failure
To troubleshoot remoteproc failure, capture kernel logs, use matching firmware signature files, and verify firmware locations in the device.- Ensure that all the matching subsystem images are flashed without any errors.
- Verify if there are any errors in the kernel log.
The following example shows a sample kernel log:
- Disable the following subsystem restart feature to ensure that the remoteproc crash signature is visible in the kernel log:
- Confirm if all the necessary firmware files are present in the
/lib/firmware/qcom/<SoC>in rootfs file system.
Debug configurations or symbols not reflecting in images
To debug kernel configuration change issues where configurations or symbols are not reflecting in the images, follow these steps:- Add the debug configuration driver to the
kernel/configs/debug.configfile. - Export the
DEBUG_BUILD=1macro before running thebitbakecommand.
System memory is too low
To debug the cases where a system runs out of free memory, see Debugging linux kernel.Identify DTB during boot
When the device boots, the boot loader verifies the following IDs and loads the corresponding DTB file:- x = ID for SoC
- z = ID for SoC revision (reserved field)
- y = ID for CDP, MTP (hardware variants), and platform
- y’ = ID for subtype (assumed 0 if absent)
Debug RT kernel
The following methods are used to troubleshooting issues in the RT kernel:- How to verify that the underlying kernel is real time?
After the boot is complete, run the following commands to verify the kernel type:
- How to make drivers RT compliant?
Ensure that synchronization primitives do not break RT assumptions.
The following are examples of the scenarios that can break RT assumptions and cause unexpected system behavior:
- Debug RT kernel configurations
The following are the debug configurations for the RT kernel:
CONFIG_DEBUG_ATOMIC_SLEEP- Verify for sleep inside an atomic section.CONFIG_PROVE_RAW_LOCK_NESTING- Allows theraw_spinlockvs. spinlock nesting. Ensures that the lock nesting rules forPREEMPT_RTkernels are not violated. While debugging, you can switch from an RT kernel to a non-RT kernel. To switch, make changes to themeta-qcom/ci/linux-qcom-rt-6.18.ymlfile to change virtual/kernel settings inlinux-qcom-rtand compile again. To make the changes, run the following commands:
Troubleshooting virtio issues
Use the following methods to troubleshoot virtio issues:- Ensure that the kernel is compiled with the required configurations.
- Verify the QEMU command-line options or libvirt XML configuration.
- Verify the system logs for errors.
- Enable traces in the QEMU command-line for virtio using the available trace back ends. For more information about KVM traces, see KVM traces.

