Commit 708597da authored by Madhavan Srinivasan's avatar Madhavan Srinivasan Committed by Michael Ellerman
Browse files

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: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarMadhavan Srinivasan <maddy@linux.vnet.ibm.com>
[mpe: Use SPDX tag for license]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 1e496391
Loading
Loading
Loading
Loading
+28 −0
Original line number Diff line number Diff line
@@ -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 −0
Original line number Diff line number Diff line
// 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);
+1 −3
Original line number Diff line number Diff line
@@ -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);
+1 −3
Original line number Diff line number Diff line
@@ -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);
+1 −3
Original line number Diff line number Diff line
@@ -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);
Loading