<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/x86/kernel/cpu/perf_event.c, branch linux-3.17.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-3.17.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2014-07-16T11:18:43Z</updated>
<entry>
<title>perf/x86/intel: Protect LBR and extra_regs against KVM lying</title>
<updated>2014-07-16T11:18:43Z</updated>
<author>
<name>Kan Liang</name>
</author>
<published>2014-07-14T19:25:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=338b522ca43cfd32d11a370f4203bcd089c6c877'/>
<id>urn:sha1:338b522ca43cfd32d11a370f4203bcd089c6c877</id>
<content type='text'>
With -cpu host, KVM reports LBR and extra_regs support, if the host has
support.

When the guest perf driver tries to access LBR or extra_regs MSR,
it #GPs all MSR accesses,since KVM doesn't handle LBR and extra_regs support.
So check the related MSRs access right once at initialization time to avoid
the error access at runtime.

For reproducing the issue, please build the kernel with CONFIG_KVM_INTEL = y
(for host kernel).
And CONFIG_PARAVIRT = n and CONFIG_KVM_GUEST = n (for guest kernel).
Start the guest with -cpu host.
Run perf record with --branch-any or --branch-filter in guest to trigger LBR
Run perf stat offcore events (E.g. LLC-loads/LLC-load-misses ...) in guest to
trigger offcore_rsp #GP

Signed-off-by: Kan Liang &lt;kan.liang@intel.com&gt;
Signed-off-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Andi Kleen &lt;ak@linux.intel.com&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@kernel.org&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: Maria Dimakopoulou &lt;maria.n.dimakopoulou@gmail.com&gt;
Cc: Mark Davies &lt;junk@eslaf.co.uk&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Stephane Eranian &lt;eranian@google.com&gt;
Cc: Yan, Zheng &lt;zheng.z.yan@intel.com&gt;
Link: http://lkml.kernel.org/r/1405365957-20202-1-git-send-email-kan.liang@intel.com
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>perf/x86: Use common PMU interrupt disabled code</title>
<updated>2014-06-05T10:30:03Z</updated>
<author>
<name>Vince Weaver</name>
</author>
<published>2014-05-16T21:18:07Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c184c980de30dc5f6fec4b281928aa6743708da9'/>
<id>urn:sha1:c184c980de30dc5f6fec4b281928aa6743708da9</id>
<content type='text'>
Make the x86 perf code use the new common PMU interrupt disabled code.

Typically most x86 machines have working PMU interrupts, although
some older p6-class machines had this problem.

Signed-off-by: Vince Weaver &lt;vincent.weaver@maine.edu&gt;
Signed-off-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@kernel.org&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Link: http://lkml.kernel.org/r/alpine.DEB.2.10.1405161715560.11099@vincent-weaver-1.umelst.maine.edu
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'perf/kprobes' into perf/core</title>
<updated>2014-06-05T10:26:50Z</updated>
<author>
<name>Ingo Molnar</name>
</author>
<published>2014-06-05T09:18:34Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=10b0256496fd6c162478547f7c6df1e052e87644'/>
<id>urn:sha1:10b0256496fd6c162478547f7c6df1e052e87644</id>
<content type='text'>
Conflicts:
	arch/x86/kernel/traps.c

The kprobes enhancements are fully cooked, ship them upstream.

Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>kprobes, x86: Use NOKPROBE_SYMBOL() instead of __kprobes annotation</title>
<updated>2014-04-24T08:26:38Z</updated>
<author>
<name>Masami Hiramatsu</name>
</author>
<published>2014-04-17T08:18:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=9326638cbee2d36b051ed2a69f3e4e107e5f86bd'/>
<id>urn:sha1:9326638cbee2d36b051ed2a69f3e4e107e5f86bd</id>
<content type='text'>
Use NOKPROBE_SYMBOL macro for protecting functions
from kprobes instead of __kprobes annotation under
arch/x86.

This applies nokprobe_inline annotation for some cases,
because NOKPROBE_SYMBOL() will inhibit inlining by
referring the symbol address.

This just folds a bunch of previous NOKPROBE_SYMBOL()
cleanup patches for x86 to one patch.

Signed-off-by: Masami Hiramatsu &lt;masami.hiramatsu.pt@hitachi.com&gt;
Link: http://lkml.kernel.org/r/20140417081814.26341.51656.stgit@ltc230.yrl.intra.hitachi.co.jp
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@kernel.org&gt;
Cc: Borislav Petkov &lt;bp@suse.de&gt;
Cc: Dave Hansen &lt;dave.hansen@linux.intel.com&gt;
Cc: Fernando Luis Vázquez Cao &lt;fernando_b1@lab.ntt.co.jp&gt;
Cc: Gleb Natapov &lt;gleb@redhat.com&gt;
Cc: Jason Wang &lt;jasowang@redhat.com&gt;
Cc: Jesper Nilsson &lt;jesper.nilsson@axis.com&gt;
Cc: Jiri Kosina &lt;jkosina@suse.cz&gt;
Cc: Jiri Olsa &lt;jolsa@redhat.com&gt;
Cc: Jiri Slaby &lt;jslaby@suse.cz&gt;
Cc: Johannes Weiner &lt;hannes@cmpxchg.org&gt;
Cc: Jonathan Lebon &lt;jlebon@redhat.com&gt;
Cc: Kees Cook &lt;keescook@chromium.org&gt;
Cc: Matt Fleming &lt;matt.fleming@intel.com&gt;
Cc: Michel Lespinasse &lt;walken@google.com&gt;
Cc: Paolo Bonzini &lt;pbonzini@redhat.com&gt;
Cc: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Cc: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Raghavendra K T &lt;raghavendra.kt@linux.vnet.ibm.com&gt;
Cc: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Cc: Seiji Aguchi &lt;seiji.aguchi@hds.com&gt;
Cc: Srivatsa Vaddagiri &lt;vatsa@linux.vnet.ibm.com&gt;
Cc: Tejun Heo &lt;tj@kernel.org&gt;
Cc: Vineet Gupta &lt;vgupta@synopsys.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>perf/x86: Export perf_assign_events()</title>
<updated>2014-04-18T10:54:46Z</updated>
<author>
<name>Yan, Zheng</name>
</author>
<published>2014-03-18T08:56:43Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4a3dc121d3c370625575247bf714db3f601d83e9'/>
<id>urn:sha1:4a3dc121d3c370625575247bf714db3f601d83e9</id>
<content type='text'>
export perf_assign_events to allow building perf Intel uncore driver
as module

Signed-off-by: Yan, Zheng &lt;zheng.z.yan@intel.com&gt;
Signed-off-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Link: http://lkml.kernel.org/r/1395133004-23205-3-git-send-email-zheng.z.yan@intel.com
Cc: Arnaldo Carvalho de Melo &lt;acme@kernel.org&gt;
Cc: eranian@google.com
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>perf/x86: Add a few more comments</title>
<updated>2014-02-27T11:43:25Z</updated>
<author>
<name>Peter Zijlstra</name>
</author>
<published>2014-02-24T11:26:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c347a2f1793e285b0812343e715bb7e953dbdf68'/>
<id>urn:sha1:c347a2f1793e285b0812343e715bb7e953dbdf68</id>
<content type='text'>
Add a few comments on the -&gt;add(), -&gt;del() and -&gt;*_txn()
implementation.

Requested-by: Vince Weaver &lt;vincent.weaver@maine.edu&gt;
Signed-off-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Link: http://lkml.kernel.org/n/tip-he3819318c245j7t5e1e22tr@git.kernel.org
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>perf/x86: Fix event scheduling</title>
<updated>2014-02-27T11:38:02Z</updated>
<author>
<name>Peter Zijlstra</name>
</author>
<published>2014-02-21T15:03:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=26e61e8939b1fe8729572dabe9a9e97d930dd4f6'/>
<id>urn:sha1:26e61e8939b1fe8729572dabe9a9e97d930dd4f6</id>
<content type='text'>
Vince "Super Tester" Weaver reported a new round of syscall fuzzing (Trinity) failures,
with perf WARN_ON()s triggering. He also provided traces of the failures.

