Re: [PATCH] watchdog: take all OF aliases into account when assigning id
Guenter Roeck <[email protected]> Mon, 13 Jul 2026 08:48:10 -0700
| Newsgroups | org.kernel.vger.linux-watchdog,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
On 7/13/26 07:35, Rasmus Villemoes wrote: > On Wed, Jul 08 2026, "Guenter Roeck" <[email protected]> wrote: > >> On Mon, Jun 15, 2026 at 04:57:59PM +0200, Rasmus Villemoes wrote: >>> If some, but not all, watchdog devices have device tree aliases, those >>> without aliases might (depending on probe order) be assigned an id >>> which would otherwise be assigned to one of those with an alias. >>> >>> This is problematic when for example watchdog0 is an alias for an >>> always-running gpio watchdog that userspace must handle, but the SOC's >>> watchdog device(s) get probed first and thus one of those become >>> /dev/watchdog0. >>> >>> Ensure that ids for devices without a device tree alias are allocated >>> from above the highest numbered alias, if any. >>> >>> Signed-off-by: Rasmus Villemoes <[email protected]> >>> --- >>> >>> This is similar to how the mmc, i2c, i3c and spi subsystems handle >>> device tree aliases and avoid using an id that might be assigned to a >>> device/bus that is probed later. >> >> The patch makes sense. Unfortunately, there are systems with aliased >> watchdogs which do not enable "watchdog0" (e.g., several Nuvoton based >> boards). On such systems, if they do have an unaliased / auto-generated >> watchdog, /dev/watchdog0 and with it /dev/watchdog would no longer be >> created. This would result in a ABI break. >> >> On top of that, the patch only affects systems with both aliased and >> un-aliased watchdogs, which makes me even more concerned. > > Well, yes, the problem only occurs on exactly such systems. > > - If all enabled watchdog devices have DT aliases, they all get their > assigned id. > > - If no wathcdog device has a DT alias, they'll just get sequentially > assigned ids in probe order, and none of them will "accidentally" get an > id that should be assigned to a device with a DT alias. > >> To apply this or a similar patch, we would have to ensure that there >> is no enabled watchdog with ID == 0. > > I'm not sure I completely understand your concern(s), but I can see that > if there is any watchdog DT alias, we'll never use id 0 except if there > is a watchdog0 DT alias (and that device is actually enabled). > ... and if ID 0 is not used in that situaton, /dev/watchdog will not be created since it is tied to /dev/watchdog0. > What if instead of assigning dynamic ids from above the highest existing > alias, we assign a dynamic id as usual, but skip existing aliases? So if > there's a watchdog1 alias, but no watchdog0 alias, the first unaliased > watchdog device being probed would become /dev/watchdog0 and hence > /dev/watchdog. Would that work? > Yes, since that would not change existing behavior. Is this an problem that is actually observed on some system, or a theoretic one ? Thanks, Guenter