Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp1327139pxf; Fri, 9 Apr 2021 05:57:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw/cuV3CA0h4Z+jpC0ktkZiVBwpYFXK1Y+Ew4t+/cld9J0BsTecK+mycbPLcXvM6YcXv4Gx X-Received: by 2002:a17:90a:6906:: with SMTP id r6mr13842479pjj.235.1617973050861; Fri, 09 Apr 2021 05:57:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617973050; cv=none; d=google.com; s=arc-20160816; b=LtNqjOLcEMUB3jEAW50tlq+qXx2S+yGHqcwh4PYFK2yXa9eeB97veBvkRj5o2qzOJ8 KSk6Sh5CwAk9TEYMsMGk55Ac+ZWxV7a3yP1NteQUUWiwtiEFphY3UI/cGgLj3ngOeRsL imIzkMc4PG14YlXcM5vlRZvnDAjZ79Uk7q67E8p1+xN/2Lj6Ap3w+4nSMqmEe0pvB8X/ B2hXUivqHzX49VA0NKdfxV83EGJI/MXU3mxynLSEOt+Be6gn/zK5o2okvnSd+Y75zc+Y Fxb6xEDX93VvVcfFxARvDtlkan8CtW9Ed4+wgYtl9XY5qtgLfRFYWgVaEw95CKfz0ofn fEQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:autocrypt:from :references:to:subject:sender:dkim-signature; bh=fwttXM4IrIskvD+euCM24YMsRm1qTmd/RamXUVd2Yl4=; b=ogmamepAIto8PdMgkWQpXxzxV9c6PJEREgK3aqMc2y3AcsxQh+aGGYF7oHUKaWeeB5 sy7Du8PvZ1v7UeB7BYj8oTPB4s396h+aItHqQOmMU6byRS9fmPSvdsDf/9MOgoozEdgd 0R/+VmlijckX5YZTBTe+JvLMA9fgInJrUc+c0uuHuOQz2geEW//E0f4MvbLuEx/kc6cX 3x7D+UOhq5HyBJMLZymtdcazsx+FJ9R8JZWjeQf13flY9i3OBiI4/cz0RtOFgZnF4oNW kpjjdd/LnghM4PFgZd5bEckh1bkkqzUWs4ky1hQOG04v5cZvZo5c+AD71A5x/ytp+R5c 12TQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=rbg1Si7Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k12si2683389pgp.381.2021.04.09.05.57.18; Fri, 09 Apr 2021 05:57:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=rbg1Si7Y; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233629AbhDIM5B (ORCPT + 99 others); Fri, 9 Apr 2021 08:57:01 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36340 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231946AbhDIM5A (ORCPT ); Fri, 9 Apr 2021 08:57:00 -0400 Received: from mail-ot1-x32e.google.com (mail-ot1-x32e.google.com [IPv6:2607:f8b0:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B0EEC061760; Fri, 9 Apr 2021 05:56:47 -0700 (PDT) Received: by mail-ot1-x32e.google.com with SMTP id s16-20020a0568301490b02901b83efc84a0so5532924otq.10; Fri, 09 Apr 2021 05:56:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:to:references:from:autocrypt:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=fwttXM4IrIskvD+euCM24YMsRm1qTmd/RamXUVd2Yl4=; b=rbg1Si7YnB03vd6n+czv4GuYSDILswEKkocKEjzWULCerLezPabTmRspJJf23D8Dfz W+Y8xQmJt1Ys46Kw8+f57EOP0PwlZCveJOMBO0QnhBpMg+AJStRFuj30UTjTYzlV8Qjj yuOZdxELpnh4lFk8IiBoSbZ1WF/V6EfBFSVxofGeTySZ7uCDGmRynxnVn3g4zfmFcoN7 sOMILYME5NE/+8Ac36JcDM65iy5gAZSvjWOylmMCAGGamStLkK9A32GQvWsElbKqlRzt 8CHz2pZOqFQrBesF431m4JfGeQXSq1DaOUOB7/5vQ7QNbzb+Ow6me2y002yIe/+wqbxd JTxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:to:references:from:autocrypt :message-id:date:user-agent:mime-version:in-reply-to :content-language:content-transfer-encoding; bh=fwttXM4IrIskvD+euCM24YMsRm1qTmd/RamXUVd2Yl4=; b=P03PA+R5bDDQOIit9mZDjduBy4G2eWfuBWrfR6b3+/OIw+onJBem6PO2vb7Ynyx9aN XQg6wTkkyjhIZT/s94UZ6ACY632rDH4qjV9VLRDULU4Se0bgp1mml2ne/SfE2v6i3XYB gYY2BmniIWNAMbWnzuTLPJ3xESpWs1VFILOo64QtzAy/2swwFyd0+LIBRo4w93m+4LJ5 +upitaIFBCka4NP6ZMW6Ea/jFqRginBiAFKDYPeko7WYYibi2kFoBmVcx4Ye9NKx1Xsm 8qYvrZ7K6tM3fBmfpRtF0OzcfffuHdkTVgGQlcOp+Fxpdmy/jRVhNlTBuvfgyeMlWDJI ELqg== X-Gm-Message-State: AOAM530pVKfpLP+KZu9yTVG0/0ZruDlyu8IyzD2oDMMly7VOu/Tr+M4o K9dj/jR9szXV7SVvinV2/D4eMhrC0rI= X-Received: by 2002:a9d:75c5:: with SMTP id c5mr11879726otl.334.1617973006272; Fri, 09 Apr 2021 05:56:46 -0700 (PDT) Received: from server.roeck-us.net ([2600:1700:e321:62f0:329c:23ff:fee3:9d7c]) by smtp.gmail.com with ESMTPSA id i4sm489301oik.21.2021.04.09.05.56.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 09 Apr 2021 05:56:45 -0700 (PDT) Sender: Guenter Roeck Subject: Re: [PATCH] watchdog: mtk: support pre-timeout when the bark irq is available To: Wang Qing , Wim Van Sebroeck , Matthias Brugger , linux-watchdog@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org References: <1617962142-28795-1-git-send-email-wangqing@vivo.com> From: Guenter Roeck Autocrypt: addr=linux@roeck-us.net; keydata= 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 mDW4+i+XlNFUPUYMrIKi9joBhu18ssf5i5Q= Message-ID: <58b6f50a-4522-dc21-3411-7ed18059b480@roeck-us.net> Date: Fri, 9 Apr 2021 05:56:43 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 In-Reply-To: <1617962142-28795-1-git-send-email-wangqing@vivo.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 > --- > 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 > #include > #include > +#include > > #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 > if (ret < 0) > return ret; > > reg = ioread32(wdt_base + WDT_MODE); > reg &= ~(WDT_MODE_IRQ_EN | WDT_MODE_DUAL_EN); > + if (wdt_dev->pretimeout) > + reg |= WDT_MODE_IRQ_EN; > reg |= (WDT_MODE_EN | WDT_MODE_KEY); > iowrite32(reg, wdt_base + WDT_MODE); > > return 0; > } > > +static int mtk_wdt_set_pretimeout(struct watchdog_device *wdd, > + unsigned int timeout) > +{ > + wdd->pretimeout = timeout; > + return mtk_wdt_start(wdd); > +} > + > +static irqreturn_t mtk_wdt_isr(int irq, void *arg) > +{ > + struct watchdog_device *wdd = arg; > + watchdog_notify_pretimeout(wdd); > + > + return IRQ_HANDLED; > +} > + > static const struct watchdog_info mtk_wdt_info = { > .identity = DRV_NAME, > .options = WDIOF_SETTIMEOUT | > @@ -253,12 +271,21 @@ static const struct watchdog_info mtk_wdt_info = { > WDIOF_MAGICCLOSE, > }; > > +static const struct watchdog_info mtk_wdt_pt_info = { > + .identity = DRV_NAME, > + .options = WDIOF_SETTIMEOUT | > + WDIOF_PRETIMEOUT | > + WDIOF_KEEPALIVEPING | > + WDIOF_MAGICCLOSE, > +}; > + > static const struct watchdog_ops mtk_wdt_ops = { > .owner = THIS_MODULE, > .start = mtk_wdt_start, > .stop = mtk_wdt_stop, > .ping = mtk_wdt_ping, > .set_timeout = mtk_wdt_set_timeout, > + .set_pretimeout = mtk_wdt_set_pretimeout, > .restart = mtk_wdt_restart, > }; > > @@ -267,7 +294,7 @@ static int mtk_wdt_probe(struct platform_device *pdev) > struct device *dev = &pdev->dev; > struct mtk_wdt_dev *mtk_wdt; > const struct mtk_wdt_data *wdt_data; > - int err; > + int err,irq; > > mtk_wdt = devm_kzalloc(dev, sizeof(*mtk_wdt), GFP_KERNEL); > if (!mtk_wdt) > @@ -279,7 +306,21 @@ static int mtk_wdt_probe(struct platform_device *pdev) > if (IS_ERR(mtk_wdt->wdt_base)) > return PTR_ERR(mtk_wdt->wdt_base); > > - mtk_wdt->wdt_dev.info = &mtk_wdt_info; > + irq = platform_get_irq(pdev, 0); > + if (irq > 0) { > + err = devm_request_irq(&pdev->dev, irq, mtk_wdt_isr, 0, "wdt_bark", &mtk_wdt->wdt_dev); > + if (err) > + return err; > + > + mtk_wdt->wdt_dev.info = &mtk_wdt_pt_info; > + mtk_wdt->wdt_dev.pretimeout = 1; > + } else { > + if (irq == -EPROBE_DEFER) > + return -EPROBE_DEFER; > + > + mtk_wdt->wdt_dev.info = &mtk_wdt_info; > + } > + > mtk_wdt->wdt_dev.ops = &mtk_wdt_ops; > mtk_wdt->wdt_dev.timeout = WDT_MAX_TIMEOUT; > mtk_wdt->wdt_dev.max_hw_heartbeat_ms = WDT_MAX_TIMEOUT * 1000; >