Commit ed21a66c authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull perf fixes from Ingo Molnar.

* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  watchdog: Quiet down the boot messages
  perf/x86: Fix broken LBR fixup code
  tracing: Have tracing_off() actually turn tracing off
parents a95f9b6e a7027046
...@@ -22,7 +22,7 @@ copy_from_user_nmi(void *to, const void __user *from, unsigned long n) ...@@ -22,7 +22,7 @@ copy_from_user_nmi(void *to, const void __user *from, unsigned long n)
void *map; void *map;
int ret; int ret;
if (__range_not_ok(from, n, TASK_SIZE) == 0) if (__range_not_ok(from, n, TASK_SIZE))
return len; return len;
do { do {
......
...@@ -371,7 +371,7 @@ EXPORT_SYMBOL_GPL(tracing_on); ...@@ -371,7 +371,7 @@ EXPORT_SYMBOL_GPL(tracing_on);
void tracing_off(void) void tracing_off(void)
{ {
if (global_trace.buffer) if (global_trace.buffer)
ring_buffer_record_on(global_trace.buffer); ring_buffer_record_off(global_trace.buffer);
/* /*
* This flag is only looked at when buffers haven't been * This flag is only looked at when buffers haven't been
* allocated yet. We don't really care about the race * allocated yet. We don't really care about the race
......
...@@ -372,6 +372,13 @@ static int watchdog(void *unused) ...@@ -372,6 +372,13 @@ static int watchdog(void *unused)
#ifdef CONFIG_HARDLOCKUP_DETECTOR #ifdef CONFIG_HARDLOCKUP_DETECTOR
/*
* People like the simple clean cpu node info on boot.
* Reduce the watchdog noise by only printing messages
* that are different from what cpu0 displayed.
*/
static unsigned long cpu0_err;
static int watchdog_nmi_enable(int cpu) static int watchdog_nmi_enable(int cpu)
{ {
struct perf_event_attr *wd_attr; struct perf_event_attr *wd_attr;
...@@ -390,11 +397,21 @@ static int watchdog_nmi_enable(int cpu) ...@@ -390,11 +397,21 @@ static int watchdog_nmi_enable(int cpu)
/* Try to register using hardware perf events */ /* Try to register using hardware perf events */
event = perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL); event = perf_event_create_kernel_counter(wd_attr, cpu, NULL, watchdog_overflow_callback, NULL);
/* save cpu0 error for future comparision */
if (cpu == 0 && IS_ERR(event))
cpu0_err = PTR_ERR(event);
if (!IS_ERR(event)) { if (!IS_ERR(event)) {
pr_info("enabled, takes one hw-pmu counter.\n"); /* only print for cpu0 or different than cpu0 */
if (cpu == 0 || cpu0_err)
pr_info("enabled on all CPUs, permanently consumes one hw-PMU counter.\n");
goto out_save; goto out_save;
} }
/* skip displaying the same error again */
if (cpu > 0 && (PTR_ERR(event) == cpu0_err))
return PTR_ERR(event);
/* vary the KERN level based on the returned errno */ /* vary the KERN level based on the returned errno */
if (PTR_ERR(event) == -EOPNOTSUPP) if (PTR_ERR(event) == -EOPNOTSUPP)
......
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