This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PROCESSOR-SDK-AM335X: Reboot/Shutdown Occasionally Hangs with systemd-udevd Errors

Part Number: PROCESSOR-SDK-AM335X

Tool/software:

Hello,

I am encountering an issue with my system where reboot or shutdown occasionally hangs. The system displays the following error messages:

systemd-shutdown: Waiting for process: systemd-udevd, systemd-udevd  
systemd-udevd: 44e35000.wdt: Worker processing SEQNUM=2109 is taking a long time  
systemd-shutdown: Waiting for process: systemd-udevd  

This seems to be related to the 44e35000.wdt device, which I understand is tied to the omap_wdt driver for the Watchdog Timer on the AM335x processor.

What might be causing this issue? Are there any recommended solutions or workarounds to prevent the hang during reboot or shutdown?

Thank you!  Please let me know if additional logs or information are required.

  • Hello,

    1) What version of AM335x Linux SDK are you using?

    2) Are you actually using the watchdog timer? If not, we can disable it.

    3) When are you first initializing the watchdog timer? In uboot? During Linux boot? etc.

    Regards,

    Nick

  • Hi Nick,


    Thank you for your questions.

    1. The build configuration is as follows:
    BB_VERSION = "1.46.0"
    BUILD_SYS = "x86_64-linux"
    NATIVELSBSTRING = "ubuntu-18.04"
    TARGET_SYS = "arm-linux-gnueabi"
    MACHINE = "am335x-evm"
    DISTRO = "arago"
    DISTRO_VERSION = "2021.09"

    2. I am not actively using the watchdog timer in my application, might be a viable option for troubleshooting. (Based on my kernel configuration, the watchdog timer support is enabled (`CONFIG_WATCHDOG=y`), but there is no specific initialization for omap_wdt or the hardware watchdog.)

    3. The watchdog timer does not seem to be initialized in U-Boot. During Linux boot, I see an NMI watchdog-related log entry, but no specific initialization for `omap_wdt` or hardware watchdog. The driver does not seem to load automatically during boot.

    Thank you! I hope this helps clarify things. If you need further information, feel free to ask.

    Regards,
    CCF

  • Hello,

    Are you using the AM335x Linux SDK? Or are you grabbing your Linux and uboot from somewhere else?
    https://www.ti.com/tool/download/PROCESSOR-SDK-LINUX-AM335X 

    If you are not using the watchdog timer (that is "wdt"), let's disable it in the Linux and uboot devicetree files and see if your hangs go away.

    Regards,

    Nick

  • Hello Nick,

    I apologize for missing the AM335x Linux SDK information in my previous response. I am using version 08.02.00.006-rt.

    Regarding the device tree, I am using the `am335x-evmsk.dts` file, but I didn't add any wdt configuration to it. Based on the error message, I found the `wdt`  configuration in `am33xx-l4.dtsi`, as shown in the following section:

    ```
    wdt2: wdt@0 {
    compatible = "ti,omap3-wdt";
    reg = <0x0 0x1000>;
    interrupts = <91>;
    };
    ```

    The system no longer hangs during shutdown after I removed the `wdt2` configuration from the device tree. So, it seems like the configuration may have been causing the issue. However, I am encountering other errors after this change.

    Therefore, I would like to ask if it would be better to disable it in a different way, such as explicitly disabling it in the device tree or if another approach might be more effective.

    Could you please advise on the best way to handle this issue or suggest any other potential solutions?

    Thank you very much!

    Best Regards,
    CCF

  • Hello,

    In general, I suggest leaving the processor-level .dtsi files alone, and making all your changes in the top board-level .dts file. That way you know for sure that your changes are not overwritten by a later .dts file that includes the .dtsi file.

    I would suggest adding this to your board-level .dts file to disable the watchdog driver:

    &wdt2 {
        status = "disabled";
    };

    If you are still running into errors, please post your terminal output with those errors.

    Regards,

    Nick

  • Hi Nick,

    After following your suggestion to make changes in the board-level .dts file and properly disabling the watchdog, it worked perfectly. Additionally, I realized that I had misunderstood the source of the other errors. (just the kernel messages being dumped during shutdown were not caused by the changes to the watchdog.)

    it’s greatly appreciated!