From: Tom Rini <trini@konsulko.com>
To: Wolfgang Denk <wd@denx.de>
Cc: Rasmus Villemoes <rasmus.villemoes@prevas.dk>,
Stefan Roese <sr@denx.de>,
u-boot@lists.denx.de, Simon Glass <sjg@chromium.org>
Subject: Re: [PATCH v4 07/10] watchdog: wdt-uclass.c: handle all DM watchdogs in watchdog_reset()
Date: Thu, 12 Aug 2021 09:48:33 -0400 [thread overview]
Message-ID: <20210812134833.GU858@bill-the-cat> (raw)
In-Reply-To: <575632.1628750421@gemini.denx.de>
[-- Attachment #1: Type: text/plain, Size: 3271 bytes --]
On Thu, Aug 12, 2021 at 08:40:21AM +0200, Wolfgang Denk wrote:
> Dear Tom,
>
> In message <20210811124318.GT858@bill-the-cat> you wrote:
> >
> > > This argument fits on all types or effors: they are supposed to
> > > never ever happen - at least in theory; in reality they do, and more
> > > often than we like.
> > >
> > > And a proper error message is mandatory for correct error handling.
> >
> > Error messages are a fine line to walk. We've got to have been very
> > badly corrupted to go down this error path. There's going to be lots of
> > other error messages popping out. Saving a bit of .text is good. It
> > makes it easier to justify spending a little .text later.
>
> Letting errors slip through unnoticed when there is a trival way to
> at least inform the user of the problem is simply unacceptable.
>
> Please do not let U-Boot degrade into such a crappy piece of code.
>
> There are tons of other places where we don't even mention code
> size, so if you want to save on that, there are many bette4r places
> to save than error handling.
Alright, lets take a look at what kind of area of the code we're talking
about. uclass_get is a pretty fundamental thing. If that fails, your
system is on fire. Things are massively corrupt. Lets look at other
existing callers to see what happens. Most callers check the return
code, like you need to, and pass it up the chain to deal with. We have
a few board specific ones such as
board/Marvell/octeontx2/board.c::board_quiesce_devices() that is also
conceptually like the x530 case in the next part of the series. That
does print on failure. The rest of the ones that print an error message
are about commands and it's somewhat helpful there.
So yes, return codes need to be checked and passed. But no, not every
single error path needs to print to the user along every part of an
error path either.
> > And here I agree, catch an error code, pass the error code back to the
> > caller. That's far more important than making sure that every error
> > code we catch logs a message by default every time.
>
> It does not matter where the error is reported - in the called
> function, or in some caller firther up the call tree. But it _must_
> be reportet at least once.
>
> So if we don't issue an error message here, we need to check and fix
> the callers, too.
That would be the next patch in the series where the BSP author isn't
currently checking the return value, and this series doesn't change
that. Perhaps it should, and CC the maintainer. But I think has been
said a few times over the course of this series, what exactly is one
going to do about the failure? Getting specific for a moment, if you're
in the case of "shutdown the watchdog" and the watchdog doesn't shutdown
like you want it to, do you hang and hope the watchdog is alive to kick
things still? hang and lock the system? Figure the system is on fire
anyhow but add another message to the failure spew?
Again, I think the change that's needed to this patch is to make it
return the error code to the caller. Let the caller decide. And make
sure to CC the board maintainer on the next go-round so they can chime
in about that.
--
Tom
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]
next prev parent reply other threads:[~2021-08-12 13:48 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-02 15:00 [PATCH v4 00/10] handling all DM watchdogs in watchdog_reset() Rasmus Villemoes
2021-08-02 15:00 ` [PATCH v4 01/10] watchdog: wdt-uclass.c: use wdt_start() in wdt_expire_now() Rasmus Villemoes
2021-08-02 15:00 ` [PATCH v4 02/10] watchdog: wdt-uclass.c: introduce struct wdt_priv Rasmus Villemoes
2021-08-03 6:30 ` Stefan Roese
2021-08-02 15:00 ` [PATCH v4 03/10] watchdog: wdt-uclass.c: neaten UCLASS_DRIVER definition Rasmus Villemoes
2021-08-02 15:00 ` [PATCH v4 04/10] watchdog: wdt-uclass.c: refactor initr_watchdog() Rasmus Villemoes
2021-08-02 15:00 ` [PATCH v4 05/10] watchdog: wdt-uclass.c: keep track of each device's running state Rasmus Villemoes
2021-08-02 15:00 ` [PATCH v4 06/10] sandbox: disable CONFIG_WATCHDOG_AUTOSTART Rasmus Villemoes
2021-08-02 15:00 ` [PATCH v4 07/10] watchdog: wdt-uclass.c: handle all DM watchdogs in watchdog_reset() Rasmus Villemoes
2021-08-02 19:22 ` Simon Glass
2021-08-03 6:29 ` Stefan Roese
2021-08-03 8:28 ` Stefan Roese
2021-08-11 11:32 ` Rasmus Villemoes
2021-08-11 11:49 ` Stefan Roese
2021-08-11 12:13 ` Rasmus Villemoes
2021-08-11 12:19 ` Stefan Roese
2021-08-11 12:29 ` Wolfgang Denk
2021-08-11 12:43 ` Tom Rini
2021-08-12 6:40 ` Wolfgang Denk
2021-08-12 13:48 ` Tom Rini [this message]
2021-08-12 14:12 ` Simon Glass
2021-08-12 14:21 ` Wolfgang Denk
2021-08-12 16:20 ` Tom Rini
2021-08-13 6:17 ` Wolfgang Denk
2021-08-17 9:28 ` Stefan Roese
2021-08-17 12:35 ` Tom Rini
2021-08-27 6:30 ` Stefan Roese
2021-08-27 12:26 ` Tom Rini
2021-08-02 15:00 ` [PATCH v4 08/10] watchdog: add gpio watchdog driver Rasmus Villemoes
2021-08-02 15:00 ` [PATCH v4 09/10] sandbox: add test of wdt_gpio driver Rasmus Villemoes
2021-08-02 15:00 ` [PATCH v4 10/10] sandbox: add test of wdt-uclass' watchdog_reset() Rasmus Villemoes
2021-08-11 6:05 ` [PATCH v4 00/10] handling all DM watchdogs in watchdog_reset() Rasmus Villemoes
2021-08-11 6:10 ` Stefan Roese
2021-08-11 6:19 ` Rasmus Villemoes
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=20210812134833.GU858@bill-the-cat \
--to=trini@konsulko.com \
--cc=rasmus.villemoes@prevas.dk \
--cc=sjg@chromium.org \
--cc=sr@denx.de \
--cc=u-boot@lists.denx.de \
--cc=wd@denx.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox