From: Tom Rini <trini@konsulko.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [U-Boot, v1] watchdog: Fix Watchdog Reset while in U-Boot Prompt
Date: Tue, 18 Oct 2016 18:47:36 -0400 [thread overview]
Message-ID: <20161018224736.GJ18591@bill-the-cat> (raw)
In-Reply-To: <20160726111841.59B321E42D0@proxy.tng.vnc.biz>
On Wed, Jul 13, 2016 at 12:56:51PM +0200, Andreas J. Reichel wrote:
> Hardware: CM-FX6 Module from Compulab
>
> This patch fixes unwanted watchdog resets while the user enters
> a command at the U-Boot prompt.
>
> As found on the CM-FX6 board from Compulab, when having enabled the
> watchdog, a missing WATCHDOG_RESET call in common/console.c causes
> this and alike boards to reset when the watchdog's timeout has
> elapsed while waiting at the U-Boot prompt.
>
> Despite the user could press several keys within the watchdog
> timeout limit, the while loop in cli_readline.c, line 261, does only
> call WATCHDOG_RESET if first == 1, which gets set to 0 in the 1st
> loop iteration. This leads to a watchdog timeout no matter if the
> user presses keys or not.
>
> Although, this affects other boards as well as it touches
> common/console.c, the macro WATCHDOG_RESET expands to {} if watchdog
> support isn't configured. Hence, there's no harm caused and no need to
> surround it by #ifdef in this case.
>
> * Symptom:
> U-Boot resets after watchdog times out when in commandline prompt
> and watchdog is enabled.
>
> * Reasoning:
> When U-Boot shows the commandline prompt, the following function
> call stack is executed while waiting for a keypress:
>
> common/main.c:
> main_loop => common/cli.c: cli_loop() =>
> common/cli_hush.c:
> parse_file_outer => parse_stream_outer =>
> parse_stream => b_getch(i) =>
> i->get(i) => file_get =>
> get_user_input => cmdedit_read_input =>
> uboot_cli_readline =>
> common/cli_readline.c:
> cli_readline => cli_readline_into_buffer =>
> cread_line => getcmd_getch (== getc) =>
> common/console.c:
> fgetc => console_tstc
>
> common/console.c:
> (with CONFIG_CONSOLE_MUX is set)
>
> - in console_tstc line 181:
> If dev->tstc(dev) returns 0, the global tstcdev variable doesn't get
> set. This is the case if no character is in the serial buffer.
>
> - in fgetc(int file), line 297:
> Program flow keeps looping because tstcdev does not get set.
> Therefore WATCHDOG_RESET is not called, as mx_serial_tstc from
> drivers/serial/serial_mxc.c does not call it.
>
> * Solution:
> Add WATCHDOG_RESET into the loop of console_tstc.
>
> Note: Macro expands to {} if not configured, so no #ifdef is needed.
>
> * Comment:
>
> Signed-off-by: Christian Storm <christian.storm@tngtech.com>
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> Signed-off-by: Andreas J. Reichel <Andreas.Reichel@tngtech.com>
> Acked-by: Simon Glass <sjg@chromium.org>
Applied to u-boot/master, thanks!
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20161018/abca43d0/attachment.sig>
prev parent reply other threads:[~2016-10-18 22:47 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-13 10:56 [U-Boot] [PATCH PATCH v1] watchdog: Fix Watchdog Reset while in U-Boot Prompt Andreas J. Reichel
2016-08-01 1:01 ` Simon Glass
2016-08-01 11:49 ` [U-Boot] [PATCH v2] " Andreas J. Reichel
2016-09-06 1:04 ` Simon Glass
2016-09-19 11:59 ` Andreas Reichel
2016-10-15 1:45 ` Tom Rini
2016-08-01 13:32 ` [U-Boot] [PATCH v2 0/1] Fix U-Boot Prompt on CM-FX6 with enabled watchdog Andreas J. Reichel
2016-10-18 22:47 ` Tom Rini [this message]
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=20161018224736.GJ18591@bill-the-cat \
--to=trini@konsulko.com \
--cc=u-boot@lists.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 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.