aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/x86/kernel/cpu/perf_event.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/x86/kernel/cpu/perf_event.c b/arch/x86/kernel/cpu/perf_event.c
index c1bbed1021d9..d35f26076ae5 100644
--- a/arch/x86/kernel/cpu/perf_event.c
+++ b/arch/x86/kernel/cpu/perf_event.c
@@ -2287,7 +2287,7 @@ void callchain_store(struct perf_callchain_entry *entry, u64 ip)
2287 2287
2288static DEFINE_PER_CPU(struct perf_callchain_entry, pmc_irq_entry); 2288static DEFINE_PER_CPU(struct perf_callchain_entry, pmc_irq_entry);
2289static DEFINE_PER_CPU(struct perf_callchain_entry, pmc_nmi_entry); 2289static DEFINE_PER_CPU(struct perf_callchain_entry, pmc_nmi_entry);
2290static DEFINE_PER_CPU(int, in_nmi_frame); 2290static DEFINE_PER_CPU(int, in_ignored_frame);
2291 2291
2292 2292
2293static void 2293static void
@@ -2303,8 +2303,9 @@ static void backtrace_warning(void *data, char *msg)
2303 2303
2304static int backtrace_stack(void *data, char *name) 2304static int backtrace_stack(void *data, char *name)
2305{ 2305{
2306 per_cpu(in_nmi_frame, smp_processor_id()) = 2306 per_cpu(in_ignored_frame, smp_processor_id()) =
2307 x86_is_stack_id(NMI_STACK, name); 2307 x86_is_stack_id(NMI_STACK, name) ||
2308 x86_is_stack_id(DEBUG_STACK, name);
2308 2309
2309 return 0; 2310 return 0;
2310} 2311}
@@ -2313,7 +2314,7 @@ static void backtrace_address(void *data, unsigned long addr, int reliable)
2313{ 2314{
2314 struct perf_callchain_entry *entry = data; 2315 struct perf_callchain_entry *entry = data;
2315 2316
2316 if (per_cpu(in_nmi_frame, smp_processor_id())) 2317 if (per_cpu(in_ignored_frame, smp_processor_id()))
2317 return; 2318 return;
2318 2319
2319 if (reliable) 2320 if (reliable)