On Fri, Oct 18, 2024 at 4:09 AM Guenter Roeck <linux@xxxxxxxxxxxx> wrote: > > On 10/17/24 21:29, James Hilliard wrote: > > On Thu, Oct 17, 2024 at 9:59 PM Guenter Roeck <linux@xxxxxxxxxxxx> wrote: > >> > >> On 10/17/24 20:09, James Hilliard wrote: > >>> For the watchdog timer to work properly on the QCML04 board we need to > >>> set PWRGD enable in the Environment Controller Configuration Registers > >>> Special Configuration Register 1 when it is not already set, this may > >>> be the case when the watchdog is not enabled from within the BIOS. > >>> > >>> For the Qotom QGLK02 board the vendor indicates that the IT8786 > >>> watchdog hardware is not functional due to a conflict with the BIOS > >>> power-on function, with PWRGD set the watchdog will trigger but the > >>> board will poweroff rather than restart as expected. Disable the > >>> it87 driver on this broken hardware. > >>> > >> > >> This shouldn't be done in drivers, and it doesn't scale. The driver needs > >> to be disabled with the mechanism supported by the distribution, for example > >> in /etc/modprobe.d/blacklist-watchdog.conf, or by whatever other mechanism > >> the distribution supports for that purpose. > > > > There isn't really a good way that I've found with my setup since I use common > > images for both of these boards. I'm also worried that it's much easier to mess > > something critical like this up if user space is involved in hardware detection. > > > > Many other watchdog drivers do this sort of thing so I'm a bit confused why we > > would want to not do that here as well, for example: > > https://github.com/torvalds/linux/blob/v6.11/drivers/watchdog/renesas_wdt.c#L176-L207 > > https://github.com/torvalds/linux/blob/v6.11/drivers/watchdog/ebc-c384_wdt.c#L125 > > https://github.com/torvalds/linux/blob/v6.11/drivers/watchdog/lenovo_se10_wdt.c#L242-L285 > > https://github.com/torvalds/linux/blob/v6.11/drivers/watchdog/sbc_fitpc2_wdt.c#L203-L206 > > > > Those are specialty watchdog drivers, which only work on a very limited number of boards > to start with. For the most part they use DMI data to determine if the watchdog is supported > on a board, not to determine if a watchdog isn't supported. > > The it87 driver works on thousands of boards, and is not wired up on a substantial percentage > of them. In many cases, systems with ITE Super-IO chips have two Super-IO chips installed > (one of them typically being an IT8786), and only one of those (or none) will have the watchdog > wired up. Many boards with Intel CPUs use the iTCO watchdog and don't have the Super-IO > watchdog wired up at all. Trying to maintain a deny-list for all boards where the watchdog > isn't wired up would not scale. Hmm, so what would scale then? I mean obviously having every user manually configure watchdog drivers scales even worse than trying to maintain a deny-list as users are generally going to expect drivers to work properly without manual configuration. Maybe something like hid-quirks would work better here for matching the correct watchdog driver on systems where multiple watchdog drivers otherwise detect a watchdog as being present?: https://github.com/torvalds/linux/blob/v6.11/drivers/hid/hid-quirks.c > > Guenter >