mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-13 01:46:52 +07:00
997dbb4967
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>
32 lines
722 B
C
32 lines
722 B
C
/**
|
|
* arch/s390/oprofile/init.c
|
|
*
|
|
* S390 Version
|
|
* Copyright (C) 2003 IBM Deutschland Entwicklung GmbH, IBM Corporation
|
|
* Author(s): Thomas Spatzier (tspat@de.ibm.com)
|
|
*
|
|
* @remark Copyright 2002 OProfile authors
|
|
*/
|
|
|
|
#include <linux/oprofile.h>
|
|
#include <linux/init.h>
|
|
#include <linux/errno.h>
|
|
#include <linux/fs.h>
|
|
|
|
extern int oprofile_hwsampler_init(struct oprofile_operations* ops);
|
|
extern void oprofile_hwsampler_exit(void);
|
|
|
|
extern void s390_backtrace(struct pt_regs * const regs, unsigned int depth);
|
|
|
|
int __init oprofile_arch_init(struct oprofile_operations* ops)
|
|
{
|
|
ops->backtrace = s390_backtrace;
|
|
|
|
return oprofile_hwsampler_init(ops);
|
|
}
|
|
|
|
void oprofile_arch_exit(void)
|
|
{
|
|
oprofile_hwsampler_exit();
|
|
}
|