Commit fa8ad788 authored by Mark Rutland's avatar Mark Rutland Committed by Will Deacon

arm: perf: factor arm_pmu core out to drivers

To enable sharing of the arm_pmu code with arm64, this patch factors it
out to drivers/perf/. A new drivers/perf directory is added for
performance monitor drivers to live under.

MAINTAINERS is updated accordingly. Files added previously without a
corresponsing MAINTAINERS update (perf_regs.c, perf_callchain.c, and
perf_event.h) are also added.

Cc: Arnaldo Carvalho de Melo <acme@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Will Deacon <will.deacon@arm.com>
Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
[will: augmented Kconfig help slightly]
Signed-off-by: default avatarWill Deacon <will.deacon@arm.com>
parent bc1e3c46
...@@ -799,11 +799,13 @@ F: arch/arm/include/asm/floppy.h ...@@ -799,11 +799,13 @@ F: arch/arm/include/asm/floppy.h
ARM PMU PROFILING AND DEBUGGING ARM PMU PROFILING AND DEBUGGING
M: Will Deacon <will.deacon@arm.com> M: Will Deacon <will.deacon@arm.com>
S: Maintained S: Maintained
F: arch/arm/kernel/perf_event* F: arch/arm/kernel/perf_*
F: arch/arm/oprofile/common.c F: arch/arm/oprofile/common.c
F: arch/arm/include/asm/pmu.h
F: arch/arm/kernel/hw_breakpoint.c F: arch/arm/kernel/hw_breakpoint.c
F: arch/arm/include/asm/hw_breakpoint.h F: arch/arm/include/asm/hw_breakpoint.h
F: arch/arm/include/asm/perf_event.h
F: drivers/perf/arm_pmu.c
F: include/linux/perf/arm_pmu.h
ARM PORT ARM PORT
M: Russell King <linux@arm.linux.org.uk> M: Russell King <linux@arm.linux.org.uk>
......
...@@ -1701,12 +1701,8 @@ config HIGHPTE ...@@ -1701,12 +1701,8 @@ config HIGHPTE
user-space 2nd level page tables to reside in high memory. user-space 2nd level page tables to reside in high memory.
config HW_PERF_EVENTS config HW_PERF_EVENTS
bool "Enable hardware performance counter support for perf events" def_bool y
depends on PERF_EVENTS depends on ARM_PMU
default y
help
Enable hardware performance counter support for perf events. If
disabled, perf events will use software events only.
config SYS_SUPPORTS_HUGETLBFS config SYS_SUPPORTS_HUGETLBFS
def_bool y def_bool y
......
...@@ -71,8 +71,7 @@ obj-$(CONFIG_CPU_PJ4) += pj4-cp0.o ...@@ -71,8 +71,7 @@ obj-$(CONFIG_CPU_PJ4) += pj4-cp0.o
obj-$(CONFIG_CPU_PJ4B) += pj4-cp0.o obj-$(CONFIG_CPU_PJ4B) += pj4-cp0.o
obj-$(CONFIG_IWMMXT) += iwmmxt.o obj-$(CONFIG_IWMMXT) += iwmmxt.o
obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o
obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o \ obj-$(CONFIG_HW_PERF_EVENTS) += perf_event_xscale.o perf_event_v6.o \
perf_event_xscale.o perf_event_v6.o \
perf_event_v7.o perf_event_v7.o
CFLAGS_pj4-cp0.o := -marm CFLAGS_pj4-cp0.o := -marm
AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt
......
...@@ -34,9 +34,9 @@ ...@@ -34,9 +34,9 @@
#include <asm/cputype.h> #include <asm/cputype.h>
#include <asm/irq_regs.h> #include <asm/irq_regs.h>
#include <asm/pmu.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/perf/arm_pmu.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
enum armv6_perf_types { enum armv6_perf_types {
......
...@@ -21,11 +21,11 @@ ...@@ -21,11 +21,11 @@
#include <asm/cp15.h> #include <asm/cp15.h>
#include <asm/cputype.h> #include <asm/cputype.h>
#include <asm/irq_regs.h> #include <asm/irq_regs.h>
#include <asm/pmu.h>
#include <asm/vfp.h> #include <asm/vfp.h>
#include "../vfp/vfpinstr.h" #include "../vfp/vfpinstr.h"
#include <linux/of.h> #include <linux/of.h>
#include <linux/perf/arm_pmu.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
/* /*
......
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
#include <asm/cputype.h> #include <asm/cputype.h>
#include <asm/irq_regs.h> #include <asm/irq_regs.h>
#include <asm/pmu.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/perf/arm_pmu.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
enum xscale_perf_types { enum xscale_perf_types {
......
...@@ -20,10 +20,10 @@ ...@@ -20,10 +20,10 @@
#include <linux/mfd/dbx500-prcmu.h> #include <linux/mfd/dbx500-prcmu.h>
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
#include <linux/perf/arm_pmu.h>
#include <linux/regulator/machine.h> #include <linux/regulator/machine.h>
#include <linux/random.h> #include <linux/random.h>
#include <asm/pmu.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
#include "setup.h" #include "setup.h"
......
...@@ -176,6 +176,8 @@ source "drivers/powercap/Kconfig" ...@@ -176,6 +176,8 @@ source "drivers/powercap/Kconfig"
source "drivers/mcb/Kconfig" source "drivers/mcb/Kconfig"
source "drivers/perf/Kconfig"
source "drivers/ras/Kconfig" source "drivers/ras/Kconfig"
source "drivers/thunderbolt/Kconfig" source "drivers/thunderbolt/Kconfig"
......
...@@ -161,6 +161,7 @@ obj-$(CONFIG_NTB) += ntb/ ...@@ -161,6 +161,7 @@ obj-$(CONFIG_NTB) += ntb/
obj-$(CONFIG_FMC) += fmc/ obj-$(CONFIG_FMC) += fmc/
obj-$(CONFIG_POWERCAP) += powercap/ obj-$(CONFIG_POWERCAP) += powercap/
obj-$(CONFIG_MCB) += mcb/ obj-$(CONFIG_MCB) += mcb/
obj-$(CONFIG_PERF_EVENTS) += perf/
obj-$(CONFIG_RAS) += ras/ obj-$(CONFIG_RAS) += ras/
obj-$(CONFIG_THUNDERBOLT) += thunderbolt/ obj-$(CONFIG_THUNDERBOLT) += thunderbolt/
obj-$(CONFIG_CORESIGHT) += hwtracing/coresight/ obj-$(CONFIG_CORESIGHT) += hwtracing/coresight/
......
#
# Performance Monitor Drivers
#
menu "Performance monitor support"
config ARM_PMU
depends on PERF_EVENTS && ARM
bool "ARM PMU framework"
default y
help
Say y if you want to use CPU performance monitors on ARM-based
systems.
endmenu
obj-$(CONFIG_ARM_PMU) += arm_pmu.o
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include <linux/export.h> #include <linux/export.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/perf/arm_pmu.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
...@@ -24,7 +25,6 @@ ...@@ -24,7 +25,6 @@
#include <asm/cputype.h> #include <asm/cputype.h>
#include <asm/irq_regs.h> #include <asm/irq_regs.h>
#include <asm/pmu.h>
static int static int
armpmu_map_cache_event(const unsigned (*cache_map) armpmu_map_cache_event(const unsigned (*cache_map)
......
...@@ -30,7 +30,7 @@ struct arm_pmu_platdata { ...@@ -30,7 +30,7 @@ struct arm_pmu_platdata {
irq_handler_t pmu_handler); irq_handler_t pmu_handler);
}; };
#ifdef CONFIG_HW_PERF_EVENTS #ifdef CONFIG_ARM_PMU
/* /*
* The ARMv7 CPU PMU supports up to 32 event counters. * The ARMv7 CPU PMU supports up to 32 event counters.
...@@ -149,6 +149,6 @@ int arm_pmu_device_probe(struct platform_device *pdev, ...@@ -149,6 +149,6 @@ int arm_pmu_device_probe(struct platform_device *pdev,
const struct of_device_id *of_table, const struct of_device_id *of_table,
const struct pmu_probe_info *probe_table); const struct pmu_probe_info *probe_table);
#endif /* CONFIG_HW_PERF_EVENTS */ #endif /* CONFIG_ARM_PMU */
#endif /* __ARM_PMU_H__ */ #endif /* __ARM_PMU_H__ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment