Commit f6f7b52e authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog

* git://git.kernel.org/pub/scm/linux/kernel/git/wim/linux-2.6-watchdog:
  [WATCHDOG] hpwdt: Fix kdump when using hpwdt
  [WATCHDOG] hpwdt: set the mapped BIOS address space as executable
  [WATCHDOG] iTCO_wdt: add PCI ID's for ICH9 & ICH10 chipsets
  [WATCHDOG] iTCO_wdt : correct status clearing
  [WATCHDOG] iTCO_wdt : problem with rebooting on new ICH9 based motherboards
  [WATCHDOG] fix mtx1_wdt compilation failure
parents 51eaaa67 290172e7
...@@ -40,6 +40,7 @@ ...@@ -40,6 +40,7 @@
#include <linux/bootmem.h> #include <linux/bootmem.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <asm/desc.h> #include <asm/desc.h>
#include <asm/cacheflush.h>
#define PCI_BIOS32_SD_VALUE 0x5F32335F /* "_32_" */ #define PCI_BIOS32_SD_VALUE 0x5F32335F /* "_32_" */
#define CRU_BIOS_SIGNATURE_VALUE 0x55524324 #define CRU_BIOS_SIGNATURE_VALUE 0x55524324
...@@ -394,6 +395,8 @@ static void __devinit dmi_find_cru(const struct dmi_header *dm) ...@@ -394,6 +395,8 @@ static void __devinit dmi_find_cru(const struct dmi_header *dm)
smbios_cru64_ptr->double_offset; smbios_cru64_ptr->double_offset;
cru_rom_addr = ioremap(cru_physical_address, cru_rom_addr = ioremap(cru_physical_address,
smbios_cru64_ptr->double_length); smbios_cru64_ptr->double_length);
set_memory_x((unsigned long)cru_rom_addr & PAGE_MASK,
smbios_cru64_ptr->double_length >> PAGE_SHIFT);
} }
} }
} }
...@@ -482,7 +485,7 @@ static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason, ...@@ -482,7 +485,7 @@ static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason,
"Management Log for details.\n"); "Management Log for details.\n");
} }
return NOTIFY_STOP; return NOTIFY_OK;
} }
/* /*
......
/* /*
* intel TCO vendor specific watchdog driver support * intel TCO vendor specific watchdog driver support
* *
* (c) Copyright 2006 Wim Van Sebroeck <wim@iguana.be>. * (c) Copyright 2006-2008 Wim Van Sebroeck <wim@iguana.be>.
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License * modify it under the terms of the GNU General Public License
...@@ -19,8 +19,7 @@ ...@@ -19,8 +19,7 @@
/* Module and version information */ /* Module and version information */
#define DRV_NAME "iTCO_vendor_support" #define DRV_NAME "iTCO_vendor_support"
#define DRV_VERSION "1.01" #define DRV_VERSION "1.02"
#define DRV_RELDATE "11-Nov-2006"
#define PFX DRV_NAME ": " #define PFX DRV_NAME ": "
/* Includes */ /* Includes */
...@@ -78,24 +77,6 @@ MODULE_PARM_DESC(vendorsupport, "iTCO vendor specific support mode, default=0 (n ...@@ -78,24 +77,6 @@ MODULE_PARM_DESC(vendorsupport, "iTCO vendor specific support mode, default=0 (n
* 20.6 seconds. * 20.6 seconds.
*/ */
static void supermicro_old_pre_start(unsigned long acpibase)
{
unsigned long val32;
val32 = inl(SMI_EN);
val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
outl(val32, SMI_EN); /* Needed to activate watchdog */
}
static void supermicro_old_pre_stop(unsigned long acpibase)
{
unsigned long val32;
val32 = inl(SMI_EN);
val32 &= 0x00002000; /* Turn on SMI clearing watchdog */
outl(val32, SMI_EN); /* Needed to deactivate watchdog */
}
static void supermicro_old_pre_keepalive(unsigned long acpibase) static void supermicro_old_pre_keepalive(unsigned long acpibase)
{ {
/* Reload TCO Timer (done in iTCO_wdt_keepalive) + */ /* Reload TCO Timer (done in iTCO_wdt_keepalive) + */
...@@ -247,18 +228,14 @@ static void supermicro_new_pre_set_heartbeat(unsigned int heartbeat) ...@@ -247,18 +228,14 @@ static void supermicro_new_pre_set_heartbeat(unsigned int heartbeat)
void iTCO_vendor_pre_start(unsigned long acpibase, void iTCO_vendor_pre_start(unsigned long acpibase,
unsigned int heartbeat) unsigned int heartbeat)
{ {
if (vendorsupport == SUPERMICRO_OLD_BOARD) if (vendorsupport == SUPERMICRO_NEW_BOARD)
supermicro_old_pre_start(acpibase);
else if (vendorsupport == SUPERMICRO_NEW_BOARD)
supermicro_new_pre_start(heartbeat); supermicro_new_pre_start(heartbeat);
} }
EXPORT_SYMBOL(iTCO_vendor_pre_start); EXPORT_SYMBOL(iTCO_vendor_pre_start);
void iTCO_vendor_pre_stop(unsigned long acpibase) void iTCO_vendor_pre_stop(unsigned long acpibase)
{ {
if (vendorsupport == SUPERMICRO_OLD_BOARD) if (vendorsupport == SUPERMICRO_NEW_BOARD)
supermicro_old_pre_stop(acpibase);
else if (vendorsupport == SUPERMICRO_NEW_BOARD)
supermicro_new_pre_stop(); supermicro_new_pre_stop();
} }
EXPORT_SYMBOL(iTCO_vendor_pre_stop); EXPORT_SYMBOL(iTCO_vendor_pre_stop);
......
This diff is collapsed.
...@@ -98,6 +98,8 @@ static void mtx1_wdt_reset(void) ...@@ -98,6 +98,8 @@ static void mtx1_wdt_reset(void)
static void mtx1_wdt_start(void) static void mtx1_wdt_start(void)
{ {
unsigned long flags;
spin_lock_irqsave(&mtx1_wdt_device.lock, flags); spin_lock_irqsave(&mtx1_wdt_device.lock, flags);
if (!mtx1_wdt_device.queue) { if (!mtx1_wdt_device.queue) {
mtx1_wdt_device.queue = 1; mtx1_wdt_device.queue = 1;
...@@ -110,6 +112,8 @@ static void mtx1_wdt_start(void) ...@@ -110,6 +112,8 @@ static void mtx1_wdt_start(void)
static int mtx1_wdt_stop(void) static int mtx1_wdt_stop(void)
{ {
unsigned long flags;
spin_lock_irqsave(&mtx1_wdt_device.lock, flags); spin_lock_irqsave(&mtx1_wdt_device.lock, flags);
if (mtx1_wdt_device.queue) { if (mtx1_wdt_device.queue) {
mtx1_wdt_device.queue = 0; mtx1_wdt_device.queue = 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment