From: Jiri Olsa <jolsa@redhat.com>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Vegard Nossum <vegard.nossum@gmail.com>,
Thomas Gleixner <tglx@linutronix.de>,
Stephane Eranian <eranian@google.com>,
Vince Weaver <vincent.weaver@maine.edu>,
Ingo Molnar <mingo@kernel.org>,
David Carrillo-Cisneros <davidcc@google.com>,
"H. Peter Anvin" <hpa@zytor.com>, Kan Liang <kan.liang@intel.com>,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Paul Turner <pjt@google.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
LKML <linux-kernel@vger.kernel.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
linux-tip-commits@vger.kernel.org
Subject: Re: [tip:perf/core] perf/core: Check return value of the perf_event_read() IPI
Date: Tue, 30 Aug 2016 11:47:17 +0200 [thread overview]
Message-ID: <20160830094717.GA21472@krava> (raw)
In-Reply-To: <20160830072603.GG10168@twins.programming.kicks-ass.net>
On Tue, Aug 30, 2016 at 09:26:03AM +0200, Peter Zijlstra wrote:
> On Tue, Aug 30, 2016 at 08:47:24AM +0200, Peter Zijlstra wrote:
>
> > If oncpu is not valid, the sched_out that made it invalid will have
> > updated the event count and we're good.
> >
> > All I'll leave is an explicit comment that we've ignored the
> > smp_call_function_single() return value on purpose.
>
> Something like so..
yep, it works in my tests
also I thought there's no group time update in __perf_event_read,
so I was hunting that but then I noticed we do that after during
the read.. and meanwhile came to patch below ;-)
jirka
---
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 305dbd28ea86..c637496251fe 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -3440,6 +3440,26 @@ static int find_cpu_to_read(struct perf_event *event, int local_cpu)
return event_cpu;
}
+static void read_update_times(struct perf_event *event, bool group)
+{
+ struct perf_event_context *ctx = event->ctx;
+
+ /*
+ * may read while context is not active
+ * (e.g., thread is blocked), in that case
+ * we cannot update context time
+ */
+ if (ctx->is_active) {
+ update_context_time(ctx);
+ update_cgrp_time_from_event(event);
+ }
+
+ if (group)
+ update_group_times(event);
+ else
+ update_event_times(event);
+}
+
/*
* Cross CPU call to read the hardware event
*/
@@ -3462,12 +3482,9 @@ static void __perf_event_read(void *info)
return;
raw_spin_lock(&ctx->lock);
- if (ctx->is_active) {
- update_context_time(ctx);
- update_cgrp_time_from_event(event);
- }
- update_event_times(event);
+ read_update_times(event, data->group);
+
if (event->state != PERF_EVENT_STATE_ACTIVE)
goto unlock;
@@ -3482,7 +3499,6 @@ static void __perf_event_read(void *info)
pmu->read(event);
list_for_each_entry(sub, &event->sibling_list, group_entry) {
- update_event_times(sub);
if (sub->state == PERF_EVENT_STATE_ACTIVE) {
/*
* Use sibling's PMU rather than @event's since
@@ -3596,19 +3612,7 @@ static int perf_event_read(struct perf_event *event, bool group)
unsigned long flags;
raw_spin_lock_irqsave(&ctx->lock, flags);
- /*
- * may read while context is not active
- * (e.g., thread is blocked), in that case
- * we cannot update context time
- */
- if (ctx->is_active) {
- update_context_time(ctx);
- update_cgrp_time_from_event(event);
- }
- if (group)
- update_group_times(event);
- else
- update_event_times(event);
+ read_update_times(event, group);
raw_spin_unlock_irqrestore(&ctx->lock, flags);
}
next prev parent reply other threads:[~2016-08-30 9:47 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-17 20:55 [PATCH v3 0/4] remove unnecessary IPI reading uncore events David Carrillo-Cisneros
2016-08-17 20:55 ` [PATCH v3 1/4] perf/core: check return value of perf_event_read IPI David Carrillo-Cisneros
2016-08-18 10:52 ` [tip:perf/core] perf/core: Check return value of the perf_event_read() IPI tip-bot for David Carrillo-Cisneros
2016-08-21 12:10 ` Vegard Nossum
2016-08-22 7:17 ` Jiri Olsa
2016-08-22 8:29 ` Jiri Olsa
2016-08-22 10:38 ` Jiri Olsa
2016-08-28 18:09 ` Jiri Olsa
2016-08-29 10:03 ` Peter Zijlstra
2016-08-29 13:02 ` Peter Zijlstra
2016-08-29 13:14 ` Vince Weaver
2016-08-29 18:58 ` Jiri Olsa
2016-08-30 6:47 ` Peter Zijlstra
2016-08-30 7:26 ` Peter Zijlstra
2016-08-30 9:47 ` Jiri Olsa [this message]
2016-08-30 16:26 ` Stephane Eranian
2016-09-02 8:33 ` Peter Zijlstra
2016-10-09 7:09 ` [perf/core] 412929295f: WARNING: CPU: 2 PID: 600 at kernel/events/core.c:3530 perf_event_read+0x17d/0x190 kernel test robot
2016-10-09 7:09 ` [lkp] " kernel test robot
2016-10-09 7:58 ` David Carrillo-Cisneros
2016-08-17 20:55 ` [PATCH v3 2/4] perf/core: generalize event->group_flags David Carrillo-Cisneros
2016-08-18 10:53 ` [tip:perf/core] perf/core: Generalize event->group_flags tip-bot for David Carrillo-Cisneros
2016-08-17 20:55 ` [PATCH v3 3/4] perf/core: introduce PMU_EV_CAP_READ_ACTIVE_PKG David Carrillo-Cisneros
2016-08-18 10:54 ` [tip:perf/core] perf/core: Introduce PMU_EV_CAP_READ_ACTIVE_PKG tip-bot for David Carrillo-Cisneros
2016-08-17 20:55 ` [PATCH v3 4/4] perf/x86: use PMUEF_READ_CPU_PKG in uncore events David Carrillo-Cisneros
2016-08-18 10:54 ` [tip:perf/core] perf/x86: Use " tip-bot for David Carrillo-Cisneros
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160830094717.GA21472@krava \
--to=jolsa@redhat.com \
--cc=acme@redhat.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=davidcc@google.com \
--cc=eranian@google.com \
--cc=hpa@zytor.com \
--cc=kan.liang@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=vegard.nossum@gmail.com \
--cc=vincent.weaver@maine.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.