Commit 995b4103 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://www.linux-watchdog.org/linux-watchdog

* git://www.linux-watchdog.org/linux-watchdog:
  watchdog: iTCO_wdt.c - problems with newer hardware due to SMI clearing (part 2)
  watchdog: hpwdt: Changes to handle NX secure bit in 32bit path
  watchdog: sp805: Fix section mismatch in ID table.
  watchdog: move coh901327 state holders
parents 89307bab 0d098587
...@@ -76,8 +76,6 @@ static int irq; ...@@ -76,8 +76,6 @@ static int irq;
static void __iomem *virtbase; static void __iomem *virtbase;
static unsigned long coh901327_users; static unsigned long coh901327_users;
static unsigned long boot_status; static unsigned long boot_status;
static u16 wdogenablestore;
static u16 irqmaskstore;
static struct device *parent; static struct device *parent;
/* /*
...@@ -461,6 +459,10 @@ static int __init coh901327_probe(struct platform_device *pdev) ...@@ -461,6 +459,10 @@ static int __init coh901327_probe(struct platform_device *pdev)
} }
#ifdef CONFIG_PM #ifdef CONFIG_PM
static u16 wdogenablestore;
static u16 irqmaskstore;
static int coh901327_suspend(struct platform_device *pdev, pm_message_t state) static int coh901327_suspend(struct platform_device *pdev, pm_message_t state)
{ {
irqmaskstore = readw(virtbase + U300_WDOG_IMR) & 0x0001U; irqmaskstore = readw(virtbase + U300_WDOG_IMR) & 0x0001U;
......
...@@ -231,6 +231,7 @@ static int __devinit cru_detect(unsigned long map_entry, ...@@ -231,6 +231,7 @@ static int __devinit cru_detect(unsigned long map_entry,
cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE; cmn_regs.u1.reax = CRU_BIOS_SIGNATURE_VALUE;
set_memory_x((unsigned long)bios32_entrypoint, (2 * PAGE_SIZE));
asminline_call(&cmn_regs, bios32_entrypoint); asminline_call(&cmn_regs, bios32_entrypoint);
if (cmn_regs.u1.ral != 0) { if (cmn_regs.u1.ral != 0) {
...@@ -248,9 +249,11 @@ static int __devinit cru_detect(unsigned long map_entry, ...@@ -248,9 +249,11 @@ static int __devinit cru_detect(unsigned long map_entry,
if ((physical_bios_base + physical_bios_offset)) { if ((physical_bios_base + physical_bios_offset)) {
cru_rom_addr = cru_rom_addr =
ioremap(cru_physical_address, cru_length); ioremap(cru_physical_address, cru_length);
if (cru_rom_addr) if (cru_rom_addr) {
set_memory_x((unsigned long)cru_rom_addr, cru_length);
retval = 0; retval = 0;
} }
}
printk(KERN_DEBUG "hpwdt: CRU Base Address: 0x%lx\n", printk(KERN_DEBUG "hpwdt: CRU Base Address: 0x%lx\n",
physical_bios_base); physical_bios_base);
......
...@@ -384,10 +384,10 @@ MODULE_PARM_DESC(nowayout, ...@@ -384,10 +384,10 @@ MODULE_PARM_DESC(nowayout,
"Watchdog cannot be stopped once started (default=" "Watchdog cannot be stopped once started (default="
__MODULE_STRING(WATCHDOG_NOWAYOUT) ")"); __MODULE_STRING(WATCHDOG_NOWAYOUT) ")");
static int turn_SMI_watchdog_clear_off = 0; static int turn_SMI_watchdog_clear_off = 1;
module_param(turn_SMI_watchdog_clear_off, int, 0); module_param(turn_SMI_watchdog_clear_off, int, 0);
MODULE_PARM_DESC(turn_SMI_watchdog_clear_off, MODULE_PARM_DESC(turn_SMI_watchdog_clear_off,
"Turn off SMI clearing watchdog (default=0)"); "Turn off SMI clearing watchdog (depends on TCO-version)(default=1)");
/* /*
* Some TCO specific functions * Some TCO specific functions
...@@ -813,7 +813,7 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev, ...@@ -813,7 +813,7 @@ static int __devinit iTCO_wdt_init(struct pci_dev *pdev,
ret = -EIO; ret = -EIO;
goto out_unmap; goto out_unmap;
} }
if (turn_SMI_watchdog_clear_off) { if (turn_SMI_watchdog_clear_off >= iTCO_wdt_private.iTCO_version) {
/* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */ /* Bit 13: TCO_EN -> 0 = Disables TCO logic generating an SMI# */
val32 = inl(SMI_EN); val32 = inl(SMI_EN);
val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */ val32 &= 0xffffdfff; /* Turn off SMI clearing watchdog */
......
...@@ -351,7 +351,7 @@ static int __devexit sp805_wdt_remove(struct amba_device *adev) ...@@ -351,7 +351,7 @@ static int __devexit sp805_wdt_remove(struct amba_device *adev)
return 0; return 0;
} }
static struct amba_id sp805_wdt_ids[] __initdata = { static struct amba_id sp805_wdt_ids[] = {
{ {
.id = 0x00141805, .id = 0x00141805,
.mask = 0x00ffffff, .mask = 0x00ffffff,
......
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