Re: [RFC] Pass reset reason to Linux via FDT
Simon Glass <[email protected]> Sun, 17 May 2026 16:53:00 -0600
| Newsgroups | org.kernel.vger.devicetree-spec |
|---|---|
| Message-ID | <CAFLszTikS-QjMidEtZTcjG_t4YB_3m9aXpsRutvt6WbLyw8Lsg@mail.gmail.com> |
Hi, On Wed, 13 May 2026 at 02:57, Sverdlin, Alexander <[email protected]> wrote: > > Hi Quentin, > > On Tue, 2026-05-12 at 17:29 +0200, Quentin Schulz wrote: > > > I would like to receive your opinion on the new /chosen/reset-reason property > > > I would like to introduce in the spec and consequently in the U-Boot. > > > > > > I've posted an U-Boot patchset [1] with the proposed implementation which > > > would work on TI K3 SoCs initially. > > > > > > - Do you think I need to send a formal patch to device tree spec? > > > > We (U-Boot) are not merging new Device Tree nodes or properties without > > them being accepted in either the spec or in Linux kernel Device Tree > > bindings, so it's not that we think you need to send a formal patch, is > > that you must and it needs to be merged before we can use it. > > > > Yes, this can take months and be cumbersome but Device Tree is supposed > > to represent the HW and be system-agnostic so we should make sure all > > bootloaders or OSes understand and fill the Device Tree as intended. > > > > > - Do you think /chosen/reset-reason is the proper location for the SoC/platform > > > agnostic reset cause information? > > > > /chosen is likely the right place considering /chosen/bootsource which > > is also added by the bootloader. > > > > > - Do you think having an opaque string there is OK, bearing in mind that there > > > > No. > > > > > is no standard approach up to now to this topic, neither in Linux nor in > > > U-Boot, taking into account different SoCs and vendors provide very different > > > > In Barebox there is a way though. Strings are bad, and even more so if > > they are free-form as vendors will either be very inventive and there > > can also be typos. > > > > > information regarding reset cause, which is barely possible to unify? > > > > > > > I think you want to have a read of common/oftree.c in Barebox, > > specifically the /chosen/reset-source-device, /chosen/reset-source, > > /chosen/reset-source-instance properties as well as > > common/reset_source.c where they also read /chosen/reset-source-priority. > > thanks for the reference! Barebox implementation looks nice, populates exactly > /chosen/reset-source with a string and covers most of the reset sources with their > - unknown > - POR > - RST > - WDG > - WKE > - JTAG > - THERM > - EXT > - BROWNOUT I am not a fan of capital letters and abbreviations in device-tree properties. I think we should have cold warm watchdog wakeup jtag thermal external brownout > > but TI K3 has also > - ESM (Error Signalling Module) > - DMSC (how U-Boot calls it now, I suppose Device Management something) or SMS (Security Management Subsystem, how TRM names it) > > and i.MX9 brings some > - *LOCKUP (secure core's lockup) > - [unhandled] exception (on a secure core) > - FCCU (Fault Collection and Control Unit, similar to TI's ESM?) > - ELE (EdgeLock Enclave) > - BBM (Battery-Backed Module) > > If we do not want to intentionally lose this information, how can we accommodate > for the above and future development in the device tree bindings? You can add more options to the binding as needed. > > > There are multiple issues with the suggested implementation here. How do > > we handle a device with multiple IPs possibly triggering the same kind > > of reset? E.g. there can be a CPU watchdog but also a PMIC watchdog. The > > difference is really important as on some system, you need to reset the > > PMIC so the power-rails are reset and in the expected state. > > Obviously it will not be possible to satisfy the most sophisticated requirements > with just one implementation. But as usual, we probably could cover 80% of > use cases with 20% of effort. I would expect 'watchdog' to mean SoC watchdog. If we need to specify a PMIC watchdog we could perhaps add a 'reset-source' property? But as Quentin mentions, we should get the bindings in first. > > > What about an SoC with multiple watchdogs (Rockchip SoCs have many > > different sources for triggering the watchdog)? > > Probably Barebox implementation has an answer for this providing their > /chosen/reset-source-instance and /chosen/reset-source-device (as a full > DT node name), but implementing /chosen/reset-source neither strictly > requires to implement reset-source-instance or reset-source-device now, > nor does it block them from being implemented later. > > > Considering Barebox has had support for this for a very long time, I'm > > sure they have some opinions on what to do and what not to do :) > > > > Cheers, > > Quentin > > > > > The proposed change would look like following: > > > > > > diff --git a/dtschema/schemas/chosen.yaml b/dtschema/schemas/chosen.yaml > > > index 63f3c12..d908426 100644 > > > --- a/dtschema/schemas/chosen.yaml > > > +++ b/dtschema/schemas/chosen.yaml > > > @@ -183,6 +183,20 @@ properties: > > > will assign devices in its usual manner, otherwise it will not try to > > > assign devices and instead use them as they are configured already. > > > > > > + reset-reason: > > > + $ref: types.yaml#/definitions/string > > > + description: > > > + This property is set by the bootloader to indicate the reason for the > > > + most recent system reset, e.g. "POR" (power-on reset), "WDOG" (watchdog), > > > + "PIN" (external reset pin), "RST" (software warm reset), "THERMAL", etc. > > > + The set of possible values is platform-specific. > > > + > > > + / { > > > + chosen { > > > + reset-reason = "WDOG"; > > > + }; > > > + }; > > > + > > > smbios3-entrypoint: > > > $ref: types.yaml#/definitions/address > > > maxItems: 1 > > > > > > [1] https://www.mail-archive.com/[email protected]/msg573811.html > > > > Regards, Simon