|
@@ -20,6 +20,7 @@
|
|
#include <linux/cpumask.h>
|
|
#include <linux/cpumask.h>
|
|
#include <linux/kthread.h>
|
|
#include <linux/kthread.h>
|
|
#include <linux/wait.h>
|
|
#include <linux/wait.h>
|
|
|
|
+#include <linux/time.h>
|
|
#include <linux/clockchips.h>
|
|
#include <linux/clockchips.h>
|
|
#include <linux/hrtimer.h>
|
|
#include <linux/hrtimer.h>
|
|
#include <linux/tick.h>
|
|
#include <linux/tick.h>
|
|
@@ -33,10 +34,14 @@
|
|
#include <linux/moduleparam.h>
|
|
#include <linux/moduleparam.h>
|
|
|
|
|
|
#include <asm/smp_plat.h>
|
|
#include <asm/smp_plat.h>
|
|
|
|
+#include <asm/cputype.h>
|
|
#include <asm/suspend.h>
|
|
#include <asm/suspend.h>
|
|
#include <asm/mcpm.h>
|
|
#include <asm/mcpm.h>
|
|
#include <asm/bL_switcher.h>
|
|
#include <asm/bL_switcher.h>
|
|
|
|
|
|
|
|
+#define CREATE_TRACE_POINTS
|
|
|
|
+#include <trace/events/power_cpu_migrate.h>
|
|
|
|
+
|
|
|
|
|
|
/*
|
|
/*
|
|
* Use our own MPIDR accessors as the generic ones in asm/cputype.h have
|
|
* Use our own MPIDR accessors as the generic ones in asm/cputype.h have
|
|
@@ -51,6 +56,16 @@ static int read_mpidr(void)
|
|
return id & MPIDR_HWID_BITMASK;
|
|
return id & MPIDR_HWID_BITMASK;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * Get a global nanosecond time stamp for tracing.
|
|
|
|
+ */
|
|
|
|
+static s64 get_ns(void)
|
|
|
|
+{
|
|
|
|
+ struct timespec ts;
|
|
|
|
+ getnstimeofday(&ts);
|
|
|
|
+ return timespec_to_ns(&ts);
|
|
|
|
+}
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* bL switcher core code.
|
|
* bL switcher core code.
|
|
*/
|
|
*/
|
|
@@ -208,6 +223,7 @@ static int bL_switch_to(unsigned int new_cluster_id)
|
|
*/
|
|
*/
|
|
local_irq_disable();
|
|
local_irq_disable();
|
|
local_fiq_disable();
|
|
local_fiq_disable();
|
|
|
|
+ trace_cpu_migrate_begin(get_ns(), ob_mpidr);
|
|
|
|
|
|
/* redirect GIC's SGIs to our counterpart */
|
|
/* redirect GIC's SGIs to our counterpart */
|
|
gic_migrate_target(bL_gic_id[ib_cpu][ib_cluster]);
|
|
gic_migrate_target(bL_gic_id[ib_cpu][ib_cluster]);
|
|
@@ -250,6 +266,7 @@ static int bL_switch_to(unsigned int new_cluster_id)
|
|
tdev->evtdev->next_event, 1);
|
|
tdev->evtdev->next_event, 1);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ trace_cpu_migrate_finish(get_ns(), ib_mpidr);
|
|
local_fiq_enable();
|
|
local_fiq_enable();
|
|
local_irq_enable();
|
|
local_irq_enable();
|
|
|
|
|