oprofile, s390: Enhance OProfile to support System zs hardware sampling feature
authorHeinz Graalfs <graalfs@linux.vnet.ibm.com>
Fri, 21 Jan 2011 10:06:53 +0000 (10:06 +0000)
committerRobert Richter <robert.richter@amd.com>
Tue, 15 Feb 2011 10:08:50 +0000 (11:08 +0100)
commit997dbb4967da248808850c250182ef2528fff2d1
treeb41497541383c2e569b629fbab09fb2280611965
parentec6a3df1c008d9e8664e53b0363f6847c5c0dc3f
oprofile, s390: Enhance OProfile to support System zs hardware sampling feature

OProfile is enhanced to export all files for controlling System z's
hardware sampling, and to invoke hwsampler exported functions to
initialize and use System z's hardware sampling.

The patch invokes hwsampler_setup() during oprofile init and exports
following hwsampler files under oprofilefs if hwsampler's setup
succeeded:

A new directory for hardware sampling based files

 /dev/oprofile/hwsampling/

The userland daemon must explicitly write to the following files
to disable (or enable) hardware based sampling

 /dev/oprofile/hwsampling/hwsampler

to modify the actual sampling rate

 /dev/oprofile/hwsampling/hw_interval

to modify the amount of sampling memory (measured in 4K pages)

 /dev/oprofile/hwsampling/hw_sdbt_blocks

The following files are read only and show
the possible minimum sampling rate

 /dev/oprofile/hwsampling/hw_min_interval

the possible maximum sampling rate

 /dev/oprofile/hwsampling/hw_max_interval

The patch splits the oprofile_timer_[init/exit] function so that it
can be also called through user context (oprofilefs) to avoid kernel
oops.

Applied with following changes:
* whitespace changes in Makefile and timer_int.c

Signed-off-by: Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Signed-off-by: Maran Pakkirisamy <maranp@linux.vnet.ibm.com>
Signed-off-by: Heinz Graalfs <graalfs@linux.vnet.ibm.com>
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Robert Richter <robert.richter@amd.com>
arch/s390/oprofile/Makefile
arch/s390/oprofile/hwsampler_files.c [new file with mode: 0644]
arch/s390/oprofile/init.c
drivers/oprofile/oprof.c
drivers/oprofile/oprof.h
drivers/oprofile/timer_int.c
include/linux/oprofile.h