This is I think the relevant bit:

	&gt;    pec_1076_warn-2804  [000] d...   147.926153: x86_pmu_disable: x86_pmu_disable
	&gt;    pec_1076_warn-2804  [000] d...   147.926153: x86_pmu_state: Events: {
	&gt;    pec_1076_warn-2804  [000] d...   147.926156: x86_pmu_state:   0: state: .R config: ffffffffffffffff (          (null))
	&gt;    pec_1076_warn-2804  [000] d...   147.926158: x86_pmu_state:   33: state: AR config: 0 (ffff88011ac99800)
	&gt;    pec_1076_warn-2804  [000] d...   147.926159: x86_pmu_state: }
	&gt;    pec_1076_warn-2804  [000] d...   147.926160: x86_pmu_state: n_events: 1, n_added: 0, n_txn: 1
	&gt;    pec_1076_warn-2804  [000] d...   147.926161: x86_pmu_state: Assignment: {
	&gt;    pec_1076_warn-2804  [000] d...   147.926162: x86_pmu_state:   0-&gt;33 tag: 1 config: 0 (ffff88011ac99800)
	&gt;    pec_1076_warn-2804  [000] d...   147.926163: x86_pmu_state: }
	&gt;    pec_1076_warn-2804  [000] d...   147.926166: collect_events: Adding event: 1 (ffff880119ec8800)

So we add the insn:p event (fd[23]).

At this point we should have:

  n_events = 2, n_added = 1, n_txn = 1

	&gt;    pec_1076_warn-2804  [000] d...   147.926170: collect_events: Adding event: 0 (ffff8800c9e01800)
	&gt;    pec_1076_warn-2804  [000] d...   147.926172: collect_events: Adding event: 4 (ffff8800cbab2c00)

We try and add the {BP,cycles,br_insn} group (fd[3], fd[4], fd[15]).
These events are 0:cycles and 4:br_insn, the BP event isn't x86_pmu so
that's not visible.

	group_sched_in()
	  pmu-&gt;start_txn() /* nop - BP pmu */
	  event_sched_in()
	     event-&gt;pmu-&gt;add()

So here we should end up with:

  0: n_events = 3, n_added = 2, n_txn = 2
  4: n_events = 4, n_added = 3, n_txn = 3

But seeing the below state on x86_pmu_enable(), the must have failed,
because the 0 and 4 events aren't there anymore.

Looking at group_sched_in(), since the BP is the leader, its
event_sched_in() must have succeeded, for otherwise we would not have
seen the sibling adds.

But since neither 0 or 4 are in the below state; their event_sched_in()
must have failed; but I don't see why, the complete state: 0,0,1:p,4
fits perfectly fine on a core2.

However, since we try and schedule 4 it means the 0 event must have
succeeded!  Therefore the 4 event must have failed, its failure will
have put group_sched_in() into the fail path, which will call:

	event_sched_out()
	  event-&gt;pmu-&gt;del()

on 0 and the BP event.

Now x86_pmu_del() will reduce n_events; but it will not reduce n_added;
giving what we see below:

 n_event = 2, n_added = 2, n_txn = 2

	&gt;    pec_1076_warn-2804  [000] d...   147.926177: x86_pmu_enable: x86_pmu_enable
	&gt;    pec_1076_warn-2804  [000] d...   147.926177: x86_pmu_state: Events: {
	&gt;    pec_1076_warn-2804  [000] d...   147.926179: x86_pmu_state:   0: state: .R config: ffffffffffffffff (          (null))
	&gt;    pec_1076_warn-2804  [000] d...   147.926181: x86_pmu_state:   33: state: AR config: 0 (ffff88011ac99800)
	&gt;    pec_1076_warn-2804  [000] d...   147.926182: x86_pmu_state: }
	&gt;    pec_1076_warn-2804  [000] d...   147.926184: x86_pmu_state: n_events: 2, n_added: 2, n_txn: 2
	&gt;    pec_1076_warn-2804  [000] d...   147.926184: x86_pmu_state: Assignment: {
	&gt;    pec_1076_warn-2804  [000] d...   147.926186: x86_pmu_state:   0-&gt;33 tag: 1 config: 0 (ffff88011ac99800)
	&gt;    pec_1076_warn-2804  [000] d...   147.926188: x86_pmu_state:   1-&gt;0 tag: 1 config: 1 (ffff880119ec8800)
	&gt;    pec_1076_warn-2804  [000] d...   147.926188: x86_pmu_state: }
	&gt;    pec_1076_warn-2804  [000] d...   147.926190: x86_pmu_enable: S0: hwc-&gt;idx: 33, hwc-&gt;last_cpu: 0, hwc-&gt;last_tag: 1 hwc-&gt;state: 0

