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 <[email protected]> > Reported-by: Andi Kleen <[email protected]> > 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.

