mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 06:48:13 +07:00
powerpc/perf: init pmu from core-book3s
Currenty pmu driver file for each ppc64 generation processor has a __init call in itself. Refactor the code by moving the __init call to core-books.c. This also clean's up compat mode pmu driver registration. Suggested-by: Michael Ellerman <mpe@ellerman.id.au> Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com> [mpe: Use SPDX tag for license] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
1e496391a8
commit
708597daf2
@ -22,6 +22,10 @@
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/code-patching.h>
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
#include "internal.h"
|
||||
#endif
|
||||
|
||||
#define BHRB_MAX_ENTRIES 32
|
||||
#define BHRB_TARGET 0x0000000000000002
|
||||
#define BHRB_PREDICTION 0x0000000000000001
|
||||
@ -2294,3 +2298,27 @@ int register_power_pmu(struct power_pmu *pmu)
|
||||
power_pmu_prepare_cpu, NULL);
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PPC64
|
||||
static int __init init_ppc64_pmu(void)
|
||||
{
|
||||
/* run through all the pmu drivers one at a time */
|
||||
if (!init_power5_pmu())
|
||||
return 0;
|
||||
else if (!init_power5p_pmu())
|
||||
return 0;
|
||||
else if (!init_power6_pmu())
|
||||
return 0;
|
||||
else if (!init_power7_pmu())
|
||||
return 0;
|
||||
else if (!init_power8_pmu())
|
||||
return 0;
|
||||
else if (!init_power9_pmu())
|
||||
return 0;
|
||||
else if (!init_ppc970_pmu())
|
||||
return 0;
|
||||
else
|
||||
return -ENODEV;
|
||||
}
|
||||
early_initcall(init_ppc64_pmu);
|
||||
#endif
|
||||
|
11
arch/powerpc/perf/internal.h
Normal file
11
arch/powerpc/perf/internal.h
Normal file
@ -0,0 +1,11 @@
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
//
|
||||
// Copyright 2019 Madhavan Srinivasan, IBM Corporation.
|
||||
|
||||
extern int init_ppc970_pmu(void);
|
||||
extern int init_power5_pmu(void);
|
||||
extern int init_power5p_pmu(void);
|
||||
extern int init_power6_pmu(void);
|
||||
extern int init_power7_pmu(void);
|
||||
extern int init_power8_pmu(void);
|
||||
extern int init_power9_pmu(void);
|
@ -677,7 +677,7 @@ static struct power_pmu power5p_pmu = {
|
||||
.cache_events = &power5p_cache_events,
|
||||
};
|
||||
|
||||
static int __init init_power5p_pmu(void)
|
||||
int init_power5p_pmu(void)
|
||||
{
|
||||
if (!cur_cpu_spec->oprofile_cpu_type ||
|
||||
(strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power5+")
|
||||
@ -686,5 +686,3 @@ static int __init init_power5p_pmu(void)
|
||||
|
||||
return register_power_pmu(&power5p_pmu);
|
||||
}
|
||||
|
||||
early_initcall(init_power5p_pmu);
|
||||
|
@ -618,7 +618,7 @@ static struct power_pmu power5_pmu = {
|
||||
.flags = PPMU_HAS_SSLOT,
|
||||
};
|
||||
|
||||
static int __init init_power5_pmu(void)
|
||||
int init_power5_pmu(void)
|
||||
{
|
||||
if (!cur_cpu_spec->oprofile_cpu_type ||
|
||||
strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power5"))
|
||||
@ -626,5 +626,3 @@ static int __init init_power5_pmu(void)
|
||||
|
||||
return register_power_pmu(&power5_pmu);
|
||||
}
|
||||
|
||||
early_initcall(init_power5_pmu);
|
||||
|
@ -540,7 +540,7 @@ static struct power_pmu power6_pmu = {
|
||||
.cache_events = &power6_cache_events,
|
||||
};
|
||||
|
||||
static int __init init_power6_pmu(void)
|
||||
int init_power6_pmu(void)
|
||||
{
|
||||
if (!cur_cpu_spec->oprofile_cpu_type ||
|
||||
strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power6"))
|
||||
@ -548,5 +548,3 @@ static int __init init_power6_pmu(void)
|
||||
|
||||
return register_power_pmu(&power6_pmu);
|
||||
}
|
||||
|
||||
early_initcall(init_power6_pmu);
|
||||
|
@ -445,7 +445,7 @@ static struct power_pmu power7_pmu = {
|
||||
.cache_events = &power7_cache_events,
|
||||
};
|
||||
|
||||
static int __init init_power7_pmu(void)
|
||||
int init_power7_pmu(void)
|
||||
{
|
||||
if (!cur_cpu_spec->oprofile_cpu_type ||
|
||||
strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power7"))
|
||||
@ -456,5 +456,3 @@ static int __init init_power7_pmu(void)
|
||||
|
||||
return register_power_pmu(&power7_pmu);
|
||||
}
|
||||
|
||||
early_initcall(init_power7_pmu);
|
||||
|
@ -379,7 +379,7 @@ static struct power_pmu power8_pmu = {
|
||||
.bhrb_nr = 32,
|
||||
};
|
||||
|
||||
static int __init init_power8_pmu(void)
|
||||
int init_power8_pmu(void)
|
||||
{
|
||||
int rc;
|
||||
|
||||
@ -399,4 +399,3 @@ static int __init init_power8_pmu(void)
|
||||
|
||||
return 0;
|
||||
}
|
||||
early_initcall(init_power8_pmu);
|
||||
|
@ -437,7 +437,7 @@ static struct power_pmu power9_pmu = {
|
||||
.bhrb_nr = 32,
|
||||
};
|
||||
|
||||
static int __init init_power9_pmu(void)
|
||||
int init_power9_pmu(void)
|
||||
{
|
||||
int rc = 0;
|
||||
unsigned int pvr = mfspr(SPRN_PVR);
|
||||
@ -467,4 +467,3 @@ static int __init init_power9_pmu(void)
|
||||
|
||||
return 0;
|
||||
}
|
||||
early_initcall(init_power9_pmu);
|
||||
|
@ -490,7 +490,7 @@ static struct power_pmu ppc970_pmu = {
|
||||
.flags = PPMU_NO_SIPR | PPMU_NO_CONT_SAMPLING,
|
||||
};
|
||||
|
||||
static int __init init_ppc970_pmu(void)
|
||||
int init_ppc970_pmu(void)
|
||||
{
|
||||
if (!cur_cpu_spec->oprofile_cpu_type ||
|
||||
(strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/970")
|
||||
@ -499,5 +499,3 @@ static int __init init_ppc970_pmu(void)
|
||||
|
||||
return register_power_pmu(&ppc970_pmu);
|
||||
}
|
||||
|
||||
early_initcall(init_ppc970_pmu);
|
||||
|
Loading…
Reference in New Issue
Block a user