From: Guenter Roeck <linux@roeck-us.net>
To: James Hogan <james.hogan@imgtec.com>,
Andrew Bresticker <abrestic@chromium.org>
Cc: Wim Van Sebroeck <wim@iguana.be>,
linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org,
Ezequiel Garcia <ezequiel.garcia@imgtec.com>
Subject: Re: [PATCH V2 1/3] watchdog: imgpdc: Allow timeout to be set in device-tree
Date: Wed, 01 Apr 2015 18:08:58 -0700 [thread overview]
Message-ID: <551C96AA.2060906@roeck-us.net> (raw)
In-Reply-To: <20150401222218.GB13077@jhogan-linux.le.imgtec.org>
On 04/01/2015 03:22 PM, James Hogan wrote:
> Hi Andrew,
>
> On Wed, Apr 01, 2015 at 10:43:14AM -0700, Andrew Bresticker wrote:
>> Since the heartbeat is statically initialized to its default value,
>> watchdog_init_timeout() will never look in the device-tree for a
>> timeout-sec value. Instead of statically initializing heartbeat,
>> fall back to the default timeout value if watchdog_init_timeout()
>> fails.
>
> Whoops. Sorry about that. I wasn't aware that a timeout-sec value was
> expected. It isn't mentioned in the DT binding documentation for this
> device :-(.
>
>>
>> Signed-off-by: Andrew Bresticker <abrestic@chromium.org>
>> Cc: Ezequiel Garcia <ezequiel.garcia@imgtec.com>
>> Cc: James Hogan <james.hogan@imgtec.com>
>> ---
>> New for v2.
>> ---
>> drivers/watchdog/imgpdc_wdt.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/watchdog/imgpdc_wdt.c b/drivers/watchdog/imgpdc_wdt.c
>> index 0deaa4f..89b2abc 100644
>> --- a/drivers/watchdog/imgpdc_wdt.c
>> +++ b/drivers/watchdog/imgpdc_wdt.c
>> @@ -42,7 +42,7 @@
>> #define PDC_WDT_MIN_TIMEOUT 1
>> #define PDC_WDT_DEF_TIMEOUT 64
>>
>> -static int heartbeat = PDC_WDT_DEF_TIMEOUT;
>> +static int heartbeat;
>> module_param(heartbeat, int, 0);
>> MODULE_PARM_DESC(heartbeat, "Watchdog heartbeats in seconds "
>> "(default=" __MODULE_STRING(PDC_WDT_DEF_TIMEOUT) ")");
>> @@ -195,9 +195,9 @@ static int pdc_wdt_probe(struct platform_device *pdev)
>>
>> ret = watchdog_init_timeout(&pdc_wdt->wdt_dev, heartbeat, &pdev->dev);
>> if (ret < 0) {
>> - pdc_wdt->wdt_dev.timeout = pdc_wdt->wdt_dev.max_timeout;
>> + pdc_wdt->wdt_dev.timeout = PDC_WDT_DEF_TIMEOUT;
>
> The watchdog_init_timeout kerneldoc comment suggests that the old value
> should be the default timeout, i.e. that timeout should be set to
> PDC_WDT_DEF_TIMEOUT before calling watchdog_init_timeout, rather than
> whenever ret < 0.
>
> Indeed, if heartbeat is set to an invalid non-zero value,
> watchdog_init_timeout will still try and set timeout from DT, but also
> still returns -EINVAL regardless of whether that succeeds, and this
> would incorrectly override the timeout from DT with the hardcoded
> default.
>
>> dev_warn(&pdev->dev,
>> - "Initial timeout out of range! setting max timeout\n");
>> + "Initial timeout out of range! setting default timeout\n");
>
> It feels wrong for a presumably safe & normal situation (i.e. no default
> in DT, which arguably shouldn't contain policy anyway) to show a
> warning, but it can also show due to an invalid module parameter (or
> invalid DT property) which is most definitely justified.
>
Agreed. I would suggest to leave that part alone and set the default prior
to calling watchdog_init_timeout().
Guenter
> The caller can check (ret < 0 && heartbeat) to tell if heartbeat was
> invalid, but unfortunately it can't easily tell if the DT property is
> out of range rather than simply absent.
>
> Cheers
> James
>
>> }
>>
>> pdc_wdt_stop(&pdc_wdt->wdt_dev);
>> --
>> 2.2.0.rc0.207.ga3a616c
>>
next prev parent reply other threads:[~2015-04-02 1:09 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-01 17:43 [PATCH V2 1/3] watchdog: imgpdc: Allow timeout to be set in device-tree Andrew Bresticker
2015-04-01 17:43 ` [PATCH V2 2/3] watchdog: imgpdc: Set timeout before starting watchdog Andrew Bresticker
2015-04-01 17:43 ` [PATCH V2 3/3] watchdog: imgpdc: Add reboot support Andrew Bresticker
2015-04-01 22:22 ` [PATCH V2 1/3] watchdog: imgpdc: Allow timeout to be set in device-tree James Hogan
2015-04-01 22:42 ` Andrew Bresticker
2015-04-02 1:08 ` Guenter Roeck [this message]
2015-04-02 16:46 ` Andrew Bresticker
2015-04-03 1:52 ` Guenter Roeck
2015-04-03 2:16 ` Andrew Bresticker
2015-04-03 2:35 ` Guenter Roeck
2015-04-03 5:38 ` Guenter Roeck
2015-04-02 1:42 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=551C96AA.2060906@roeck-us.net \
--to=linux@roeck-us.net \
--cc=abrestic@chromium.org \
--cc=ezequiel.garcia@imgtec.com \
--cc=james.hogan@imgtec.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=wim@iguana.be \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.