So the problem is that x86_pmu_del(), when called from a
group_sched_in() that fails (for whatever reason), and without x86_pmu
TXN support (because the leader is !x86_pmu), will corrupt the n_added
state.

Reported-and-Tested-by: Vince Weaver &lt;vincent.weaver@maine.edu&gt;
Signed-off-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Paul Mackerras &lt;paulus@samba.org&gt;
Cc: Steven Rostedt &lt;rostedt@goodmis.org&gt;
Cc: Stephane Eranian &lt;eranian@google.com&gt;
Cc: Dave Jones &lt;davej@redhat.com&gt;
Cc: &lt;stable@vger.kernel.org&gt;
Link: http://lkml.kernel.org/r/20140221150312.GF3104@twins.programming.kicks-ass.net
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>perf/x86: Fix Userspace RDPMC switch</title>
<updated>2014-02-09T12:08:25Z</updated>
<author>
<name>Peter Zijlstra</name>
</author>
<published>2014-02-05T10:19:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0e9f2204cfa6d79abe3e525ddf7c4ab5792cc751'/>
<id>urn:sha1:0e9f2204cfa6d79abe3e525ddf7c4ab5792cc751</id>
<content type='text'>
The current code forgets to change the CR4 state on the current CPU.
Use on_each_cpu() instead of smp_call_function().

Reported-by: Mark Davies &lt;junk@eslaf.co.uk&gt;
Suggested-by: Mark Davies &lt;junk@eslaf.co.uk&gt;
Signed-off-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: fweisbec@gmail.com
Link: http://lkml.kernel.org/n/tip-69efsat90ibhnd577zy3z9gh@git.kernel.org
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>perf/x86/intel/p6: Add userspace RDPMC quirk for PPro</title>
<updated>2014-02-09T12:08:24Z</updated>
<author>
<name>Peter Zijlstra</name>
</author>
<published>2014-02-05T19:48:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e97df76377b8b3b1f7dfd5d6f8a1d5a31438b140'/>
<id>urn:sha1:e97df76377b8b3b1f7dfd5d6f8a1d5a31438b140</id>
<content type='text'>
PPro machines can die hard when PCE gets enabled due to a CPU erratum.
The safe way it so disable it by default and keep it disabled.

See erratum 26 in:

  http://download.intel.com/design/archives/processors/pro/docs/24268935.pdf

Reported-and-Tested-by: Mark Davies &lt;junk@eslaf.co.uk&gt;
Cc: Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;
Cc: Stephane Eranian &lt;eranian@google.com&gt;
Cc: Vince Weaver &lt;vince@deater.net&gt;
Signed-off-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Link: http://lkml.kernel.org/r/20140206170815.GW2936@laptop.programming.kicks-ass.net
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
<entry>
<title>sched/clock, x86: Use a static_key for sched_clock_stable</title>
<updated>2014-01-13T14:13:13Z</updated>
<author>
<name>Peter Zijlstra</name>
</author>
<published>2013-11-28T18:38:42Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=35af99e646c7f7ea46dc2977601e9e71a51dadd5'/>
<id>urn:sha1:35af99e646c7f7ea46dc2977601e9e71a51dadd5</id>
<content type='text'>
In order to avoid the runtime condition and variable load turn
sched_clock_stable into a static_key.

Also provide a shorter implementation of local_clock() and
cpu_clock(int) when sched_clock_stable==1.

                        MAINLINE   PRE       POST

    sched_clock_stable: 1          1         1
    (cold) sched_clock: 329841     221876    215295
    (cold) local_clock: 301773     234692    220773
    (warm) sched_clock: 38375      25602     25659
    (warm) local_clock: 100371     33265     27242
    (warm) rdtsc:       27340      24214     24208
    sched_clock_stable: 0          0         0
    (cold) sched_clock: 382634     235941    237019
    (cold) local_clock: 396890     297017    294819
    (warm) sched_clock: 38194      25233     25609
    (warm) local_clock: 143452     71234     71232
    (warm) rdtsc:       27345      24245     24243

Signed-off-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Link: http://lkml.kernel.org/n/tip-eummbdechzz37mwmpags1gjr@git.kernel.org
Signed-off-by: Ingo Molnar &lt;mingo@kernel.org&gt;
</content>
</entry>
</feed>
