Re: [RFC PATCH 0/1] Suspending i.MX watchdog in WAIT mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Guenter,

On 21. 09. 22 16:18, Guenter Roeck wrote:
On 9/21/22 05:46, Andrej Picej wrote:
Hi all,

we are using i.MX6UL with its watchdog WDOG1 and kernel 5.15.62. It was
discovered that the watchdog triggers reset when the device is put into
'Suspend-To-Idle' (WAIT) state.


Is that equivalent to "suspend" from Linux perspective, or some other
mode ? How does the device get into this state ?

I think WAIT mode maps to System idle mode in linux [1].

Sorry don't quite understand your second question.
Do you mean how we trigger this state?
We trigger this state with:
>     imx6ul-dev:~# echo freeze > /sys/power/state

If you mean what is done prior to entering this state?
The device enters WAIT mode when CLPCR bit is set to WAIT. The device
enters WAIT mode by gating the CPU clock, all other clocks can be gated
by programming CGR bits in WAIT mode.

[1] i.MX Linux Reference Manual, Rev. 0, 07/2016

Andrej


Guenter

i.MX6UL watchdog has a WDW (Watchdog Disable for Wait) bit in WCR
(Watchdog Control Register) which can put the watchdog in suspend when
the device is put to WAIT mode. Similarly, WDZST bit is already set in
imx2_wdt driver by default, which suspends the watchdog in STOP and DOZE
modes.

This RFC patch suspends watchdog when the device is in WAIT mode, which
fixes our problem. During development, we noticed some reports where
setting WDW bit caused inconsistent timeout events or inability of
watchdog to reset the board. We didn't have these problems but I am
curious if there is a case where device is put into WAIT mode and
watchdog should be enabled?

Maybe for cases where watchdog is used for WAIT mode supervision? So
basically to reset the system if device doesn't exit WAIT mode on its
own?

The problem can be recreated with:

    imx6ul-dev:~# echo freeze > /sys/power/state
    [  101.093336] PM: suspend entry (s2idle)
    [  101.097785] Filesystems sync: 0.000 seconds
    [  101.122295] Freezing user space processes ... (elapsed 0.001 seconds) done.
    [  101.130637] OOM killer disabled.
    [  101.133998] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.     [  101.142941] printk: Suspending console(s) (use no_console_suspend to debug)
    ...
Device resets after watchdog timeout expires! ~105s

Thank you for your feedback.

Best regards,
Andrej

Andrej Picej (1):
   watchdog: imx2_wdg: suspend watchdog in WAIT mode

  drivers/watchdog/imx2_wdt.c | 3 +++
  1 file changed, 3 insertions(+)






[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux