All of lore.kernel.org
 help / color / mirror / Atom feed
From: Timo Kokkonen <timo.kokkonen@offcode.fi>
To: "Yang, Wenyou" <wenyou.yang@atmel.com>,
	linux-arm-kernel@lists.infradead.org,
	linux-watchdog@vger.kernel.org,
	boris.brezillon@free-electrons.com, nicolas.ferre@atmel.com,
	alexandre.belloni@free-electrons.com
Subject: Re: [PATCHv5 0/4] watchdog: Extend kernel API and add early_timeout_sec feature
Date: Mon, 13 Apr 2015 11:19:18 +0300	[thread overview]
Message-ID: <552B7C06.1010209@offcode.fi> (raw)
In-Reply-To: <552B767C.6020300@atmel.com>

On 13.04.2015 10:55, Yang, Wenyou wrote:
>
>
> On 2015/4/10 21:06, Timo Kokkonen wrote:
>> The watchdog kernel API is quite limited. It has support for providing
>> generic device handling, but it doesn't really know anything about the
>> watchdog hardware or its constraints. The watchdog drivers come with a
>> lot of diversity and their own set of quirks and constraints. Some of
>> their limitations are not nice for the user space, so the drivers work
>> around them with all sorts of ad hoc implementations.
>>
>> One common pattern is to use kernel timers or work queues to allow
>> longer timeout parameters than the actual hardware supports. To solve
>> this problem, this patch set extends the kernel watchdog API with a few
>> parameters that let the core know more about the watchdog HW and take
>> care about the timeout extending.
>>
>> The patch set also implements "early_timeout_sec" feature that is very
>> common on many production systems where early kernel or user space
>> crashes must lead to a device reset. Traditional watchdog handling
>> does not allow this as the watchdog is stopped (fully or emulating
>> stopped state with kernel timers) before user space opens it for the
>> first time.
>>
>> The changes are designed to be taken in use one driver at time. If the
>> driver does not set the new parameters and call
>> watchdog_init_params(), the watchdog behavior is exactly the same as
>> before.
>>
>> In principle this new API makes it possible for the user space to see
>> every watchdog hardware to behave the same, at least in terms of
>> watchdog timeouts. Once the API is in, it should be easier to move
>> even more common behavior out of the driver code to the watchdog core
>> and make the drivers simpler.
>>
>> I'm not anticipating this patch set to go in as is, this is merely to
>> help bringing up the discussion as there is a working patch set to look
>> at. There are propably some corner cases that I didn't get right
>> yet. Also, we could even remove the maximum timeout completely as the
>> HW no longer limits the watchdog timeouts. This propably needs some
>> thinking still and your commenting.
>>
>> Please review and give feedback.
> Tested on the SAMA5D4EK.
>
> Tested-by Wenyou Yang <wenyou.yang@atmel.com>

Thank you, the typos you pointed will be fixed on the next version.

-Timo

>>
>> Patch revision history:
>>
>> -v5: Re-think the approach to be fully generic. The early_timeout_sec
>>    handling is no longer in the driver but in the watchdog core. As a
>>    result the core needed to gain knowledge about the watchdog
>>    hardware. Appropriate handling is added in the core. The side effect
>>    for this is that drivers using the new extensions can be simplified
>>    a lot and different kinds of watchdog hardware can be made to
>>    behave the same for the user space.
>>
>> -v4: Binding documentation is now separated completely from the driver
>>    patch. The documentation no longer makes any assumptions about how
>>    the actual implementation is made, it just describes the actual
>>    behavior the driver should implement in order to satisfy the
>>    requirement.
>>
>> - v3: Rename the property to "early-timeout-sec" and use it as a
>>    timeout value that stops the timer in the atmel driver after the
>>    timeout expires. A watchdog.txt is also introduced for documenting
>>    the common watchdog properties, including now this one and
>>    "timeout-sec" property.
>>
>> - v2: Rename the property to "enable-early-reset" as the behavior
>>    itself is not atmel specific. This way other drivers are free to
>>    implement same behavior with the same property name.
>>
>> - v1: Propose property name "atmle,no-early-timer" for disabling the
>>    timer that keeps the atmel watchdog running until user space opens
>>    the device.
>>
>>
>> Timo Kokkonen (4):
>>    watchdog: Extend kernel API to know about HW limitations
>>    watchdog: Allow watchdog to reset device at early boot
>>    devicetree: Document generic watchdog properties
>>    watchdog: at91sam9_wdt: Convert to use new watchdog core extensions
>>
>>   .../devicetree/bindings/watchdog/watchdog.txt      |  20 ++++
>>   drivers/watchdog/at91sam9_wdt.c                    |  58 +++--------
>>   drivers/watchdog/watchdog_core.c                   | 108
>> ++++++++++++++++++++-
>>   drivers/watchdog/watchdog_dev.c                    |  12 +++
>>   include/linux/watchdog.h                           |  24 +++++
>>   5 files changed, 173 insertions(+), 49 deletions(-)
>>   create mode 100644
>> Documentation/devicetree/bindings/watchdog/watchdog.txt
>>
>


WARNING: multiple messages have this Message-ID (diff)
From: timo.kokkonen@offcode.fi (Timo Kokkonen)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCHv5 0/4] watchdog: Extend kernel API and add early_timeout_sec feature
Date: Mon, 13 Apr 2015 11:19:18 +0300	[thread overview]
Message-ID: <552B7C06.1010209@offcode.fi> (raw)
In-Reply-To: <552B767C.6020300@atmel.com>

On 13.04.2015 10:55, Yang, Wenyou wrote:
>
>
> On 2015/4/10 21:06, Timo Kokkonen wrote:
>> The watchdog kernel API is quite limited. It has support for providing
>> generic device handling, but it doesn't really know anything about the
>> watchdog hardware or its constraints. The watchdog drivers come with a
>> lot of diversity and their own set of quirks and constraints. Some of
>> their limitations are not nice for the user space, so the drivers work
>> around them with all sorts of ad hoc implementations.
>>
>> One common pattern is to use kernel timers or work queues to allow
>> longer timeout parameters than the actual hardware supports. To solve
>> this problem, this patch set extends the kernel watchdog API with a few
>> parameters that let the core know more about the watchdog HW and take
>> care about the timeout extending.
>>
>> The patch set also implements "early_timeout_sec" feature that is very
>> common on many production systems where early kernel or user space
>> crashes must lead to a device reset. Traditional watchdog handling
>> does not allow this as the watchdog is stopped (fully or emulating
>> stopped state with kernel timers) before user space opens it for the
>> first time.
>>
>> The changes are designed to be taken in use one driver at time. If the
>> driver does not set the new parameters and call
>> watchdog_init_params(), the watchdog behavior is exactly the same as
>> before.
>>
>> In principle this new API makes it possible for the user space to see
>> every watchdog hardware to behave the same, at least in terms of
>> watchdog timeouts. Once the API is in, it should be easier to move
>> even more common behavior out of the driver code to the watchdog core
>> and make the drivers simpler.
>>
>> I'm not anticipating this patch set to go in as is, this is merely to
>> help bringing up the discussion as there is a working patch set to look
>> at. There are propably some corner cases that I didn't get right
>> yet. Also, we could even remove the maximum timeout completely as the
>> HW no longer limits the watchdog timeouts. This propably needs some
>> thinking still and your commenting.
>>
>> Please review and give feedback.
> Tested on the SAMA5D4EK.
>
> Tested-by Wenyou Yang <wenyou.yang@atmel.com>

Thank you, the typos you pointed will be fixed on the next version.

-Timo

