* [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2
@ 2026-09-07 9:14 Mateusz Nowicki
2026-09-08 8:52 ` [Linux-stm32] [PATCH] arm64: dts: st: fix arm, smc-id " Antonio Borneo
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Mateusz Nowicki @ 2026-09-07 9:14 UTC (permalink / raw)
To: alexandre.torgue, mcoquelin.stm32
Cc: robh, krzk+dt, conor+dt, lionel.debieve, amelie.delaunay,
patrice.chotard, devicetree, linux-stm32, linux-arm-kernel,
linux-kernel
OP-TEE implements the STM32MP2 watchdog SMC service with function ID
0xbc000000 (CFG_WDT_SM_HANDLER_ID), not 0xb200005a. With the current
value the arm_smc_wdt probe fails with -EIO and the IWDG started by the
bootloader is never refreshed.
Fixes: 89fca38168c9 ("arm64: dts: st: add arm-wdt node for watchdog support on stm32mp251")
Fixes: e9b03ef21386 ("arm64: dts: st: introduce stm32mp23 SoCs family")
Signed-off-by: Mateusz Nowicki <mateusz.nowicki@posteo.net>
---
arch/arm64/boot/dts/st/stm32mp231.dtsi | 2 +-
arch/arm64/boot/dts/st/stm32mp251.dtsi | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/boot/dts/st/stm32mp231.dtsi b/arch/arm64/boot/dts/st/stm32mp231.dtsi
index 9e1d240888ff..35e247af957c 100644
--- a/arch/arm64/boot/dts/st/stm32mp231.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp231.dtsi
@@ -35,7 +35,7 @@ arm-pmu {
arm_wdt: watchdog {
compatible = "arm,smc-wdt";
- arm,smc-id = <0xb200005a>;
+ arm,smc-id = <0xbc000000>;
status = "disabled";
};
diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/st/stm32mp251.dtsi
index 9c63fdb5a885..2dcbba65e298 100644
--- a/arch/arm64/boot/dts/st/stm32mp251.dtsi
+++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi
@@ -36,7 +36,7 @@ arm-pmu {
arm_wdt: watchdog {
compatible = "arm,smc-wdt";
- arm,smc-id = <0xb200005a>;
+ arm,smc-id = <0xbc000000>;
status = "disabled";
};
--
2.55.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Linux-stm32] [PATCH] arm64: dts: st: fix arm, smc-id of the SMC watchdog on stm32mp2
2026-09-07 9:14 [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2 Mateusz Nowicki
@ 2026-09-08 8:52 ` Antonio Borneo
2026-09-23 11:52 ` [PATCH] arm64: dts: st: fix arm,smc-id " Mateusz Nowicki
2026-09-28 8:45 ` Alexandre TORGUE
2 siblings, 0 replies; 6+ messages in thread
From: Antonio Borneo @ 2026-09-08 8:52 UTC (permalink / raw)
To: Mateusz Nowicki, alexandre.torgue, mcoquelin.stm32
Cc: robh, conor+dt, devicetree, linux-stm32, linux-kernel, krzk+dt,
linux-arm-kernel
On Mon, 2026-09-07 at 09:14 +0000, Mateusz Nowicki wrote:
> OP-TEE implements the STM32MP2 watchdog SMC service with function ID
> 0xbc000000 (CFG_WDT_SM_HANDLER_ID), not 0xb200005a. With the current
> value the arm_smc_wdt probe fails with -EIO and the IWDG started by the
> bootloader is never refreshed.
>
> Fixes: 89fca38168c9 ("arm64: dts: st: add arm-wdt node for watchdog support on stm32mp251")
> Fixes: e9b03ef21386 ("arm64: dts: st: introduce stm32mp23 SoCs family")
> Signed-off-by: Mateusz Nowicki <mateusz.nowicki@posteo.net>
Reviewed-by: Antonio Borneo <antonio.borneo@foss.st.com>
Thanks,
Antonio
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2
2026-09-07 9:14 [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2 Mateusz Nowicki
2026-09-08 8:52 ` [Linux-stm32] [PATCH] arm64: dts: st: fix arm, smc-id " Antonio Borneo
@ 2026-09-23 11:52 ` Mateusz Nowicki
2026-09-28 8:45 ` Alexandre TORGUE
2 siblings, 0 replies; 6+ messages in thread
From: Mateusz Nowicki @ 2026-09-23 11:52 UTC (permalink / raw)
To: alexandre.torgue, mcoquelin.stm32
Cc: antonio.borneo, robh, krzk+dt, conor+dt, lionel.debieve,
amelie.delaunay, patrice.chotard, devicetree, linux-stm32,
linux-arm-kernel, linux-kernel
Hi Alexandre,
Gentle ping on this fix, Antonio gave his Reviewed-by on Sep 8.
On current stm32-next the SMC watchdog still fails to probe on the
STM32MP257F-DK:
arm_smc_wdt watchdog: probe with driver arm_smc_wdt failed with error -5
Could you take it for v7.4?
Thanks,
Mateusz
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2
2026-09-07 9:14 [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2 Mateusz Nowicki
2026-09-08 8:52 ` [Linux-stm32] [PATCH] arm64: dts: st: fix arm, smc-id " Antonio Borneo
2026-09-23 11:52 ` [PATCH] arm64: dts: st: fix arm,smc-id " Mateusz Nowicki
@ 2026-09-28 8:45 ` Alexandre TORGUE
2026-10-31 5:59 ` Marek Vasut
2 siblings, 1 reply; 6+ messages in thread
From: Alexandre TORGUE @ 2026-09-28 8:45 UTC (permalink / raw)
To: Mateusz Nowicki, mcoquelin.stm32
Cc: robh, krzk+dt, conor+dt, lionel.debieve, amelie.delaunay,
patrice.chotard, devicetree, linux-stm32, linux-arm-kernel,
linux-kernel
Hi Mateusz
On 9/7/26 11:14, Mateusz Nowicki wrote:
> OP-TEE implements the STM32MP2 watchdog SMC service with function ID
> 0xbc000000 (CFG_WDT_SM_HANDLER_ID), not 0xb200005a. With the current
> value the arm_smc_wdt probe fails with -EIO and the IWDG started by the
> bootloader is never refreshed.
>
> Fixes: 89fca38168c9 ("arm64: dts: st: add arm-wdt node for watchdog support on stm32mp251")
> Fixes: e9b03ef21386 ("arm64: dts: st: introduce stm32mp23 SoCs family")
> Signed-off-by: Mateusz Nowicki <mateusz.nowicki@posteo.net>
> ---
> arch/arm64/boot/dts/st/stm32mp231.dtsi | 2 +-
> arch/arm64/boot/dts/st/stm32mp251.dtsi | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/boot/dts/st/stm32mp231.dtsi b/arch/arm64/boot/dts/st/stm32mp231.dtsi
> index 9e1d240888ff..35e247af957c 100644
> --- a/arch/arm64/boot/dts/st/stm32mp231.dtsi
> +++ b/arch/arm64/boot/dts/st/stm32mp231.dtsi
> @@ -35,7 +35,7 @@ arm-pmu {
>
> arm_wdt: watchdog {
> compatible = "arm,smc-wdt";
> - arm,smc-id = <0xb200005a>;
> + arm,smc-id = <0xbc000000>;
> status = "disabled";
> };
>
> diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/dts/st/stm32mp251.dtsi
> index 9c63fdb5a885..2dcbba65e298 100644
> --- a/arch/arm64/boot/dts/st/stm32mp251.dtsi
> +++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi
> @@ -36,7 +36,7 @@ arm-pmu {
>
> arm_wdt: watchdog {
> compatible = "arm,smc-wdt";
> - arm,smc-id = <0xb200005a>;
> + arm,smc-id = <0xbc000000>;
> status = "disabled";
> };
>
Applied on stm32-next.
Thanks
Alex
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2
2026-09-28 8:45 ` Alexandre TORGUE
@ 2026-10-31 5:59 ` Marek Vasut
2026-10-31 8:45 ` Arnd Bergmann
0 siblings, 1 reply; 6+ messages in thread
From: Marek Vasut @ 2026-10-31 5:59 UTC (permalink / raw)
To: Alexandre TORGUE, Mateusz Nowicki, mcoquelin.stm32, Thomas BOURGOIN
Cc: robh, krzk+dt, conor+dt, lionel.debieve, amelie.delaunay,
patrice.chotard, devicetree, linux-stm32, linux-arm-kernel,
linux-kernel, kernel, Geert Uytterhoeven, Laurent Pinchart,
Fabrice Gasnier, Stefano Babic, Etienne Carriere, Arnd Bergmann
On 9/28/26 10:45 AM, Alexandre TORGUE wrote:
Hello all,
> On 9/7/26 11:14, Mateusz Nowicki wrote:
>> OP-TEE implements the STM32MP2 watchdog SMC service with function ID
>> 0xbc000000 (CFG_WDT_SM_HANDLER_ID), not 0xb200005a. With the current
>> value the arm_smc_wdt probe fails with -EIO and the IWDG started by the
>> bootloader is never refreshed.
>>
>> Fixes: 89fca38168c9 ("arm64: dts: st: add arm-wdt node for watchdog
>> support on stm32mp251")
>> Fixes: e9b03ef21386 ("arm64: dts: st: introduce stm32mp23 SoCs family")
>> Signed-off-by: Mateusz Nowicki <mateusz.nowicki@posteo.net>
>> ---
>> arch/arm64/boot/dts/st/stm32mp231.dtsi | 2 +-
>> arch/arm64/boot/dts/st/stm32mp251.dtsi | 2 +-
>> 2 files changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/st/stm32mp231.dtsi b/arch/arm64/boot/
>> dts/st/stm32mp231.dtsi
>> index 9e1d240888ff..35e247af957c 100644
>> --- a/arch/arm64/boot/dts/st/stm32mp231.dtsi
>> +++ b/arch/arm64/boot/dts/st/stm32mp231.dtsi
>> @@ -35,7 +35,7 @@ arm-pmu {
>> arm_wdt: watchdog {
>> compatible = "arm,smc-wdt";
>> - arm,smc-id = <0xb200005a>;
>> + arm,smc-id = <0xbc000000>;
>> status = "disabled";
>> };
>> diff --git a/arch/arm64/boot/dts/st/stm32mp251.dtsi b/arch/arm64/boot/
>> dts/st/stm32mp251.dtsi
>> index 9c63fdb5a885..2dcbba65e298 100644
>> --- a/arch/arm64/boot/dts/st/stm32mp251.dtsi
>> +++ b/arch/arm64/boot/dts/st/stm32mp251.dtsi
>> @@ -36,7 +36,7 @@ arm-pmu {
>> arm_wdt: watchdog {
>> compatible = "arm,smc-wdt";
>> - arm,smc-id = <0xb200005a>;
>> + arm,smc-id = <0xbc000000>;
>> status = "disabled";
>> };
>
> Applied on stm32-next.
Since this change, my STM32MP255C board started rebooting after 32
seconds. It turns out, this is caused by an ABI break.
Here is the thing -- old ST downstream fork of OP-TEE OS did expect ARM
SMC WDT ID 0xb200005a (that was the ST ecosystem v5), the OP-TEE OS
4.0.0 fork seems to have handled both, and the new 4.8.0 fork expects
0xbc000000 ID only and does not handle 0xb200005a .
At this point, with Linux 6.18 the kernel is trying to trigger the WDT
using SMC ID 0xb200005a , which on my machine works (older OP-TEE OS).
When I boot linux-next , it is using ID 0xbc000000 and my system reboots
after 32 seconds. (not even mainline Linux versions are consistent here
now, sigh)
I actually found this behavior the other way around -- while forward
porting a system to the new OP-TEE OS 4.8.0 port, which I installed,
then booted Linux 6.18.y, machine started rebooting (SMC ID mismatch,
new OP-TEE expects 0xbc000000 and linux-stable sends 0xb200005a), so I
booted recovery, and ... recovery is also Linux 6.18.y, so I could not
recover the machine that way anymore.
Currently, I added [1] to OP-TEE OS as a mitigation of this ABI break,
but I don't think everyone can still update their bootloader stack in
this way. And with this patch in place (and inconsistency between Linux
stable 6.18.y and upcoming 7.4.y) the ABI break will cause some serious
mess.
How shall we deal with this ?
Thank you for your help !
[1]
https://github.com/STMicroelectronics/optee_os/commit/8450f25923c0c98465decc975f25efed19f82ba0
--
Best regards,
Marek Vasut
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2
2026-10-31 5:59 ` Marek Vasut
@ 2026-10-31 8:45 ` Arnd Bergmann
0 siblings, 0 replies; 6+ messages in thread
From: Arnd Bergmann @ 2026-10-31 8:45 UTC (permalink / raw)
To: Marek Vasut, Alexandre Torgue, Mateusz Nowicki, Maxime Coquelin,
Thomas BOURGOIN
Cc: Rob Herring, krzk+dt, Conor Dooley, Lionel DEBIEVE,
Amelie DELAUNAY, Patrice Chotard, devicetree, linux-stm32,
linux-arm-kernel, linux-kernel, kernel, Geert Uytterhoeven,
laurent.pinchart, Fabrice GASNIER, Stefano Babic,
Etienne Carriere
On Sat, Oct 31, 2026, at 06:59, Marek Vasut wrote:
> On 9/28/26 10:45 AM, Alexandre TORGUE wrote:
>> On 9/7/26 11:14, Mateusz Nowicki wrote:
> At this point, with Linux 6.18 the kernel is trying to trigger the WDT
> using SMC ID 0xb200005a , which on my machine works (older OP-TEE OS).
> When I boot linux-next , it is using ID 0xbc000000 and my system reboots
> after 32 seconds. (not even mainline Linux versions are consistent here
> now, sigh)
>
> I actually found this behavior the other way around -- while forward
> porting a system to the new OP-TEE OS 4.8.0 port, which I installed,
> then booted Linux 6.18.y, machine started rebooting (SMC ID mismatch,
> new OP-TEE expects 0xbc000000 and linux-stable sends 0xb200005a), so I
> booted recovery, and ... recovery is also Linux 6.18.y, so I could not
> recover the machine that way anymore.
>
> Currently, I added [1] to OP-TEE OS as a mitigation of this ABI break,
> but I don't think everyone can still update their bootloader stack in
> this way. And with this patch in place (and inconsistency between Linux
> stable 6.18.y and upcoming 7.4.y) the ABI break will cause some serious
> mess.
>
> How shall we deal with this ?
I think for the kernel it's pretty clear, we have to revert it
to avoid the regression on old firmware, at least for boards
that have ever shipped with that version. I count eight boards
for stm32mp2 in upstream Linux, do we know how many of them
are affected by the ABI break?
Newer boards can override this if they always supported the
new ABI.
For the firmware change, I can see multiple ways forward, depending
on what the original reason for the change was:
- (obviously) revert to accepting both values forever on boards
that ever had the old ABI in the past.
- For boards that can have either firmware, use separate dtb
files that match whatever the firmware is. This only makes
sense if the firmware is fundamentally incompatible for
reasons other than this constant. I think we did this for
firmware with and without op-tee.
- Add a workaround in u-boot to patch the dtb at boot time to
match whatever op-tee version is being used. This would be
the cleanest but requires extra work.
Arnd
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-10-31 8:46 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-07 9:14 [PATCH] arm64: dts: st: fix arm,smc-id of the SMC watchdog on stm32mp2 Mateusz Nowicki
2026-09-08 8:52 ` [Linux-stm32] [PATCH] arm64: dts: st: fix arm, smc-id " Antonio Borneo
2026-09-23 11:52 ` [PATCH] arm64: dts: st: fix arm,smc-id " Mateusz Nowicki
2026-09-28 8:45 ` Alexandre TORGUE
2026-10-31 5:59 ` Marek Vasut
2026-10-31 8:45 ` Arnd Bergmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®