[PATCH] board: mediatek: disable watchdog on BananaPi R2

classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

[PATCH] board: mediatek: disable watchdog on BananaPi R2

matthias.bgg
From: Matthias Brugger <[hidden email]>

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.

Signed-off-by: Matthias Brugger <[hidden email]>

---

 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
--
2.29.2

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Stefan Roese
On 07.01.21 16:36, [hidden email] wrote:
> From: Matthias Brugger <[hidden email]>
>
> 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?

Thanks,
Stefan

> Signed-off-by: Matthias Brugger <[hidden email]>
>
> ---
>
>   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

--
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: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Matthias Brugger-2


On 08/01/2021 08:39, Stefan Roese wrote:
> On 07.01.21 16:36, [hidden email] wrote:
>> From: Matthias Brugger <[hidden email]>
>>
>> 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.

Regards,
Matthias

> Thanks,
> Stefan
>
>> Signed-off-by: Matthias Brugger <[hidden email]>
>>
>> ---
>>
>>   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
>

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Stefan Roese
On 09.01.21 03:32, Matthias Brugger wrote:

> On 08/01/2021 08:39, Stefan Roese wrote:
>> On 07.01.21 16:36, [hidden email] wrote:
>>> From: Matthias Brugger <[hidden email]>
>>>
>>> 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?

Thanks,
Stefan

> Regards,
> Matthias
>
>> Thanks,
>> Stefan
>>
>>> Signed-off-by: Matthias Brugger <[hidden email]>
>>>
>>> ---
>>>
>>>    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

--
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: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Matthias Brugger-2


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, [hidden email] wrote:
>>>> From: Matthias Brugger <[hidden email]>
>>>>
>>>> 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 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 <[hidden email]>
>>>>
>>>> ---
>>>>
>>>>    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
>

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Matthias Brugger-2
On 10/01/2021 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, [hidden email] wrote:
>>>>> From: Matthias Brugger <[hidden email]>
>>>>>
>>>>> 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 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.

I just checked and "forever" was a bit of a overstatement. Kernel modules get
loaded after around 2 seconds into kernel booting. But adding this to the 14
seconds the EFI stub needs we already got reset by the watchdog.

Regards,
Matthias

>
> 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 <[hidden email]>
>>>>>
>>>>> ---
>>>>>
>>>>>    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
>>

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Stefan Roese
In reply to this post by Matthias Brugger-2
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, [hidden email] wrote:
>>>>> From: Matthias Brugger <[hidden email]>
>>>>>
>>>>> 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?

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 <[hidden email]>
>>>>>
>>>>> ---
>>>>>
>>>>>     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

--
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: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Heinrich Schuchardt
Am 11. Januar 2021 08:02:12 MEZ schrieb Stefan Roese <[hidden email]>:

>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, [hidden email] wrote:
>>>>>> From: Matthias Brugger <[hidden email]>
>>>>>>
>>>>>> 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. 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?

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 <[hidden email]>
>>>>>>
>>>>>> ---
>>>>>>
>>>>>>     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

Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Stefan Roese


On 11.01.21 08:17, Heinrich Schuchardt wrote:

> Am 11. Januar 2021 08:02:12 MEZ schrieb Stefan Roese <[hidden email]>:
>> 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, [hidden email] wrote:
>>>>>>> From: Matthias Brugger <[hidden email]>
>>>>>>>
>>>>>>> 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 <[hidden email]>
>>>>>>>
>>>>>>> ---
>>>>>>>
>>>>>>>      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: [hidden email]
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Heinrich Schuchardt
On 11.01.21 08:48, Stefan Roese wrote:

>
>
> On 11.01.21 08:17, Heinrich Schuchardt wrote:
>> Am 11. Januar 2021 08:02:12 MEZ schrieb Stefan Roese <[hidden email]>:
>>> 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, [hidden email] wrote:
>>>>>>>> From: Matthias Brugger <[hidden email]>
>>>>>>>>
>>>>>>>> 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.

Hello Matthias,

I observed that on some recent version Linux before 5.10 booting seemed
to be delayed by dozens of seconds on many boards. On which Linux
version did you see the problem?

>>>
>>> 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.

efi_timer_check() is only invoked, if the UEFI API is invoked.
Especially if the problem occurs after ExitBootServices() it is not
called anymore.

>
>> 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);

It would be interesting to understand if your problem occurs before or
after efi_exit_boot_services() is called. You could you add printf()
statements after EFI_ENTRY() and before EFI_EXIT() to see if it is reached.

Could you further, please, test if adding wdt_stop() to the start of
do_bootefi() in cmd/bootefi.c solves your problem.

Best regards

Heinrich

>
> 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 <[hidden email]>
>>>>>>>>
>>>>>>>> ---
>>>>>>>>
>>>>>>>>      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
>

Reply | Threaded
Open this post in threaded view
|

Aw: Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Frank Wunderlich-2

> Gesendet: Montag, 11. Januar 2021 um 09:57 Uhr
> Von: "Heinrich Schuchardt" <[hidden email]>