>>
>> Patch revision history:
>>
>> -v5: Re-think the approach to be fully generic. The early_timeout_sec
>>    handling is no longer in the driver but in the watchdog core. As a
>>    result the core needed to gain knowledge about the watchdog
>>    hardware. Appropriate handling is added in the core. The side effect
>>    for this is that drivers using the new extensions can be simplified
>>    a lot and different kinds of watchdog hardware can be made to
>>    behave the same for the user space.
>>
>> -v4: Binding documentation is now separated completely from the driver
>>    patch. The documentation no longer makes any assumptions about how
>>    the actual implementation is made, it just describes the actual
>>    behavior the driver should implement in order to satisfy the
>>    requirement.
>>
>> - v3: Rename the property to "early-timeout-sec" and use it as a
>>    timeout value that stops the timer in the atmel driver after the
>>    timeout expires. A watchdog.txt is also introduced for documenting
>>    the common watchdog properties, including now this one and
>>    "timeout-sec" property.
>>
>> - v2: Rename the property to "enable-early-reset" as the behavior
>>    itself is not atmel specific. This way other drivers are free to
>>    implement same behavior with the same property name.
>>
>> - v1: Propose property name "atmle,no-early-timer" for disabling the
>>    timer that keeps the atmel watchdog running until user space opens
>>    the device.
>>
>>
>> Timo Kokkonen (4):
>>    watchdog: Extend kernel API to know about HW limitations
>>    watchdog: Allow watchdog to reset device at early boot
>>    devicetree: Document generic watchdog properties
>>    watchdog: at91sam9_wdt: Convert to use new watchdog core extensions
>>
>>   .../devicetree/bindings/watchdog/watchdog.txt      |  20 ++++
>>   drivers/watchdog/at91sam9_wdt.c                    |  58 +++--------
>>   drivers/watchdog/watchdog_core.c                   | 108
>> ++++++++++++++++++++-
>>   drivers/watchdog/watchdog_dev.c                    |  12 +++
>>   include/linux/watchdog.h                           |  24 +++++
>>   5 files changed, 173 insertions(+), 49 deletions(-)
>>   create mode 100644
>> Documentation/devicetree/bindings/watchdog/watchdog.txt
>>
>

  reply	other threads:[~2015-04-13  8:19 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-10 13:06 [PATCHv5 0/4] watchdog: Extend kernel API and add early_timeout_sec feature Timo Kokkonen
2015-04-10 13:06 ` Timo Kokkonen
2015-04-10 13:06 ` [PATCHv5 1/4] watchdog: Extend kernel API to know about HW limitations Timo Kokkonen
2015-04-10 13:06   ` Timo Kokkonen
2015-04-13  7:56   ` Yang, Wenyou
2015-04-13  7:56     ` Yang, Wenyou
2015-04-13  9:29   ` Yang, Wenyou
2015-04-13  9:29     ` Yang, Wenyou
2015-04-13 11:00     ` Timo Kokkonen
2015-04-13 11:00       ` Timo Kokkonen
2015-04-14  2:39       ` Yang, Wenyou
2015-04-14  2:39         ` Yang, Wenyou
2015-04-14  5:31         ` Timo Kokkonen
2015-04-14  5:31           ` Timo Kokkonen
2015-04-14  5:44           ` Yang, Wenyou
2015-04-14  5:44             ` Yang, Wenyou
2015-04-10 13:06 ` [PATCHv5 2/4] watchdog: Allow watchdog to reset device at early boot Timo Kokkonen
2015-04-10 13:06   ` Timo Kokkonen
2015-04-13  7:56   ` Yang, Wenyou
2015-04-13  7:56     ` Yang, Wenyou
2015-04-10 13:06 ` [PATCHv5 3/4] devicetree: Document generic watchdog properties Timo Kokkonen
2015-04-10 13:06   ` Timo Kokkonen
2015-04-10 13:06 ` [PATCHv5 4/4] watchdog: at91sam9_wdt: Convert to use new watchdog core extensions Timo Kokkonen
2015-04-10 13:06   ` Timo Kokkonen
2015-04-13  7:55 ` [PATCHv5 0/4] watchdog: Extend kernel API and add early_timeout_sec feature Yang, Wenyou
2015-04-13  7:55   ` Yang, Wenyou
2015-04-13  8:19   ` Timo Kokkonen [this message]
2015-04-13  8:19     ` Timo Kokkonen

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=552B7C06.1010209@offcode.fi \
    --to=timo.kokkonen@offcode.fi \
    --cc=alexandre.belloni@free-electrons.com \
    --cc=boris.brezillon@free-electrons.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=nicolas.ferre@atmel.com \
    --cc=wenyou.yang@atmel.com \
    /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.