Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 223907
b: refs/heads/master
c: b226a5a
h: refs/heads/master
i:
  223905: ce088f0
  223903: 1e3701e
v: v3
  • Loading branch information
David Ahern authored and Arnaldo Carvalho de Melo committed Dec 9, 2010
1 parent a2832bb commit 209f567
Show file tree
Hide file tree
Showing 13 changed files with 35 additions and 44 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: efc70d241f5c7fc0a9f1c2a01781ed946d9dbe21
refs/heads/master: b226a5a72901bc9c73d639ea2e53e6c304bf3b74
10 changes: 9 additions & 1 deletion trunk/Documentation/kernel-parameters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1579,12 +1579,20 @@ and is between 256 and 4096 characters. It is defined in the file

nmi_watchdog= [KNL,BUGS=X86] Debugging features for SMP kernels
Format: [panic,][num]
Valid num: 0
Valid num: 0,1,2
0 - turn nmi_watchdog off
1 - use the IO-APIC timer for the NMI watchdog
2 - use the local APIC for the NMI watchdog using
a performance counter. Note: This will use one
performance counter and the local APIC's performance
vector.
When panic is specified, panic when an NMI watchdog
timeout occurs.
This is useful when you use a panic=... timeout and
need the box quickly up again.
Instead of 1 and 2 it is possible to use the following
symbolic names: lapic and ioapic
Example: nmi_watchdog=2 or nmi_watchdog=panic,lapic

netpoll.carrier_timeout=
[NET] Specifies amount of time (in seconds) that
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/sparc/kernel/perf_event.c
Original file line number Diff line number Diff line change
Expand Up @@ -1323,7 +1323,7 @@ int __init init_hw_perf_events(void)

return 0;
}
early_initcall(init_hw_perf_events);
early_initcall(init_hw_perf_event);

void perf_callchain_kernel(struct perf_callchain_entry *entry,
struct pt_regs *regs)
Expand Down
11 changes: 4 additions & 7 deletions trunk/arch/x86/kernel/apic/hw_nmi.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,8 @@ u64 hw_nmi_get_sample_period(void)
}
#endif

#ifndef CONFIG_HARDLOCKUP_DETECTOR
void touch_nmi_watchdog(void)
{
touch_softlockup_watchdog();
}
EXPORT_SYMBOL(touch_nmi_watchdog);
#endif
#ifdef arch_trigger_all_cpu_backtrace

/* For reliability, we're prepared to waste bits here. */
static DECLARE_BITMAP(backtrace_mask, NR_CPUS) __read_mostly;

Expand Down Expand Up @@ -99,3 +93,6 @@ static int __init register_trigger_all_cpu_backtrace(void)
}
early_initcall(register_trigger_all_cpu_backtrace);
#endif

/* STUB calls to mimic old nmi_watchdog behaviour */
int unknown_nmi_panic;
16 changes: 5 additions & 11 deletions trunk/arch/x86/kernel/traps.c
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,6 @@ EXPORT_SYMBOL_GPL(used_vectors);

static int ignore_nmis;

int unknown_nmi_panic;

static inline void conditional_sti(struct pt_regs *regs)
{
if (regs->flags & X86_EFLAGS_IF)
Expand Down Expand Up @@ -302,13 +300,6 @@ do_general_protection(struct pt_regs *regs, long error_code)
die("general protection fault", regs, error_code);
}

static int __init setup_unknown_nmi_panic(char *str)
{
unknown_nmi_panic = 1;
return 1;
}
__setup("unknown_nmi_panic", setup_unknown_nmi_panic);

static notrace __kprobes void
mem_parity_error(unsigned char reason, struct pt_regs *regs)
{
Expand Down Expand Up @@ -380,7 +371,7 @@ unknown_nmi_error(unsigned char reason, struct pt_regs *regs)
reason, smp_processor_id());

printk(KERN_EMERG "Do you have a strange power saving mode enabled?\n");
if (unknown_nmi_panic || panic_on_unrecovered_nmi)
if (panic_on_unrecovered_nmi)
panic("NMI: Not continuing");

printk(KERN_EMERG "Dazed and confused, but trying to continue\n");
Expand All @@ -406,8 +397,11 @@ static notrace __kprobes void default_do_nmi(struct pt_regs *regs)
if (notify_die(DIE_NMI, "nmi", regs, reason, 2, SIGINT)
== NOTIFY_STOP)
return;
#endif

unknown_nmi_error(reason, regs);
#else
unknown_nmi_error(reason, regs);
#endif

return;
}
Expand Down
4 changes: 1 addition & 3 deletions trunk/include/linux/nmi.h
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,7 @@
*/
#ifdef ARCH_HAS_NMI_WATCHDOG
#include <asm/nmi.h>
extern void touch_nmi_watchdog(void);
#else
#endif
#ifndef CONFIG_HARDLOCKUP_DETECTOR
static inline void touch_nmi_watchdog(void)
{
Expand All @@ -26,7 +25,6 @@ static inline void touch_nmi_watchdog(void)
#else
extern void touch_nmi_watchdog(void);
#endif
#endif

/*
* Create trigger_all_cpu_backtrace() out of the arch-provided
Expand Down
16 changes: 0 additions & 16 deletions trunk/kernel/sysctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -745,22 +745,6 @@ static struct ctl_table kern_table[] = {
.extra1 = &zero,
.extra2 = &one,
},
{
.procname = "nmi_watchdog",
.data = &watchdog_enabled,
.maxlen = sizeof (int),
.mode = 0644,
.proc_handler = proc_dowatchdog_enabled,
},
#endif
#if defined(CONFIG_X86_LOCAL_APIC) && defined(CONFIG_X86)
{
.procname = "unknown_nmi_panic",
.data = &unknown_nmi_panic,
.maxlen = sizeof (int),
.mode = 0644,
.proc_handler = proc_dointvec,
},
#endif
#if defined(CONFIG_X86)
{
Expand Down
1 change: 1 addition & 0 deletions trunk/kernel/sysctl_binary.c
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ static const struct bin_table bin_kern_table[] = {
{ CTL_INT, KERN_IA64_UNALIGNED, "ignore-unaligned-usertrap" },
{ CTL_INT, KERN_COMPAT_LOG, "compat-log" },
{ CTL_INT, KERN_MAX_LOCK_DEPTH, "max_lock_depth" },
{ CTL_INT, KERN_NMI_WATCHDOG, "nmi_watchdog" },
{ CTL_INT, KERN_PANIC_ON_NMI, "panic_on_unrecovered_nmi" },
{}
};
Expand Down
2 changes: 0 additions & 2 deletions trunk/kernel/watchdog.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,6 @@ static int __init hardlockup_panic_setup(char *str)
{
if (!strncmp(str, "panic", 5))
hardlockup_panic = 1;
else if (!strncmp(str, "0", 1))
no_watchdog = 1;
return 1;
}
__setup("nmi_watchdog=", hardlockup_panic_setup);
Expand Down
3 changes: 3 additions & 0 deletions trunk/tools/perf/Documentation/perf-report.txt
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,9 @@ OPTIONS
--vmlinux=<file>::
vmlinux pathname

--kallsyms=<file>::
kallsyms pathname

-m::
--modules::
Load module symbols. WARNING: This should only be used with -k and
Expand Down
2 changes: 2 additions & 0 deletions trunk/tools/perf/builtin-report.c
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,8 @@ static const struct option options[] = {
"dump raw trace in ASCII"),
OPT_STRING('k', "vmlinux", &symbol_conf.vmlinux_name,
"file", "vmlinux pathname"),
OPT_STRING(0, "kallsyms", &symbol_conf.kallsyms_name,
"file", "kallsyms pathname"),
OPT_BOOLEAN('f', "force", &force, "don't complain, do it"),
OPT_BOOLEAN('m', "modules", &symbol_conf.use_modules,
"load module symbols - WARNING: use only with -k and LIVE kernel"),
Expand Down
9 changes: 7 additions & 2 deletions trunk/tools/perf/util/symbol.c
Original file line number Diff line number Diff line change
Expand Up @@ -1830,8 +1830,8 @@ static int dso__load_kernel_sym(struct dso *self, struct map *map,
const char *kallsyms_filename = NULL;
char *kallsyms_allocated_filename = NULL;
/*
* Step 1: if the user specified a vmlinux filename, use it and only
* it, reporting errors to the user if it cannot be used.
* Step 1: if the user specified a kallsyms or vmlinux filename, use
* it and only it, reporting errors to the user if it cannot be used.
*
* For instance, try to analyse an ARM perf.data file _without_ a
* build-id, or if the user specifies the wrong path to the right
Expand All @@ -1844,6 +1844,11 @@ static int dso__load_kernel_sym(struct dso *self, struct map *map,
* validation in dso__load_vmlinux and will bail out if they don't
* match.
*/
if (symbol_conf.kallsyms_name != NULL) {
kallsyms_filename = symbol_conf.kallsyms_name;
goto do_kallsyms;
}

if (symbol_conf.vmlinux_name != NULL) {
err = dso__load_vmlinux(self, map,
symbol_conf.vmlinux_name, filter);
Expand Down
1 change: 1 addition & 0 deletions trunk/tools/perf/util/symbol.h
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ struct symbol_conf {
show_cpu_utilization,
initialized;
const char *vmlinux_name,
*kallsyms_name,
*source_prefix,
*field_sep;
const char *default_guest_vmlinux_name,
Expand Down

0 comments on commit 209f567

Please sign in to comment.