Re: [tip:perf/core] perf/core: Check return value of the perf_event_read() IPI
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- Subject: Re: [tip:perf/core] perf/core: Check return value of the perf_event_read() IPI
- From: Peter Zijlstra <peterz@xxxxxxxxxxxxx>
- Date: Tue, 30 Aug 2016 09:26:03 +0200
- Cc: Vegard Nossum <vegard.nossum@xxxxxxxxx>, Thomas Gleixner <tglx@xxxxxxxxxxxxx>, Stephane Eranian <eranian@xxxxxxxxxx>, Vince Weaver <vincent.weaver@xxxxxxxxx>, Ingo Molnar <mingo@xxxxxxxxxx>, David Carrillo-Cisneros <davidcc@xxxxxxxxxx>, "H. Peter Anvin" <hpa@xxxxxxxxx>, Kan Liang <kan.liang@xxxxxxxxx>, Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>, Paul Turner <pjt@xxxxxxxxxx>, Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>, LKML <linux-kernel@xxxxxxxxxxxxxxx>, Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx>, linux-tip-commits@xxxxxxxxxxxxxxx
- In-reply-to: <20160830064724.GX10153@twins.programming.kicks-ass.net>
- References: <1471467307-61171-2-git-send-email-davidcc@google.com> <tip-71e7bc2bab77e64882c031c2af943c3256c1adb0@git.kernel.org> <CAOMGZ=HUNTxBOjNkP+HtD1q-yk0sOBUoMJeCu=0cKOrc8coezQ@mail.gmail.com> <20160822071737.GF4349@krava> <20160822082932.GA13171@krava> <20160822103823.GA2271@krava> <20160829100309.GS10121@twins.programming.kicks-ass.net> <20160829130213.GF10168@twins.programming.kicks-ass.net> <20160829185841.GA27077@krava> <20160830064724.GX10153@twins.programming.kicks-ass.net>
- User-agent: Mutt/1.5.23.1 (2014-03-12)
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..
---
kernel/events/core.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/kernel/events/core.c b/kernel/events/core.c
index 3f07e6cfc1b6..a35cbc382b2c 100644
--- a/kernel/events/core.c
+++ b/kernel/events/core.c
@@ -3576,12 +3576,21 @@ static int perf_event_read(struct perf_event *event, bool group)
local_cpu = get_cpu();
cpu_to_read = find_cpu_to_read(event, local_cpu);
+
+ /*
+ * Purposely ignore the smp_call_function_single() return
+ * value.
+ *
+ * If event->oncpu isn't a valid CPU it means the event got
+ * scheduled out and that will have updated the event count.
+ *
+ * Therefore, either way, we'll have an up-to-date event count
+ * after this.
+ */
+ (void)smp_call_function_single(cpu_to_read, __perf_event_read, &data, 1);
put_cpu();
- ret = smp_call_function_single(cpu_to_read, __perf_event_read, &data, 1);
- /* The event must have been read from an online CPU: */
- WARN_ON_ONCE(ret);
- ret = ret ? : data.ret;
+ ret = data.ret;
} else if (event->state == PERF_EVENT_STATE_INACTIVE) {
struct perf_event_context *ctx = event->ctx;
unsigned long flags;
--
To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Index of Archives]
[Linux Stable Commits]
[Linux Stable Kernel]
[Linux Kernel]
[Linux USB Devel]
[Linux Video &Media]
[Linux Audio Users]
[Yosemite News]
[Linux SCSI]