Index: linux/drivers/char/watchdog/w83627hf_wdt.c =================================================================== --- linux.orig/drivers/char/watchdog/w83627hf_wdt.c +++ linux/drivers/char/watchdog/w83627hf_wdt.c @@ -75,6 +75,9 @@ static void w83627hf_select_wd_register(void) { unsigned char c; + + spin_lock(&io_lock); + outb(0x87, WDT_EFER); /* Enter extended function mode */ outb(0x87, WDT_EFER); /* Again according to manual */ @@ -97,6 +100,7 @@ static void w83627hf_unselect_wd_register(void) { outb(0xAA, WDT_EFER); /* Leave extended function mode */ + spin_unlock(&io_lock); } /* tyan motherboards seem to set F5 to 0x4C ? @@ -125,16 +129,12 @@ w83627hf_init(void) static void wdt_ctrl(int timeout) { - spin_lock(&io_lock); - w83627hf_select_wd_register(); outb(0xF6, WDT_EFER); /* Select CRF6 */ outb(timeout, WDT_EFDR); /* Write Timeout counter to CRF6 */ w83627hf_unselect_wd_register(); - - spin_unlock(&io_lock); } static int