On 11.01.21 08:17, Heinrich Schuchardt wrote:
Am 11. Januar 2021 08:02:12 MEZ schrieb Stefan Roese <[email protected]>:
Added Heinrich to Cc.
On 10.01.21 19:44, Matthias Brugger wrote:
On 09/01/2021 15:57, Stefan Roese wrote:
On 09.01.21 03:32, Matthias Brugger wrote:
On 08/01/2021 08:39, Stefan Roese wrote:
On 07.01.21 16:36, [email protected] wrote:
From: Matthias Brugger <[email protected]>
Watchdog timeout comes in before we are able to load the
kernel and reset the watchdog. Disable the watchdog late in the
boot
process to be able to boot the board.
Can't you change the WDT reset timeout instead to a higher value?
I tried that, but the HW has a max timeout of 15984 ms.
Unfortunately that's not
enough.
Nearly 16 seconds is not enough to boot into Linux so that the Linux
watchdog daemon can take control?
Exactly. I'm using a standard distro image. I think the main problem
is, that it
needs 14 seconds for the EFI stub to actually boot the kernel.
I've not much experience (yet) with the "EFI stub". But if it takes
this
long, wouldn't it make sense that this stub also supports the WDT?
efi_timer_check() calls WATCHDOG_RESET() trying to avoid that the
hardware watchdog is triggered.
So efi_timer_check() is called quite frequently and should be enough
to reset the U-Boot WDT while residing in EFI? Not sure, why the reset
occurs in Matthias's case then.
There is a software watchdog
defaulting to 5 minutes in efi_watchdog.c which can be modified
via the EFI API.
Is there a U-Boot API to disable the hardware watchdog?
Yes:
/*
* Stop the timer, thus disabling the Watchdog. Use wdt_start to start
it again.
*
* @dev: WDT Device
* @return: 0 if OK, -ve on error
*/
int wdt_stop(struct udevice *dev);
Thanks,
Stefan
Best regards
Heinrich
Thanks,
Stefan
I've already the
watchdog timer as build-in (which is not the best to do, taking into
account
that we don't want to bloat our distro kernel with random board
specific drivers
build-in. If we I had the watchdog driver as kernel module it would
take forever
to get that loaded.
You can find a serial log with timestamp from the moment U-Boot got
loaded until
the kernel actually boots here:
https://paste.opensuse.org/98390849
Regards,
Matthias
Thanks,
Stefan
Regards,
Matthias
Thanks,
Stefan
Signed-off-by: Matthias Brugger <[email protected]>
---
board/mediatek/mt7623/mt7623_rfb.c | 8 ++++++++
configs/mt7623n_bpir2_defconfig | 1 +
2 files changed, 9 insertions(+)
diff --git a/board/mediatek/mt7623/mt7623_rfb.c
b/board/mediatek/mt7623/mt7623_rfb.c
index 984e75ccaf..22120be412 100644
--- a/board/mediatek/mt7623/mt7623_rfb.c
+++ b/board/mediatek/mt7623/mt7623_rfb.c
@@ -5,6 +5,7 @@
#include <common.h>
#include <mmc.h>
+#include <watchdog.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -40,3 +41,10 @@ int mmc_get_env_dev(void)
return mmc_get_boot_dev();
}
#endif
+
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+ wdt_stop(gd->watchdog_dev);
+}
+#endif
diff --git a/configs/mt7623n_bpir2_defconfig
b/configs/mt7623n_bpir2_defconfig
index 9177c17dff..fe0b6259dd 100644
--- a/configs/mt7623n_bpir2_defconfig
+++ b/configs/mt7623n_bpir2_defconfig
@@ -14,6 +14,7 @@ CONFIG_FIT_VERBOSE=y
CONFIG_BOOTDELAY=3
CONFIG_SYS_CONSOLE_IS_IN_ENV=y
CONFIG_DEFAULT_FDT_FILE="mt7623n-bananapi-bpi-r2.dtb"
+CONFIG_BOARD_LATE_INIT=y
# CONFIG_DISPLAY_BOARDINFO is not set
CONFIG_SYS_PROMPT="U-Boot> "
CONFIG_CMD_BOOTMENU=y
Viele Grüße,
Stefan
Viele Grüße,
Stefan
Viele Grüße,
Stefan
Viele Grüße,
Stefan
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-51 Fax: (+49)-8142-66989-80 Email: [email protected]