All of lore.kernel.org
 help / color / mirror / Atom feed
From: Al Stone <al.stone@linaro.org>
To: Timur Tabi <timur@codeaurora.org>,
	Guenter Roeck <linux@roeck-us.net>, Fu Wei <fu.wei@linaro.org>
Cc: Pratyush Anand <panand@redhat.com>,
	devicetree@vger.kernel.org, linux-watchdog@vger.kernel.org,
	Arnd Bergmann <arnd@arndb.de>,
	linux-doc@vger.kernel.org, Jon Masters <jcm@redhat.com>,
	Linaro ACPI Mailman List <linaro-acpi@lists.linaro.org>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	lkml <linux-kernel@vger.kernel.org>,
	Will Deacon <will.deacon@arm.com>,
	Wim Van Sebroeck <wim@iguana.be>,
	Rob Herring <robherring2@gmail.com>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Wei Fu <tekkamanninja@gmail.com>,
	Jonathan Corbet <corbet@lwn.net>, Dave Young <dyoung@redhat.com>,
	Vipul Gandhi <vgandhi@codeaurora.org>
Subject: Re: [Linaro-acpi] [PATCH v8 5/5] Watchdog: introduce ARM SBSA watchdog driver
Date: Thu, 19 Nov 2015 16:50:03 -0700	[thread overview]
Message-ID: <564E602B.6060606@linaro.org> (raw)
In-Reply-To: <56452D98.80704@codeaurora.org>

Sorry for the delayed response...I've got some difficult family things to work
on IRL that are taking priority...

