On 4/9/21 8:11 PM, 王擎 wrote: > >> On 4/9/21 7:42 PM, 王擎 wrote: >>> >>>> On 4/9/21 2:55 AM, Wang Qing wrote: >>>>> Use the bark interrupt as the pretimeout notifier if available. >>>>> >>>>> By default, the pretimeout notification shall occur one second earlier >>>>> than the timeout. >>>>> >>>>> Signed-off-by: Wang Qing <wangqing@xxxxxxxx> >>>>> --- >>>>> drivers/watchdog/mtk_wdt.c | 47 +++++++++++++++++++++++++++++++++++++++++++--- >>>>> 1 file changed, 44 insertions(+), 3 deletions(-) >>>>> >>>>> diff --git a/drivers/watchdog/mtk_wdt.c b/drivers/watchdog/mtk_wdt.c >>>>> index 97ca993..8b919cc >>>>> --- a/drivers/watchdog/mtk_wdt.c >>>>> +++ b/drivers/watchdog/mtk_wdt.c >>>>> @@ -25,6 +25,7 @@ >>>>> #include <linux/reset-controller.h> >>>>> #include <linux/types.h> >>>>> #include <linux/watchdog.h> >>>>> +#include <linux/interrupt.h> >>>>> >>>>> #define WDT_MAX_TIMEOUT 31 >>>>> #define WDT_MIN_TIMEOUT 1 >>>>> @@ -234,18 +235,35 @@ static int mtk_wdt_start(struct watchdog_device *wdt_dev) >>>>> void __iomem *wdt_base = mtk_wdt->wdt_base; >>>>> int ret; >>>>> >>>>> - ret = mtk_wdt_set_timeout(wdt_dev, wdt_dev->timeout); >>>>> + ret = mtk_wdt_set_timeout(wdt_dev, wdt_dev->timeout - wdt_dev->pretimeout); >>>> >>>> That looks suspiciously like the real watchdog won't happen at all. >>>> What will happen if the pretimeout governor is set to none ? >>>> >>>> Guenter >>>> >>> The pretimeout governor is panic by default. If pretimeout is enabled and the governor is >>> set to none, it means the timeout behavior does not need to be processed, only printing. >>> >> >> That was not my question. My question was if the real timeout happens in that case. >> >> Guenter >> > Yes, the real timeout will happen. After WDT timeout, IRQ is sent out instead of > reset signal first. In order to ensure that CPU does not get stuck after IRQ is sent out, > WDT will time again and send reset signal to reset. > When will that be, or in other words how does the chip know when to time out ? After all, only a single timeout value is written into the chip. I don't see how it would know to reset the chip after wdt_dev->timeout. Guenter