aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephane Eranian <eranian@google.com>2013-07-04 18:30:11 -0400
committerIngo Molnar <mingo@kernel.org>2013-07-05 02:54:43 -0400
commite5302920da9ef23f9d19d4e9ac85704cc25bee7a (patch)
treebea762940dbb32ec98e99de896ad3a6d450cc025
parent100ac5331519866afa9b000b10642b00cb6d03dd (diff)
perf: Fix interrupt handler timing harness
This patch fixes a serious bug in: 14c63f17b1fd perf: Drop sample rate when sampling is too slow There was an misunderstanding on the API of the do_div() macro. It returns the remainder of the division and this was not what the function expected leading to disabling the interrupt latency watchdog. This patch also remove a duplicate assignment in perf_sample_event_took(). Signed-off-by: Stephane Eranian <eranian@google.com> Cc: peterz@infradead.org Cc: dave.hansen@linux.intel.com Cc: ak@linux.intel.com Cc: jolsa@redhat.com Link: http://lkml.kernel.org/r/20130704223010.GA30625@quad Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--kernel/events/core.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 1db3af933704..1833bc5a84a7 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -182,7 +182,7 @@ void update_perf_cpu_limits(void)
182 u64 tmp = perf_sample_period_ns; 182 u64 tmp = perf_sample_period_ns;
183 183
184 tmp *= sysctl_perf_cpu_time_max_percent; 184 tmp *= sysctl_perf_cpu_time_max_percent;
185 tmp = do_div(tmp, 100); 185 do_div(tmp, 100);
186 atomic_set(&perf_sample_allowed_ns, tmp); 186 atomic_set(&perf_sample_allowed_ns, tmp);
187} 187}
188 188
@@ -232,7 +232,7 @@ DEFINE_PER_CPU(u64, running_sample_length);
232void perf_sample_event_took(u64 sample_len_ns) 232void perf_sample_event_took(u64 sample_len_ns)
233{ 233{
234 u64 avg_local_sample_len; 234 u64 avg_local_sample_len;
235 u64 local_samples_len = __get_cpu_var(running_sample_length); 235 u64 local_samples_len;
236 236
237 if (atomic_read(&perf_sample_allowed_ns) == 0) 237 if (atomic_read(&perf_sample_allowed_ns) == 0)
238 return; 238 return;