1
linux/drivers/watchdog
Wim Van Sebroeck deb9197b70 watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing
Redhat Bugzilla: Bug 727875 - TCO_EN bit is disabled by TCO driver
Jiri Slaby: 28d41f53f broke temperature sensors on a ICH10 chipset

The iTCO_wdt driver disables the SMI. This breaks good working of newer hardware.
The disabling of the SMI by the TCO logic dates back from the i810-tco driver
from Nils Faerber (around 28 July 2000). The reason for this was that some BIOSes
install handlers reset or disable the watchdog timer instead of resetting the system.
The trick to fix this was to disable the SMI (by clearing the SMI_TCO_EN bit of the
SMI_EN register) to prevent this from happening.

This however has strange effects on newer hardware. So we are in a situation that
a fix for broken old hardware affects newer hardware.

The correct solution is to make this fix an option (with the new module parameter:
turn_SMI_watchdog_clear_off) so that the default behaviour is the unfixed version.

the next patch will be to move this in the start and stop functions of the driver
and to add a new module parameter for the global_smi_en bit and to get rid of the
vendor_support code.

This fix can have an effect on old (typical ICH & ICH2 chipsets) motherboards that
have a broken BIOS implementation concerning TCO logic. In these case the module
parameter turn_SMI_watchdog_clear_off=1 will need to be added.

