msm: perf: initialise krait perf L2 counter enables
Clear the L2 counter enables at initialisation.
They are undefined out of reset.
Change-Id: I957106012625ae09efec47d4f657381963d87a5a
Signed-off-by: Neil Leeder <nleeder@codeaurora.org>
diff --git a/arch/arm/mach-msm/perf_debug.c b/arch/arm/mach-msm/perf_debug.c
index 74678ae..a072878 100644
--- a/arch/arm/mach-msm/perf_debug.c
+++ b/arch/arm/mach-msm/perf_debug.c
@@ -34,6 +34,7 @@
"14 Perf: keep events across hotplug\n"
"15 Perf: bring CPU online if needed when disabling irq\n"
"16 Perf: Support sw events across hotplug\n"
+ "17 msm: perf: initialise krait perf L2 counter enables\n"
;
static ssize_t desc_read(struct file *fp, char __user *buf,
diff --git a/arch/arm/mach-msm/perf_event_msm_krait_l2.c b/arch/arm/mach-msm/perf_event_msm_krait_l2.c
index 60d6c83..a7c4287 100644
--- a/arch/arm/mach-msm/perf_event_msm_krait_l2.c
+++ b/arch/arm/mach-msm/perf_event_msm_krait_l2.c
@@ -547,6 +547,8 @@
static int __init register_krait_l2_pmu_driver(void)
{
+ int i;
+
/* Reset all ctrs */
set_l2_indirect_reg(L2PMCR, L2PMCR_RESET_ALL);
@@ -568,6 +570,11 @@
/* Avoid spurious interrupt if any */
get_reset_pmovsr();
+ /* Clear counter enables */
+ disable_counter(l2_cycle_ctr_idx);
+ for (i = 0; i < total_l2_ctrs; i++)
+ disable_counter(i);
+
return platform_driver_register(&krait_l2_pmu_driver);
}
device_initcall(register_krait_l2_pmu_driver);