On 11/12/2015 05:23 PM, Timur Tabi wrote:
> On 11/12/2015 06:06 PM, Al Stone wrote:
>> If it is a NAK, that's fine, but I also want to be sure I understand what the
>> objections are.  Based on my understanding of the discussion so far over the
>> multiple versions, I think the primary objection is that the use of pretimeout
>> makes this driver too complex, and indeed complex enough that there is some
>> concern that it could destabilize a running system.  Do I have that right?
> 
> I don't have a problem with the concept of pre-timeout per se.  My primary
> objection is this code:
> 
>> +static irqreturn_t sbsa_gwdt_interrupt(int irq, void *dev_id)
>> +{
>> +       struct sbsa_gwdt *gwdt = (struct sbsa_gwdt *)dev_id;
>> +       struct watchdog_device *wdd = &gwdt->wdd;
>> +
>> +       /* We don't use pretimeout, trigger WS1 now */
>> +       if (!wdd->pretimeout)
>> +               sbsa_gwdt_set_wcv(wdd, 0);
> 
> This driver depends on an interrupt handler in order to properly program the
> hardware.  Unlike some other devices, the SBSA watchdog does not need assistance
> to reset on a timeout -- it is a "fire and forget" device.  What happens if
> there is a hard lockup, and interrupts no longer work?

Aha.  I see now.  That helps clarify a lot.  Thanks.

> The reason why Fu does this is because he wants to support a pre-timeout value
> that's independent of the timeout value.  The SBSA watchdog is normally
> programmed where real timeout equals twice the pre-timeout.  I would prefer that
> the driver adhere to this limitation.  That would eliminate the need to
> pre-program the hardware in the interrupt handler.

The "normally programmed" limitation described is interesting; forgive my
ignorance, but where is that specified?  I couldn't find anything that specific
in the SBSA, or the ARM ARM, but I could have missed it.  That being said,
keeping them independent at least seems like a good idea; if I think about
kdump/kexec or some other recovery mechanism wanting to perhaps copy part of
RAM or flush a filesystem/database, or maybe do some other magic to recover
enough to be able to reset the timer, that may be a really long interval on a
large server.  I could easily see that being very different from a watchdog
timer that's meant to just make sure the platform is still making progress.
Conversely, I could see that recovery interval being very small or zero on
a guest OS, for example, and the watchdog still different.

>> And finally, a simpler, single stage timeout watchdog driver would be a
>> reasonable thing to accept, yes?  I can see where that would make sense.
> 
> I would be okay with merging such a driver, and then enhancing it later to add
> pre-timeout support.
> 
>> The issue for me in that case is that the SBSA requires a two stage timeout,
>> so a single stage driver has no real value for me.
> 
> There are plenty of existing watchdog devices that have a two-stage timeout but
> the driver treats it as a single stage.  The PowerPC watchdog driver is like
> that.  The hardware is programmed for the second stage to cause a hardware
> reset, and the interrupt handler is typically a no-op or just a printk().
> 

Hrm.  Thanks for the pointer.  I _think_ I see a way to do that with arm64, and
perhaps combine this driver's functionality with what Timur did originally, but
still have it reasonably straightforward.  I need to do the experiments, though,
and see if it actually works first.

-- 
ciao,
al
-----------------------------------
Al Stone
Software Engineer
Linaro Enterprise Group
al.stone@linaro.org
-----------------------------------

  reply	other threads:[~2015-11-19 23:50 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-27 16:06 [PATCH v8 0/5] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-10-27 16:06 ` [PATCH v8 1/5] Documentation: add sbsa-gwdt driver documentation fu.wei
2015-10-27 16:22   ` Mark Rutland
2015-10-27 16:22     ` Mark Rutland
2015-10-28  4:10     ` Fu Wei
2015-10-28  4:10       ` Fu Wei
2015-10-30 17:46       ` Timur Tabi
2015-10-30 17:46         ` Timur Tabi
2015-10-30 18:35         ` Fu Wei
2015-10-30 18:53           ` Timur Tabi
2015-10-30 18:53             ` Timur Tabi
2015-10-30 19:05             ` Mark Rutland
2015-10-30 20:37               ` Timur Tabi
2015-11-02  4:10                 ` Fu Wei
2015-11-02  4:10                   ` Fu Wei
2015-11-02  4:03               ` Fu Wei
2015-11-02  4:03                 ` Fu Wei
2015-11-02  4:06                 ` Timur Tabi
2015-11-02  4:06                   ` Timur Tabi
2015-11-02  4:23                   ` Jon Masters
2015-10-27 16:06 ` [PATCH v8 2/5] ARM64: add SBSA Generic Watchdog device node in foundation-v8.dts fu.wei
2015-10-27 16:06 ` [PATCH v8 3/5] ARM64: add SBSA Generic Watchdog device node in amd-seattle-soc.dtsi fu.wei
2015-10-27 16:06 ` [PATCH v8 4/5] Watchdog: introdouce "pretimeout" into framework fu.wei
2015-10-27 16:06 ` [PATCH v8 5/5] Watchdog: introduce ARM SBSA watchdog driver fu.wei
2015-11-05  1:59   ` [Linaro-acpi] " Timur Tabi
2015-11-05  5:13     ` Guenter Roeck
2015-11-05 11:58       ` Fu Wei
2015-11-05 13:47         ` Timur Tabi
2015-11-05 13:47           ` Timur Tabi
2015-11-05 13:47       ` Timur Tabi
2015-11-05 14:03         ` Fu Wei
2015-11-05 14:03           ` Fu Wei
2015-11-05 14:08           ` Timur Tabi
2015-11-05 14:35             ` Fu Wei
2015-11-05 14:40               ` Timur Tabi
2015-11-05 15:00                 ` Fu Wei
2015-11-05 16:41                   ` Guenter Roeck
2015-11-05 17:58                     ` Fu Wei
2015-11-05 17:59                     ` Timur Tabi
2015-11-05 18:04                       ` Fu Wei
2015-11-13  0:06                     ` Al Stone
2015-11-13  0:23                       ` Timur Tabi
2015-11-19 23:50                         ` Al Stone [this message]
2015-11-13  0:25                       ` Guenter Roeck
2015-11-13  0:25                         ` Guenter Roeck
2015-11-20  0:11                         ` Al Stone
2015-11-20  0:11                           ` Al Stone
2015-11-20  0:26                           ` Timur Tabi

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=564E602B.6060606@linaro.org \
    --to=al.stone@linaro.org \
    --cc=arnd@arndb.de \
    --cc=catalin.marinas@arm.com \
    --cc=corbet@lwn.net \
    --cc=devicetree@vger.kernel.org \
    --cc=dyoung@redhat.com \
    --cc=fu.wei@linaro.org \
    --cc=jcm@redhat.com \
    --cc=linaro-acpi@lists.linaro.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=panand@redhat.com \
    --cc=rjw@rjwysocki.net \
    --cc=robherring2@gmail.com \
    --cc=tekkamanninja@gmail.com \
    --cc=timur@codeaurora.org \
    --cc=vgandhi@codeaurora.org \
    --cc=will.deacon@arm.com \
    --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.