Signed-off-by: Wim Van Sebroeck <wim@iguana.be>
2011-11-05 21:22:06 +01:00
..
acquirewdt.c Fix common misspellings 2011-03-31 11:26:23 -03:00
advantechwdt.c
adx_wdt.c
alim1535_wdt.c watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
alim7101_wdt.c watchdog: convert to DEFINE_PCI_DEVICE_TABLE 2011-03-15 16:02:22 +00:00
ar7_wdt.c
at32ap700x_wdt.c watchdog: update author email for at32ap700x_wdt 2011-06-28 20:01:25 +00:00
at91rm9200_wdt.c
at91sam9_wdt.c watchdog: at91sam9/wdt: move register header to drivers 2011-07-26 21:22:15 +00:00
at91sam9_wdt.h watchdog: at91sam9/wdt: move register header to drivers 2011-07-26 21:22:15 +00:00
ath79_wdt.c
bcm47xx_wdt.c bcm47xx: add support for bcma bus 2011-08-08 14:29:32 -04:00
bcm63xx_wdt.c treewide: Fix iomap resource size miscalculations 2011-04-10 17:01:04 +02:00
bfin_wdt.c watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
booke_wdt.c watchdog: booke_wdt: clean up status messages 2011-03-15 16:02:39 +00:00
coh901327_wdt.c watchdog: irq: Remove IRQF_DISABLED 2011-11-05 21:16:15 +01:00
cpu5wdt.c
cpwd.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog 2011-03-17 17:09:29 -07:00
davinci_wdt.c watchdog: Convert release_resource to release_region/release_mem_region 2011-03-29 11:05:48 +00:00
dw_wdt.c watchdog: add support for the Synopsys DesignWare WDT 2011-07-22 08:57:38 +00:00
ep93xx_wdt.c
eurotechwdt.c watchdog: irq: Remove IRQF_DISABLED 2011-11-05 21:16:15 +01:00
f71808e_wdt.c
gef_wdt.c watchdog: gef_wdt: fix MODULE_ALIAS 2011-06-28 07:43:00 +00:00
geodewdt.c
hpwdt.c x86, nmi, drivers: Fix nmi splitup build bug 2011-10-10 06:57:21 +02:00
i6300esb.c watchdog: convert to DEFINE_PCI_DEVICE_TABLE 2011-03-15 16:02:22 +00:00
ib700wdt.c
ibmasr.c
imx2_wdt.c watchdog: imx2_wdt: add device tree probe support 2011-07-26 21:19:16 +00:00
indydog.c
intel_scu_watchdog.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
intel_scu_watchdog.h watchdog: Intel SCU Watchdog Timer Driver for Moorestown and Medfield platforms. 2011-03-15 16:02:06 +00:00
iop_wdt.c
it87_wdt.c watchdog: Use "request_muxed_region" in it87 watchdog drivers 2011-07-22 08:55:23 +00:00
it8712f_wdt.c watchdog: it8712f_wdt.c: improve includes 2011-07-26 21:28:23 +00:00
iTCO_vendor_support.c
iTCO_vendor.h
iTCO_wdt.c watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing 2011-11-05 21:22:06 +01:00
ixp4xx_wdt.c
ixp2000_wdt.c
jz4740_wdt.c watchdog: jz4740_wdt - fix magic character checking 2011-03-15 16:01:57 +00:00
Kconfig um: switch to use of drivers/Kconfig 2011-11-02 14:15:41 +01:00
ks8695_wdt.c
lantiq_wdt.c watchdog: lantiq: fix watchdogs timeout handling 2011-09-20 14:28:24 +02:00
m54xx_wdt.c
machzwd.c watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
Makefile watchdog: WatchDog Timer Driver Core - Add basic framework 2011-07-28 08:01:04 +00:00
max63xx_wdt.c watchdog: Convert release_resource to release_region/release_mem_region 2011-03-29 11:05:48 +00:00
mixcomwd.c
mpc8xxx_wdt.c drivercore: revert addition of of_match to struct device 2011-05-18 12:32:23 -06:00
mpcore_wdt.c watchdog: irq: Remove IRQF_DISABLED 2011-11-05 21:16:15 +01:00
mtx-1_wdt.c watchdog: mtx1-wdt: use dev_{err,info} instead of printk() 2011-07-22 08:59:43 +00:00
mv64x60_wdt.c
nuc900_wdt.c
nv_tco.c watchdog: Fix POST failure on ASUS P5N32-E SLI and similar boards 2011-08-02 08:22:54 +00:00
nv_tco.h
octeon-wdt-main.c watchdog: Octeon: Mark octeon_wdt interrupt as IRQF_NO_THREAD 2011-11-05 21:15:38 +01:00
octeon-wdt-nmi.S
of_xilinx_wdt.c watchdog: Add Xilinx watchdog timer driver 2011-07-26 21:21:29 +00:00
omap_wdt.c Watchdog: omap_wdt: add fine grain runtime-pm 2011-03-10 22:40:05 -07:00
omap_wdt.h watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
orion_wdt.c
pc87413_wdt.c watchdog: pc87413_wdt: Cleanup pc87413 watchdog driver to use 2011-07-22 08:56:41 +00:00
pcwd_pci.c watchdog: convert to DEFINE_PCI_DEVICE_TABLE 2011-03-15 16:02:22 +00:00
pcwd_usb.c
pcwd.c
pika_wdt.c
pnx833x_wdt.c
pnx4008_wdt.c watchdog: Convert release_resource to release_region/release_mem_region 2011-03-29 11:05:48 +00:00
rc32434_wdt.c
rdc321x_wdt.c mfd: Use mfd cell platform_data for rdc321x cells platform bits 2011-05-26 19:45:06 +02:00
riowd.c dt: Eliminate of_platform_{,un}register_driver 2011-02-28 13:22:46 -07:00
s3c2410_wdt.c watchdog: s3c2410: Add support for device tree based probe 2011-07-22 09:00:43 +00:00
sa1100_wdt.c
sb_wdog.c watchdog: irq: Remove IRQF_DISABLED 2011-11-05 21:16:15 +01:00
sbc60xxwdt.c
sbc7240_wdt.c atomic: use <linux/atomic.h> 2011-07-26 16:49:47 -07:00
sbc8360.c watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
sbc_epx_c3.c watchdog: Initconst section fixes for watchdog 2011-09-20 14:32:00 +02:00
sbc_fitpc2_wdt.c watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
sc520_wdt.c watchdog: sc520_wdt: Remove unnecessary cast. 2011-11-05 21:15:10 +01:00
sc1200wdt.c
sch311x_wdt.c watchdog: remove empty pm-functions 2011-07-26 21:21:16 +00:00
scx200_wdt.c
shwdt.c watchdog: shwdt: fix usage of mod_timer 2011-08-02 08:22:49 +00:00
smsc37b787_wdt.c doc: fix broken references 2011-09-27 18:08:04 +02:00
softdog.c watchdog: softdog.c: enhancement to optionally invoke panic instead of reboot on timer expiry 2011-03-29 11:56:22 +00:00
sp805_wdt.c watchdog: sp805: Flush posted writes in enable/disable. 2011-07-26 21:19:56 +00:00
sp5100_tco.c watchdog: sp5100_tco.c: Check if firmware has set correct value in tcobase. 2011-03-29 11:05:57 +00:00
sp5100_tco.h
stmp3xxx_wdt.c
ts72xx_wdt.c watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
twl4030_wdt.c
txx9wdt.c
w83627hf_wdt.c watchdog: Add WDIOC_GETTIMELEFT ioctl support to w83627 watchdog driver 2011-11-05 21:16:39 +01:00
w83697hf_wdt.c
w83697ug_wdt.c watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
w83877f_wdt.c
w83977f_wdt.c
wafer5823wdt.c
watchdog_core.c watchdog: WatchDog Timer Driver Core - Add minimum and max timeout 2011-07-28 08:01:18 +00:00
watchdog_dev.c watchdog: WatchDog Timer Driver Core - use passed watchdog_device 2011-09-20 14:22:28 +02:00
watchdog_dev.h watchdog: WatchDog Timer Driver Core - Add basic framework 2011-07-28 08:01:04 +00:00
wd501p.h
wdrtas.c
wdt285.c
wdt977.c watchdog: cleanup spaces before tabs 2011-03-15 16:02:27 +00:00
wdt_pci.c watchdog: irq: Remove IRQF_DISABLED 2011-11-05 21:16:15 +01:00
wdt.c watchdog: irq: Remove IRQF_DISABLED 2011-11-05 21:16:15 +01:00
wm831x_wdt.c watchdog: Handle multiple wm831x watchdogs being registered 2011-06-28 07:42:16 +00:00
wm8350_wdt.c
xen_wdt.c watchdog: Xen watchdog driver 2011-03-15 16:02:18 +00:00