Skip to contentSkip to conversation

it87_wdt: Work around non-working CIR interrupts

PATCH In review Marc van der Wal 3 participants 3 messages Mar 6, 2014 – Mar 15, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 it87_wdt: Work around non-working CIR interrupts

From: Marc van der Wal <[email protected]>

On some hardware platforms, the it87_wdt watchdog resets the machine despite the watchdog daemon running and writing to /dev/watchdog.

This is due to Consumer IR buffer underrun interrupts being used as triggers to reset the timer. On some buggy hardware implementations such as the iEi AFL-12A-N270 single-board computer, this method does not work.

However, resetting the timer by writing its original timeout value in its configuration register over and over again suppresses the unwanted reboots.

Add a module option (nocir), 0 by default in order not to break existing setups. Setting it to 1 enables the workaround.

Fixes bug #42801 <https://bugzilla.kernel.org/show_bug.cgi?id=42801>.
Tested primarily on Linux 3.5.7, applies cleanly on Linux 3.13.5.

---

Documentation/watchdog/watchdog-parameters.txt +2 -0
diff -rupN -X linux-3.13.5.orig/Documentation/dontdiff linux-3.13.5.orig/Documentation/watchdog/watchdog-parameters.txt linux-3.13.5/Documentation/watchdog/watchdog-parameters.txt
@@ -150,6 +150,8 @@ nowayout: Disable watchdog shutdown on c
 -------------------------------------------------
 it87_wdt:
 nogameport: Forbid the activation of game port, default=0
+nocir: Forbid the use of CIR (workaround for some buggy setups); set to 1 if
+system resets despite watchdog daemon running, default=0
 exclusive: Watchdog exclusive device open, default=1
 timeout: Watchdog timeout in seconds, default=60
 testmode: Watchdog test mode (1 = no reboot), default=0
drivers/watchdog/it87_wdt.c +31 -10

121 lines not on this page · raw message

maintainer Reviewed-by on v1 1/1
#1 lore raw
Quoted 14 lines · Marc van der Wal

From: Marc van der Wal <[email protected]>

On some hardware platforms, the it87_wdt watchdog resets the machine despite the watchdog daemon running and writing to /dev/watchdog.

This is due to Consumer IR buffer underrun interrupts being used as triggers to reset the timer. On some buggy hardware implementations such as the iEi AFL-12A-N270 single-board computer, this method does not work.

However, resetting the timer by writing its original timeout value in its configuration register over and over again suppresses the unwanted reboots.

Quoted 7 lines

Add a module option (nocir), 0 by default in order not to break existing setups. Setting it to 1 enables the workaround.

Fixes bug #42801 <https://bugzilla.kernel.org/show_bug.cgi?id=42801>.
Tested primarily on Linux 3.5.7, applies cleanly on Linux 3.13.5.

#2 lore raw
In reply to Marc van der Wal

Hi Marc,

Quoted 14 lines

From: Marc van der Wal <[email protected]>

On some hardware platforms, the it87_wdt watchdog resets the machine despite the watchdog daemon running and writing to /dev/watchdog.

This is due to Consumer IR buffer underrun interrupts being used as triggers to reset the timer. On some buggy hardware implementations such as the iEi AFL-12A-N270 single-board computer, this method does not work.

However, resetting the timer by writing its original timeout value in its configuration register over and over again suppresses the unwanted reboots.

Quoted 8 lines

Add a module option (nocir), 0 by default in order not to break existing setups. Setting it to 1 enables the workaround.

Fixes bug #42801 <https://bugzilla.kernel.org/show_bug.cgi?id=42801>.
Tested primarily on Linux 3.5.7, applies cleanly on Linux 3.13.5.

---

Patch has been added to linux-watchdog-next.

Kind regards,
Wim.