diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-26 11:03:38 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-26 11:03:38 -0400 |
commit | 7115e3fcf45514db7525a05365b10454ff7f345e (patch) | |
tree | 17450e6337d559cc35dae6a7a73abab01ac63f00 /drivers/watchdog | |
parent | 1f6e05171bb5cc32a4d6437ab2269fc21d169ca7 (diff) | |
parent | c752d04066a36ae30b29795f3fa3f536292c1f8c (diff) |
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (121 commits)
perf symbols: Increase symbol KSYM_NAME_LEN size
perf hists browser: Refuse 'a' hotkey on non symbolic views
perf ui browser: Use libslang to read keys
perf tools: Fix tracing info recording
perf hists browser: Elide DSO column when it is set to just one DSO, ditto for threads
perf hists: Don't consider filtered entries when calculating column widths
perf hists: Don't decay total_period for filtered entries
perf hists browser: Honour symbol_conf.show_{nr_samples,total_period}
perf hists browser: Do not exit on tab key with single event
perf annotate browser: Don't change selection line when returning from callq
perf tools: handle endianness of feature bitmap
perf tools: Add prelink suggestion to dso update message
perf script: Fix unknown feature comment
perf hists browser: Apply the dso and thread filters when merging new batches
perf hists: Move the dso and thread filters from hist_browser
perf ui browser: Honour the xterm colors
perf top tui: Give color hints just on the percentage, like on --stdio
perf ui browser: Make the colors configurable and change the defaults
perf tui: Remove unneeded call to newtCls on startup
perf hists: Don't format the percentage on hist_entry__snprintf
...
Fix up conflicts in arch/x86/kernel/kprobes.c manually.
Ingo's tree did the insane "add volatile to const array", which just
doesn't make sense ("volatile const"?). But we could remove the const
*and* make the array volatile to make doubly sure that gcc doesn't
optimize it away..
Also fix up kernel/trace/ring_buffer.c non-data-conflicts manually: the
reader_lock has been turned into a raw lock by the core locking merge,
and there was a new user of it introduced in this perf core merge. Make
sure that new use also uses the raw accessor functions.
Diffstat (limited to 'drivers/watchdog')
-rw-r--r-- | drivers/watchdog/hpwdt.c | 25 |
1 files changed, 7 insertions, 18 deletions
diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index 809cbda03d7a..3774c9b8dac9 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/notifier.h> | 35 | #include <linux/notifier.h> |
36 | #include <asm/cacheflush.h> | 36 | #include <asm/cacheflush.h> |
37 | #endif /* CONFIG_HPWDT_NMI_DECODING */ | 37 | #endif /* CONFIG_HPWDT_NMI_DECODING */ |
38 | #include <asm/nmi.h> | ||
38 | 39 | ||
39 | #define HPWDT_VERSION "1.3.0" | 40 | #define HPWDT_VERSION "1.3.0" |
40 | #define SECS_TO_TICKS(secs) ((secs) * 1000 / 128) | 41 | #define SECS_TO_TICKS(secs) ((secs) * 1000 / 128) |
@@ -477,15 +478,11 @@ static int hpwdt_time_left(void) | |||
477 | /* | 478 | /* |
478 | * NMI Handler | 479 | * NMI Handler |
479 | */ | 480 | */ |
480 | static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason, | 481 | static int hpwdt_pretimeout(unsigned int ulReason, struct pt_regs *regs) |
481 | void *data) | ||
482 | { | 482 | { |
483 | unsigned long rom_pl; | 483 | unsigned long rom_pl; |
484 | static int die_nmi_called; | 484 | static int die_nmi_called; |
485 | 485 | ||
486 | if (ulReason != DIE_NMIUNKNOWN) | ||
487 | goto out; | ||
488 | |||
489 | if (!hpwdt_nmi_decoding) | 486 | if (!hpwdt_nmi_decoding) |
490 | goto out; | 487 | goto out; |
491 | 488 | ||
@@ -508,7 +505,7 @@ static int hpwdt_pretimeout(struct notifier_block *nb, unsigned long ulReason, | |||
508 | "Management Log for details.\n"); | 505 | "Management Log for details.\n"); |
509 | 506 | ||
510 | out: | 507 | out: |
511 | return NOTIFY_OK; | 508 | return NMI_DONE; |
512 | } | 509 | } |
513 | #endif /* CONFIG_HPWDT_NMI_DECODING */ | 510 | #endif /* CONFIG_HPWDT_NMI_DECODING */ |
514 | 511 | ||
@@ -648,13 +645,6 @@ static struct miscdevice hpwdt_miscdev = { | |||
648 | .fops = &hpwdt_fops, | 645 | .fops = &hpwdt_fops, |
649 | }; | 646 | }; |
650 | 647 | ||
651 | #ifdef CONFIG_HPWDT_NMI_DECODING | ||
652 | static struct notifier_block die_notifier = { | ||
653 | .notifier_call = hpwdt_pretimeout, | ||
654 | .priority = 0, | ||
655 | }; | ||
656 | #endif /* CONFIG_HPWDT_NMI_DECODING */ | ||
657 | |||
658 | /* | 648 | /* |
659 | * Init & Exit | 649 | * Init & Exit |
660 | */ | 650 | */ |
@@ -740,10 +730,9 @@ static int __devinit hpwdt_init_nmi_decoding(struct pci_dev *dev) | |||
740 | * die notify list to handle a critical NMI. The default is to | 730 | * die notify list to handle a critical NMI. The default is to |
741 | * be last so other users of the NMI signal can function. | 731 | * be last so other users of the NMI signal can function. |
742 | */ | 732 | */ |
743 | if (priority) | 733 | retval = register_nmi_handler(NMI_UNKNOWN, hpwdt_pretimeout, |
744 | die_notifier.priority = 0x7FFFFFFF; | 734 | (priority) ? NMI_FLAG_FIRST : 0, |
745 | 735 | "hpwdt"); | |
746 | retval = register_die_notifier(&die_notifier); | ||
747 | if (retval != 0) { | 736 | if (retval != 0) { |
748 | dev_warn(&dev->dev, | 737 | dev_warn(&dev->dev, |
749 | "Unable to register a die notifier (err=%d).\n", | 738 | "Unable to register a die notifier (err=%d).\n", |
@@ -763,7 +752,7 @@ static int __devinit hpwdt_init_nmi_decoding(struct pci_dev *dev) | |||
763 | 752 | ||
764 | static void hpwdt_exit_nmi_decoding(void) | 753 | static void hpwdt_exit_nmi_decoding(void) |
765 | { | 754 | { |
766 | unregister_die_notifier(&die_notifier); | 755 | unregister_nmi_handler(NMI_UNKNOWN, "hpwdt"); |
767 | if (cru_rom_addr) | 756 | if (cru_rom_addr) |
768 | iounmap(cru_rom_addr); | 757 | iounmap(cru_rom_addr); |
769 | } | 758 | } |