Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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: Mark Rutland <mark.rutland@arm.com>
[will: augmented Kconfig help slightly]
Signed-off-by: Will Deacon <will.deacon@arm.com>

authored by

Mark Rutland and committed by
Will Deacon
fa8ad788 bc1e3c46

+33 -17
+4 -2
MAINTAINERS
··· 799 799 ARM PMU PROFILING AND DEBUGGING 800 800 M: Will Deacon <will.deacon@arm.com> 801 801 S: Maintained 802 - F: arch/arm/kernel/perf_event* 802 + F: arch/arm/kernel/perf_* 803 803 F: arch/arm/oprofile/common.c 804 - F: arch/arm/include/asm/pmu.h 805 804 F: arch/arm/kernel/hw_breakpoint.c 806 805 F: arch/arm/include/asm/hw_breakpoint.h 806 + F: arch/arm/include/asm/perf_event.h 807 + F: drivers/perf/arm_pmu.c 808 + F: include/linux/perf/arm_pmu.h 807 809 808 810 ARM PORT 809 811 M: Russell King <linux@arm.linux.org.uk>
+2 -6
arch/arm/Kconfig
··· 1701 1701 user-space 2nd level page tables to reside in high memory. 1702 1702 1703 1703 config HW_PERF_EVENTS 1704 - bool "Enable hardware performance counter support for perf events" 1705 - depends on PERF_EVENTS 1706 - default y 1707 - help 1708 - Enable hardware performance counter support for perf events. If 1709 - disabled, perf events will use software events only. 1704 + def_bool y 1705 + depends on ARM_PMU 1710 1706 1711 1707 config SYS_SUPPORTS_HUGETLBFS 1712 1708 def_bool y
+2 -2
arch/arm/include/asm/pmu.h include/linux/perf/arm_pmu.h
··· 30 30 irq_handler_t pmu_handler); 31 31 }; 32 32 33 - #ifdef CONFIG_HW_PERF_EVENTS 33 + #ifdef CONFIG_ARM_PMU 34 34 35 35 /* 36 36 * The ARMv7 CPU PMU supports up to 32 event counters. ··· 149 149 const struct of_device_id *of_table, 150 150 const struct pmu_probe_info *probe_table); 151 151 152 - #endif /* CONFIG_HW_PERF_EVENTS */ 152 + #endif /* CONFIG_ARM_PMU */ 153 153 154 154 #endif /* __ARM_PMU_H__ */
+1 -2
arch/arm/kernel/Makefile
··· 71 71 obj-$(CONFIG_CPU_PJ4B) += pj4-cp0.o 72 72 obj-$(CONFIG_IWMMXT) += iwmmxt.o 73 73 obj-$(CONFIG_PERF_EVENTS) += perf_regs.o perf_callchain.o 74 - obj-$(CONFIG_HW_PERF_EVENTS) += perf_event.o \ 75 - perf_event_xscale.o perf_event_v6.o \ 74 + obj-$(CONFIG_HW_PERF_EVENTS) += perf_event_xscale.o perf_event_v6.o \ 76 75 perf_event_v7.o 77 76 CFLAGS_pj4-cp0.o := -marm 78 77 AFLAGS_iwmmxt.o := -Wa,-mcpu=iwmmxt
+1 -1
arch/arm/kernel/perf_event.c drivers/perf/arm_pmu.c
··· 16 16 #include <linux/export.h> 17 17 #include <linux/kernel.h> 18 18 #include <linux/of_device.h> 19 + #include <linux/perf/arm_pmu.h> 19 20 #include <linux/platform_device.h> 20 21 #include <linux/slab.h> 21 22 #include <linux/spinlock.h> ··· 25 24 26 25 #include <asm/cputype.h> 27 26 #include <asm/irq_regs.h> 28 - #include <asm/pmu.h> 29 27 30 28 static int 31 29 armpmu_map_cache_event(const unsigned (*cache_map)
+1 -1
arch/arm/kernel/perf_event_v6.c
··· 34 34 35 35 #include <asm/cputype.h> 36 36 #include <asm/irq_regs.h> 37 - #include <asm/pmu.h> 38 37 39 38 #include <linux/of.h> 39 + #include <linux/perf/arm_pmu.h> 40 40 #include <linux/platform_device.h> 41 41 42 42 enum armv6_perf_types {
+1 -1
arch/arm/kernel/perf_event_v7.c
··· 21 21 #include <asm/cp15.h> 22 22 #include <asm/cputype.h> 23 23 #include <asm/irq_regs.h> 24 - #include <asm/pmu.h> 25 24 #include <asm/vfp.h> 26 25 #include "../vfp/vfpinstr.h" 27 26 28 27 #include <linux/of.h> 28 + #include <linux/perf/arm_pmu.h> 29 29 #include <linux/platform_device.h> 30 30 31 31 /*
+1 -1
arch/arm/kernel/perf_event_xscale.c
··· 16 16 17 17 #include <asm/cputype.h> 18 18 #include <asm/irq_regs.h> 19 - #include <asm/pmu.h> 20 19 21 20 #include <linux/of.h> 21 + #include <linux/perf/arm_pmu.h> 22 22 #include <linux/platform_device.h> 23 23 24 24 enum xscale_perf_types {
+1 -1
arch/arm/mach-ux500/cpu-db8500.c
··· 20 20 #include <linux/mfd/dbx500-prcmu.h> 21 21 #include <linux/of.h> 22 22 #include <linux/of_platform.h> 23 + #include <linux/perf/arm_pmu.h> 23 24 #include <linux/regulator/machine.h> 24 25 #include <linux/random.h> 25 26 26 - #include <asm/pmu.h> 27 27 #include <asm/mach/map.h> 28 28 29 29 #include "setup.h"
+2
drivers/Kconfig
··· 176 176 177 177 source "drivers/mcb/Kconfig" 178 178 179 + source "drivers/perf/Kconfig" 180 + 179 181 source "drivers/ras/Kconfig" 180 182 181 183 source "drivers/thunderbolt/Kconfig"
+1
drivers/Makefile
··· 161 161 obj-$(CONFIG_FMC) += fmc/ 162 162 obj-$(CONFIG_POWERCAP) += powercap/ 163 163 obj-$(CONFIG_MCB) += mcb/ 164 + obj-$(CONFIG_PERF_EVENTS) += perf/ 164 165 obj-$(CONFIG_RAS) += ras/ 165 166 obj-$(CONFIG_THUNDERBOLT) += thunderbolt/ 166 167 obj-$(CONFIG_CORESIGHT) += hwtracing/coresight/
+15
drivers/perf/Kconfig
··· 1 + # 2 + # Performance Monitor Drivers 3 + # 4 + 5 + menu "Performance monitor support" 6 + 7 + config ARM_PMU 8 + depends on PERF_EVENTS && ARM 9 + bool "ARM PMU framework" 10 + default y 11 + help 12 + Say y if you want to use CPU performance monitors on ARM-based 13 + systems. 14 + 15 + endmenu
+1
drivers/perf/Makefile
··· 1 + obj-$(CONFIG_ARM_PMU) += arm_pmu.o