[MODERATED] Re: [PATCH v2 0/8] PERFv2

Peter Zijlstra <[email protected]>
Newsgroups org.kernel.lore.historical-speck
Message-ID <[email protected]>
On Thu, Feb 07, 2019 at 06:37:59AM -0800, speck for Andi Kleen wrote:
> > A few questions:
> > 
> >  - How will this 'feature' interact with MSR_CORE_PERF_GLOBAL_CTRL ?
> 
> It's completely independent of GLOBAL_CTRL on the software level.
> Internally it uses it, but it shouldn't be software visible.

So if you write GLOBAL_CTRL=0 and then use RTM instructions, the ucode
doesn't set GLOBAL_CTRL.3 = 1 ? It would have to, otherwise I don't see
how it would work.

> >  - Is having GLOBAL_CTRL.3 0 and not using RTM instructions enough
> >    guarantee to avoid PMC3 from being clobbered?
> 
> With no use of RTM clobbering should be fairly unlikely,
> but in theory it could happen if RETPOLINE is not used
> (due to an indirect branch mistakenenly executing something
> that looks like XBEGIN). If we assume that RETPOLINE 
> is used I believe it shouldn't happen in the kernel at least.
> Even without RETPOLINE such a case should be fairly unlikely,
> but cannot be 100% ruled out.
> 
> > Esp. that latter question, because both your patches and the below seems
> > to rely on that; and if the answer is yet, the below can be further
> > simplified.
> 
> I don't see how I rely on that?

Your, like my earlier patch, hooks into x86_pmu.enable_event, but if you
look at x86_pmu_start(), we only call that _after_
x86_perf_event_set_period() which would program CNTVAL3.

If we cannot rely on the PMC3 state being stable, we have to add a hook.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.