> I observed that on some recent version Linux before 5.10 booting seemed
> to be delayed by dozens of seconds on many boards. On which Linux
> version did you see the problem?
>
> >>>
> >>> 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.

Matthias could you check if/when/how often efi_timer_check is called in you bootprocess?

> efi_timer_check() is only invoked, if the UEFI API is invoked.
> Especially if the problem occurs after ExitBootServices() it is not
> called anymore.
>
> >
> >> There is a software watchdog
> >> defaulting to 5 minutes in efi_watchdog.c which can be modified
> >> via the EFI API.

> It would be interesting to understand if your problem occurs before or
> after efi_exit_boot_services() is called. You could you add printf()
> statements after EFI_ENTRY() and before EFI_EXIT() to see if it is reached.
>
> Could you further, please, test if adding wdt_stop() to the start of
> do_bootefi() in cmd/bootefi.c solves your problem.

should efi_timer_check not be called there to reset WDT-timer a last time to leave the
maximum time for booting linux kernel? maybe a wdt_stop is not neccessary anymore then

regards Frank
Reply | Threaded
Open this post in threaded view
|

Re: Aw: Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Heinrich Schuchardt
On 11.01.21 11:24, Frank Wunderlich wrote:

>
>> Gesendet: Montag, 11. Januar 2021 um 09:57 Uhr
>> Von: "Heinrich Schuchardt" <[hidden email]>
>
>> I observed that on some recent version Linux before 5.10 booting seemed
>> to be delayed by dozens of seconds on many boards. On which Linux
>> version did you see the problem?
>>
>>>>>
>>>>> 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.
>
> Matthias could you check if/when/how often efi_timer_check is called in you bootprocess?
>
>> efi_timer_check() is only invoked, if the UEFI API is invoked.
>> Especially if the problem occurs after ExitBootServices() it is not
>> called anymore.
>>
>>>
>>>> There is a software watchdog
>>>> defaulting to 5 minutes in efi_watchdog.c which can be modified
>>>> via the EFI API.
>
>> It would be interesting to understand if your problem occurs before or
>> after efi_exit_boot_services() is called. You could you add printf()
>> statements after EFI_ENTRY() and before EFI_EXIT() to see if it is reached.
>>
>> Could you further, please, test if adding wdt_stop() to the start of
>> do_bootefi() in cmd/bootefi.c solves your problem.
>
> should efi_timer_check not be called there to reset WDT-timer a last time to leave the
> maximum time for booting linux kernel? maybe a wdt_stop is not neccessary anymore then

WATCHDOG_RESET() is already the last call in efi_exit_boot_services().

Best regards

Heinrich
Reply | Threaded
Open this post in threaded view
|

Re: [PATCH] board: mediatek: disable watchdog on BananaPi R2

Matthias Brugger-2
In reply to this post by Heinrich Schuchardt


On 11/01/2021 09:57, Heinrich Schuchardt wrote:

> On 11.01.21 08:48, Stefan Roese wrote:
>>
>>
>> On 11.01.21 08:17, Heinrich Schuchardt wrote:
>>> Am 11. Januar 2021 08:02:12 MEZ schrieb Stefan Roese <[hidden email]>:
>>>> 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, [hidden email] wrote:
>>>>>>>>> From: Matthias Brugger <[hidden email]>
>>>>>>>>>
>>>>>>>>> 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.
>
> Hello Matthias,

Hi Heinrich :)

>
> I observed that on some recent version Linux before 5.10 booting seemed
> to be delayed by dozens of seconds on many boards. On which Linux
> version did you see the problem?
>

I think it started on 5.9 or 5.10. Right now I'm seeing it with 5.10 and 5.11-rc2.

>>>>
>>>> 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.
>
> efi_timer_check() is only invoked, if the UEFI API is invoked.
> Especially if the problem occurs after ExitBootServices() it is not
> called anymore.
>
>>
>>> 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);
>
> It would be interesting to understand if your problem occurs before or
> after efi_exit_boot_services() is called. You could you add printf()
> statements after EFI_ENTRY() and before EFI_EXIT() to see if it is reached.
>

It happens after EFI_EXIT():
[2021-01-11 14:06:04.621] EFI stub: Booting Linux Kernel...
[2021-01-11 14:06:04.624] EFI stub: Using DTB from configuration table
[2021-01-11 14:06:04.628] EFI stub: Exiting boot services and installing virtual
address map...
[2021-01-11 14:06:04.637] efi_exit_boot_services EFI_ENTRY
[2021-01-11 14:06:04.641] efi_exit_boot_services EFI_EXIT
[2021-01-11 14:06:20.972]
[2021-01-11 14:06:20.973] [USBD] USB PRB0 LineState: 40

So reboot after around 16 seconds.

> Could you further, please, test if adding wdt_stop() to the start of
> do_bootefi() in cmd/bootefi.c solves your problem.

Yes, that works. Do you want me to disable watchdog for all EFI boot cases?

Regards,
Matthias

>
> Best regards
>
> Heinrich
>
>>
>> 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 <[hidden email]>
>>>>>>>>>
>>>>>>>>> ---
>>>>>>>>>
>>>>>>>>>      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
>>
>