linux/arch/powerpc/perf
sukadev@linux.vnet.ibm.com f34b6c72c3 powerpc/perf/hv-24x7: Use per-cpu page buffer
The 24x7 counters are continuously running and not updated on an
interrupt. So we record the event counts when stopping the event or
deleting it.

But to "read" a single counter in 24x7, we allocate a page and pass it
into the hypervisor (The HV returns the page full of counters from which
we extract the specific counter for this event).

We allocate a page using GFP_USER and when deleting the event, we end up
with the following warning because we are blocking in interrupt context.

  [  698.641709] BUG: scheduling while atomic: swapper/0/0/0x10010000

We could use GFP_ATOMIC but that could result in failures. Pre-allocate
a buffer so we don't have to allocate in interrupt context. Further as
Michael Ellerman suggested, use Per-CPU buffer so we only need to
allocate once per CPU.

Cc: stable@vger.kernel.org
Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2014-12-12 16:05:18 +11:00
..
bhrb.S powerpc/perf: Add basic assembly code to read BHRB entries on POWER8 2013-04-26 16:11:11 +10:00
callchain.c powerpc/perf: Fix ABIv2 kernel backtraces 2014-09-09 19:02:45 +10:00
core-book3s.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
core-fsl-emb.c powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
e500-pmu.c powerpc/perf: Add stalled-cycles events 2013-01-10 17:00:56 +11:00
e6500-pmu.c powerpc/perf: Add e6500 PMU driver 2013-08-07 18:38:04 -05:00
hv-24x7-catalog.h powerpc/perf: Add 24x7 interface headers 2014-03-24 09:48:29 +11:00
hv-24x7.c powerpc/perf/hv-24x7: Use per-cpu page buffer 2014-12-12 16:05:18 +11:00
hv-24x7.h powerpc/perf: Add 24x7 interface headers 2014-03-24 09:48:29 +11:00
hv-common.c powerpc/perf: Add a shared interface to get gpci version and capabilities 2014-03-24 09:48:30 +11:00
hv-common.h powerpc/perf: Add macros for defining event fields & formats 2014-03-24 09:48:31 +11:00
hv-gpci.c perf: Fix and clean up initialization of pmu::event_idx 2014-10-28 10:51:01 +01:00
hv-gpci.h powerpc/perf: Add hv_gpci interface header 2014-03-24 09:48:29 +11:00
Makefile powerpc/perf: Add kconfig option for hypervisor provided counters 2014-03-24 09:48:32 +11:00
mpc7450-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power4-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power5-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power5+-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power6-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power7-events-list.h powerpc/perf: Make some new raw event codes available in sysfs 2014-03-24 09:48:23 +11:00
power7-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
power8-pmu.c powerpc/perf: Add per-event excludes on Power8 2014-07-28 14:30:58 +10:00
ppc970-pmu.c powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00