All of lore.kernel.org
 help / color / mirror / Atom feed
From: Guenter Roeck <linux@roeck-us.net>
To: Ariel D'Alessandro <ariel@vanguardiasur.com.ar>
Cc: linux-watchdog@vger.kernel.org, wim@iguana.be,
	ezequiel@vanguardiasur.com.ar
Subject: Re: [PATCH 1/2] watchdog: NXP LPC18XX Windowed Watchdog Timer Driver
Date: Sun, 28 Jun 2015 21:47:50 -0700	[thread overview]
Message-ID: <5590CDF6.7000103@roeck-us.net> (raw)
In-Reply-To: <55903943.10309@vanguardiasur.com.ar>

On 06/28/2015 11:13 AM, Ariel D'Alessandro wrote:
> Hi Guenter,
> Thanks for your quick reply.
>
My pleasure ....

>>> +/*
>>> + * NXP LPC18xx Windowed Watchdog Timer (WWDT)
>>> + *
>>
>> What does "Windowed" stand for ? That term doesn't really mean anything
>> to me. How does it differ from a non-windowed watchdog driver ?
>
> "NXP LPC18xx Windowed Watchdog Timer" is the full specific name of the
> Watchdog, as it's written in the LPC18xx User Manual (UM10430).
>
> "Windowed" means that, besides the maximum, a minimum time-out period
> can be set, requiring reload operation (feed) to occur between these two
> limits.
>
> Linux watchdog framework doesn't take this property into account, so
> "Windowed" term may not have much significance here. Do you think it
> should be removed?
>
I would suggest to drop the term - without explanation it is just confusing.

>>> +/* Timeout values in seconds */
>>> +#define LPC_WDT_DEF_TIMEOUT		1
>>> +
>>
>> One second ? This is highly unusual. 30 or 60 seconds is more common,
>> and one second would be very challenging for user space.
>>
>> Any special reason for using such a tight default ?
>
> Considering that LPC18xx Watchdog has a fixed divide-by-4 clock
> pre-scaler and a 24-bit counter and that Watchdog clock runs at a fixed
> frequency of 12MHz, timeout range goes from 1 to 5 seconds.
>
> I think you're right, 1 sec is very challenging, so it's 5 secs then.
>
Ultimately you might want to consider a soft timer as backup to the system
timeout. But that can be done later if/when needed.

>>> +
>>> +static int lpc_wdt_remove(struct platform_device *pdev)
>>> +{
>>> +	struct lpc_wdt_dev *lpc_wdt = platform_get_drvdata(pdev);
>>> +
>>> +	lpc_wdt_stop(&lpc_wdt->wdt_dev);
>>
>> This will keep the timer enabled. It would be interesting to see what
>> happens if you build the driver as module and unload it. I think
>> it will crash. Can you try ?
>
> Yes, you're right. After module gets unloaded, timer keeps enabled with
> a callback that was deallocated from memory.
>
> Since Watchdog cannot be disabled in hardware, it's not going to be
> possible to remove the driver without resetting the system. Unless we
> could keep a timer set and running outside the module, it won't be
> removable.
>
> What do you think?
>

My take is that the driver should be loadable as module, which implies
that it must be removable. Whoever actually does remove the driver
is really asking for trouble and doesn't deserve better.

On the other side, there are a few other watchdogs with similar properties.
Maybe we can just take guidance from there. Can you have a look ?
I can look myself, but it may take a few days.

Thanks,
Guenter


  reply	other threads:[~2015-06-29  4:47 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-26 18:24 [PATCH 0/2] Add support for NXP LPC18xx Watchdog timer Ariel D'Alessandro
2015-06-26 18:24 ` [PATCH 1/2] watchdog: NXP LPC18XX Windowed Watchdog Timer Driver Ariel D'Alessandro
2015-06-26 19:07   ` Guenter Roeck
2015-06-28 18:13     ` Ariel D'Alessandro
2015-06-29  4:47       ` Guenter Roeck [this message]
2015-07-01 11:30         ` adalessandro
2015-07-01 12:02           ` Ariel D'Alessandro
2015-07-01 13:54             ` Guenter Roeck
2015-07-01 14:38               ` Wim Van Sebroeck
2015-07-01 15:22               ` Ezequiel Garcia
2015-07-01 15:22                 ` Ezequiel Garcia
2015-07-01 17:03                 ` Guenter Roeck
2015-07-01 17:03                   ` Guenter Roeck
2015-06-26 18:24 ` [PATCH 2/2] DT: watchdog: Add NXP LPC18XX Watchdog Timer binding documentation Ariel D'Alessandro

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=5590CDF6.7000103@roeck-us.net \
    --to=linux@roeck-us.net \
    --cc=ariel@vanguardiasur.com.ar \
    --cc=ezequiel@vanguardiasur.com.ar \
    --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.