summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/pm-t3.c
diff options
context:
space:
mode:
authorAntti P Miettinen <amiettinen@nvidia.com>2013-08-21 14:16:37 +0300
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-14 13:43:17 -0700
commit08c4372baa2a9d6775c88e5c8a49699f15c46436 (patch)
treee265cf80c83121a17578f65bb75d3d12ed036607 /arch/arm/mach-tegra/pm-t3.c
parent4097de083e55e9e5fe61177ee1c458b5bfe1b19a (diff)
ARM: Tegra: Move cluster switch tracepoints
Move tracepoints for measuring cluster switch latency to account for the whole interrupts-disabled time. Change-Id: Ib49cc54078d2e284c34b55dd6e2dc57431706b78 Signed-off-by: Antti P Miettinen <amiettinen@nvidia.com> Reviewed-on: http://git-master/r/264800 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Juha Tukkinen <jtukkinen@nvidia.com>
Diffstat (limited to 'arch/arm/mach-tegra/pm-t3.c')
-rw-r--r--arch/arm/mach-tegra/pm-t3.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/pm-t3.c b/arch/arm/mach-tegra/pm-t3.c
index 6d4e8937428a..115493580e75 100644
--- a/arch/arm/mach-tegra/pm-t3.c
+++ b/arch/arm/mach-tegra/pm-t3.c
@@ -29,6 +29,7 @@
#include <linux/clockchips.h>
#include <linux/cpu_pm.h>
#include <linux/irqchip/arm-gic.h>
+#include <linux/sched.h>
#include <mach/irqs.h>
#include <mach/io_dpd.h>
@@ -47,6 +48,9 @@
#include "tegra3_emc.h"
#include "dvfs.h"
+#define CREATE_TRACE_POINTS
+#include <trace/events/nvpower.h>
+
#ifdef CONFIG_TEGRA_CLUSTER_CONTROL
#define CAR_CCLK_BURST_POLICY \
(IO_ADDRESS(TEGRA_CLK_RESET_BASE) + 0x20)
@@ -481,6 +485,10 @@ int tegra_cluster_control(unsigned int us, unsigned int flags)
}
local_irq_save(irq_flags);
+ if (is_idle_task(current))
+ trace_nvcpu_cluster_rcuidle(NVPOWER_CPU_CLUSTER_START);
+ else
+ trace_nvcpu_cluster(NVPOWER_CPU_CLUSTER_START);
tegra_cluster_switch_time(flags, tegra_cluster_switch_time_id_start);
#ifdef CONFIG_TEGRA_VIRTUAL_CPUID
@@ -532,6 +540,10 @@ int tegra_cluster_control(unsigned int us, unsigned int flags)
}
}
tegra_cluster_switch_time(flags, tegra_cluster_switch_time_id_end);
+ if (is_idle_task(current))
+ trace_nvcpu_cluster_rcuidle(NVPOWER_CPU_CLUSTER_DONE);
+ else
+ trace_nvcpu_cluster(NVPOWER_CPU_CLUSTER_DONE);
local_irq_restore(irq_flags);
DEBUG_CLUSTER(("%s: %s\r\n", __func__, is_lp_cluster() ? "LP" : "G"));