No description
  • C 98.2%
  • Assembly 1%
  • Makefile 0.3%
  • Shell 0.2%
  • Python 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Stephane Eranian daa864b8f8 perf/x86/pebs: Fix handling of PEBS buffer overflows
This patch solves a race condition between PEBS and the PMU handler.

In case multiple PEBS events are sampled at the same time,
it is possible to have GLOBAL_STATUS bit 62 set indicating
PEBS buffer overflow and also seeing at most 3 PEBS counters
having their bits set in the status register. This is a sign
that there was at least one PEBS record pending at the time
of the PMU interrupt. PEBS counters must only be processed
via the drain_pebs() calls, and not via the regular sample
processing loop coming after that the function, otherwise
phony regular samples may be generated in the sampling buffer
not marked with the EXACT tag.

Another possibility is to have one PEBS event and at least
one non-PEBS event whic hoverflows while PEBS has armed. In this
case, bit 62 of GLOBAL_STATUS will not be set, yet the overflow
status bit for the PEBS counter will be on Skylake.

To avoid this problem, we systematically ignore the PEBS-enabled
counters from the GLOBAL_STATUS mask and we always process PEBS
events via drain_pebs().

The problem manifested itself by having non-exact samples when
sampling only PEBS events, i.e., the PERF_SAMPLE_RECORD would
not have the EXACT flag set.

Note that this problem is only present on Skylake processor.
This fix is harmless on older processors.

Reported-by: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Vince Weaver <vincent.weaver@maine.edu>
Link: http://lkml.kernel.org/r/1482395366-8992-1-git-send-email-eranian@google.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2016-12-22 17:45:36 +01:00
arch perf/x86/pebs: Fix handling of PEBS buffer overflows 2016-12-22 17:45:36 +01:00
block mm: don't cap request size based on read-ahead setting 2016-12-12 18:55:08 -08:00
certs
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-12-10 16:21:55 -05:00
Documentation These are the documentation changes for 4.10. 2016-12-12 21:58:13 -08:00
drivers These are the documentation changes for 4.10. 2016-12-12 21:58:13 -08:00
firmware
fs These are the documentation changes for 4.10. 2016-12-12 21:58:13 -08:00
include These are the documentation changes for 4.10. 2016-12-12 21:58:13 -08:00
init These are the documentation changes for 4.10. 2016-12-12 21:58:13 -08:00
ipc
kernel uprobes: Fix uprobes on MIPS, allow for a cache flush after ixol breakpoint creation 2016-12-18 09:42:11 +01:00
lib These are the documentation changes for 4.10. 2016-12-12 21:58:13 -08:00
mm Merge branch 'akpm' (patches from Andrew) 2016-12-12 20:50:02 -08:00
net Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 19:25:04 -08:00
samples samples/bpf: Move open_raw_sock to separate header 2016-12-20 12:00:40 -03:00
scripts These are the documentation changes for 4.10. 2016-12-12 21:58:13 -08:00
security Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 19:56:15 -08:00
sound printk/sound: handle more message headers 2016-12-12 18:55:09 -08:00
tools tools lib bpf: Add bpf_prog_{attach,detach} 2016-12-20 12:00:39 -03:00
usr
virt Merge branch 'linus' into locking/core, to pick up fixes 2016-12-11 13:07:13 +01:00
.cocciconfig
.get_maintainer.ignore
.gitattributes
.gitignore
.mailmap
COPYING
CREDITS Merge branch 'x86-microcode-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 15:23:02 -08:00
Kbuild
Kconfig
MAINTAINERS These are the documentation changes for 4.10. 2016-12-12 21:58:13 -08:00
Makefile Linux 4.9 2016-12-11 11:17:54 -08:00
README

Linux kernel
============

This file was moved to Documentation/admin-guide/README.rst

Please notice that there are several guides for kernel developers and users.
These guides can be rendered in a number of formats, like HTML and PDF.

In order to build the documentation, use ``make htmldocs`` or
``make pdfdocs``.

There are various text files in the Documentation/ subdirectory,
several of them using the Restructured Text markup notation.
See Documentation/00-INDEX for a list of what is contained in each file.

Please read the Documentation/process/changes.rst file, as it contains the
requirements for building and running the kernel, and information about
the problems which may result by upgrading your kernel.