mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-11-09 19:10:45 +01:00
Add extended regs to sample_reg_mask in the tool side to use with `-I?` option. Perf tools side uses extended mask to display the platform supported register names (with -I? option) to the user and also send this mask to the kernel to capture the extended registers in each sample. Hence decide the mask value based on the processor version. Currently definitions for `mfspr`, `SPRN_PVR` are part of `arch/powerpc/util/header.c`. Move this to a header file so that these definitions can be re-used in other source files as well. Signed-off-by: Anju T Sudhakar <[email protected]> Reviewed-by: Kajol Jain <[email protected]> Reviewed-by: Madhavan Srinivasan <[email protected]> Reviewed--by: Ravi Bangoria <[email protected]> Tested-by: Ravi Bangoria <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: Michael Neuling <[email protected]> <[email protected]> Cc: Ravi Bangoria <[email protected]> Cc: [email protected] [Decide extended mask at run time based on platform] Signed-off-by: Athira Jajeev <[email protected]> Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
48 lines
884 B
C
48 lines
884 B
C
// SPDX-License-Identifier: GPL-2.0
|
|
#include <sys/types.h>
|
|
#include <errno.h>
|
|
#include <unistd.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <linux/stringify.h>
|
|
#include "header.h"
|
|
#include "utils_header.h"
|
|
#include "metricgroup.h"
|
|
#include <api/fs/fs.h>
|
|
|
|
int
|
|
get_cpuid(char *buffer, size_t sz)
|
|
{
|
|
unsigned long pvr;
|
|
int nb;
|
|
|
|
pvr = mfspr(SPRN_PVR);
|
|
|
|
nb = scnprintf(buffer, sz, "%lu,%lu$", PVR_VER(pvr), PVR_REV(pvr));
|
|
|
|
/* look for end marker to ensure the entire data fit */
|
|
if (strchr(buffer, '$')) {
|
|
buffer[nb-1] = '\0';
|
|
return 0;
|
|
}
|
|
return ENOBUFS;
|
|
}
|
|
|
|
char *
|
|
get_cpuid_str(struct perf_pmu *pmu __maybe_unused)
|
|
{
|
|
char *bufp;
|
|
|
|
if (asprintf(&bufp, "%.8lx", mfspr(SPRN_PVR)) < 0)
|
|
bufp = NULL;
|
|
|
|
return bufp;
|
|
}
|
|
|
|
int arch_get_runtimeparam(void)
|
|
{
|
|
int count;
|
|
return sysfs__read_int("/devices/hv_24x7/interface/sockets", &count) < 0 ? 1 : count;
|
|
}
|