[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20160406085227.GO3448@twins.programming.kicks-ass.net>
Date: Wed, 6 Apr 2016 10:52:27 +0200
From: Peter Zijlstra <peterz@...radead.org>
To: Alexander Shishkin <alexander.shishkin@...ux.intel.com>
Cc: Gleb Natapov <gleb@...nel.org>,
Paolo Bonzini <pbonzini@...hat.com>, x86@...nel.org,
kvm@...r.kernel.org, Ingo Molnar <mingo@...hat.com>,
linux-kernel@...r.kernel.org, tglx@...utronix.de, hpa@...or.com,
Arnaldo Carvalho de Melo <acme@...radead.org>
Subject: Re: [PATCH] perf/x86/intel/pt: Don't die on VMXON
On Fri, Apr 01, 2016 at 07:24:14PM +0300, Alexander Shishkin wrote:
> +static void pt_config_stop(struct perf_event *event)
> {
> + u64 ctl = READ_ONCE(event->hw.config);
>
> + /* may be already stopped by a PMI*/
> + if (!(ctl & RTIT_CTL_TRACEEN))
> + return;
> +
> + ctl ^= RTIT_CTL_TRACEEN;
Would that not be much less confusing when written like |= ?
> wrmsrl(MSR_IA32_RTIT_CTL, ctl);
>
> + WRITE_ONCE(event->hw.config, ctl);
> +
> /*
> * A wrmsr that disables trace generation serializes other PT
> * registers and causes all data packets to be written to memory,
> +void intel_pt_vmxon(int entry)
> +{
> + struct pt *pt = this_cpu_ptr(&pt_ctx);
> + struct perf_event *event;
> + unsigned long flags;
> +
> + /* PT plays nice with VMX, do nothing */
> + if (pt_pmu.vmx)
> + return;
> +
> + /*
> + * VMX entry will clear RTIT_CTL.TraceEn; we need to make
> + * sure to not try to set it while VMX is on. Disable
> + * interrupts to avoid racing with pmu callbacks;
> + * concurrent PMI should be handled fine.
> + */
> + local_irq_save(flags);
> + WRITE_ONCE(pt->vmx_on, entry);
So you mix: "VMX is on" and "VMX entry", please pick one.
Since the function is called vmxon, I find .entry a very confusing
argument name.
> +
> + if (entry) {
> + /* prevent pt_config_stop() from writing RTIT_CTL */
> + event = pt->handle.event;
> + if (event)
> + event->hw.config = 0;
> + }
> + local_irq_restore(flags);
> +}
> +EXPORT_SYMBOL_GPL(intel_pt_vmxon);
Powered by blists - more mailing lists