From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754059AbdBNN5P (ORCPT ); Tue, 14 Feb 2017 08:57:15 -0500 Received: from merlin.infradead.org ([205.233.59.134]:46722 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753133AbdBNN4e (ORCPT ); Tue, 14 Feb 2017 08:56:34 -0500 Date: Tue, 14 Feb 2017 14:56:20 +0100 From: Peter Zijlstra To: Alexander Shishkin Cc: Ingo Molnar , linux-kernel@vger.kernel.org, vince@deater.net, eranian@google.com, Arnaldo Carvalho de Melo , Borislav Petkov , Thomas Gleixner Subject: Re: [PATCH 1/2] perf/x86/intel/pt: Fail event scheduling on conflict with VMX Message-ID: <20170214135620.GN6500@twins.programming.kicks-ass.net> References: <20170214132416.26400-1-alexander.shishkin@linux.intel.com> <20170214132416.26400-2-alexander.shishkin@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170214132416.26400-2-alexander.shishkin@linux.intel.com> User-Agent: Mutt/1.5.23.1 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Feb 14, 2017 at 03:24:15PM +0200, Alexander Shishkin wrote: > At the moment, if VMX operation prevents PT tracing, the PMU will > silently return success to the event scheduling code, which will > track its 'on' time, etc. Instead, report failure so that perf > core knows this event is not actually on. > > Signed-off-by: Alexander Shishkin > Reported-by: Andi Kleen > Fixes: 1c5ac21a0e ("perf/x86/intel/pt: Don't die on VMXON") > --- > arch/x86/events/intel/pt.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/x86/events/intel/pt.c b/arch/x86/events/intel/pt.c > index d92a60ef08..9372fa4549 100644 > --- a/arch/x86/events/intel/pt.c > +++ b/arch/x86/events/intel/pt.c > @@ -1335,7 +1335,7 @@ static void pt_event_start(struct perf_event *event, int mode) > struct pt_buffer *buf; > > if (READ_ONCE(pt->vmx_on)) > - return; > + goto fail_stop; > > buf = perf_aux_output_begin(&pt->handle, event); > if (!buf) I'm not getting it; how does this matter to the time tracking in event_sched_in() / event_sched_out() ? That looks at event->state == PERF_EVENT_STATE* This goto affects event->hw.state == PERF_HES_ The core assumes ->start() will _NOT_ fail.