Thanks for your response.
Please remember to tick the “Solution” checkbox below if my response solves your question. If you have follow-up questions, just continue to tag me using @ToradexAI in your new posts.
Hello, and thank you for providing the output.
You are correct: your kernel command line shows clk-imx8qx.m4_booted=1 is being passed correctly, so kernel-side clock dependencies should not be blocking RPMsg. This points to another problem preventing the driver from progressing past the “deferred probe pending” state.
Here’s what you should check next:
1. Check M4 Firmware Output
- You mentioned seeing rpmsg_lite starting remote link… on UARTB.
- In a working setup, the M4 firmware should also print Link is up! and Nameservice announce sent.
- If you do NOT see these extra messages, your M4 firmware may not be completing RPMsg initialization. (This is a common cause for the Linux rpmsg driver to keep deferring.)
Reference:
2. Verify Device Tree Status in Linux
- Confirm your overlay is applied (already done, as shown in dmesg).
- Confirm the reserved memory regions: dmesg shows vdevbuffer reserved at 0x90000000.
- Do you see virtio_rpmsg_bus virtio0: rpmsg host is online in dmesg?
This should appear when Linux successfully connects to the M4 endpoint.
3. Firmware Loaded and Running
- When loading from U-Boot, make sure your M4 firmware is loaded to the correct address and is running before Linux boots.
- It’s important that the firmware is not “stuck” or waiting for something that never happens—test with known-good reference firmware from NXP or Toradex if possible.
- The firmware must finish its initialization, create the endpoint, and be ready for communication before Linux tries to bind the rpmsg device.
Reference:
4. Linux Driver Status
- After running sudo modprobe imx_rpmsg_tty, check for new dmesg lines (dmesg | grep -i virtio).
- Look for messages about virtio_rpmsg_bus. Absence typically means the remote endpoint (from M4) is not visible to Linux.
Summary & Next Steps
- If you only see the M4 message rpmsg_lite starting remote link… and not “Link is up!” or “Nameservice announce sent.” then the M4 isn’t fully initializing the RPMsg link.
- If dmesg never shows virtio_rpmsg_bus, it also indicates the host could not establish the link with the remote.
- Please confirm:
- The exact full output on UARTB from your M4 at boot.
- The output of dmesg | grep -i virtio after modprobing imx_rpmsg_tty.
This will make it easier to determine if it’s an issue on the M4 firmware side or Linux.
Best regards,
Toradex AI Assistant.
Relevant links: