Merge remote-tracking branch 'lsk/v3.10/topic/big.LITTLE' into linux-linaro-lsk

This commit is contained in:
Mark Brown
2013-10-11 19:26:24 +01:00
8 changed files with 515 additions and 86 deletions

View File

@@ -0,0 +1,100 @@
#undef TRACE_SYSTEM
#define TRACE_SYSTEM arm-ipi
#if !defined(_TRACE_ARM_IPI_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_ARM_IPI_H
#include <linux/tracepoint.h>
#define show_arm_ipi_name(val) \
__print_symbolic(val, \
{ 0, "IPI_WAKEUP" }, \
{ 1, "IPI_TIMER" }, \
{ 2, "IPI_RESCHEDULE" }, \
{ 3, "IPI_CALL_FUNC" }, \
{ 4, "IPI_CALL_FUNC_SINGLE" }, \
{ 5, "IPI_CPU_STOP" }, \
{ 6, "IPI_COMPLETION" }, \
{ 7, "IPI_CPU_BACKTRACE" })
DECLARE_EVENT_CLASS(arm_ipi,
TP_PROTO(unsigned int ipi_nr),
TP_ARGS(ipi_nr),
TP_STRUCT__entry(
__field( unsigned int, ipi )
),
TP_fast_assign(
__entry->ipi = ipi_nr;
),
TP_printk("ipi=%u [action=%s]", __entry->ipi,
show_arm_ipi_name(__entry->ipi))
);
/**
* arm_ipi_entry - called in the arm-generic ipi handler immediately before
* entering ipi-type handler
* @ipi_nr: ipi number
*
* When used in combination with the arm_ipi_exit tracepoint
* we can determine the ipi handler runtine.
*/
DEFINE_EVENT(arm_ipi, arm_ipi_entry,
TP_PROTO(unsigned int ipi_nr),
TP_ARGS(ipi_nr)
);
/**
* arm_ipi_exit - called in the arm-generic ipi handler immediately
* after the ipi-type handler returns
* @ipi_nr: ipi number
*
* When used in combination with the arm_ipi_entry tracepoint
* we can determine the ipi handler runtine.
*/
DEFINE_EVENT(arm_ipi, arm_ipi_exit,
TP_PROTO(unsigned int ipi_nr),
TP_ARGS(ipi_nr)
);
/**
* arm_ipi_send - called as the ipi target mask is built, immediately
* before the register is written
* @ipi_nr: ipi number
* @dest: cpu to send to
*
* When used in combination with the arm_ipi_entry tracepoint
* we can determine the ipi raise to run latency.
*/
TRACE_EVENT(arm_ipi_send,
TP_PROTO(unsigned int ipi_nr, int dest),
TP_ARGS(ipi_nr, dest),
TP_STRUCT__entry(
__field( unsigned int, ipi )
__field( int , dest )
),
TP_fast_assign(
__entry->ipi = ipi_nr;
__entry->dest = dest;
),
TP_printk("dest=%d ipi=%u [action=%s]", __entry->dest,
__entry->ipi, show_arm_ipi_name(__entry->ipi))
);
#endif /* _TRACE_ARM_IPI_H */
/* This part must be outside protection */
#include <trace/define_trace.h>

View File

@@ -530,6 +530,29 @@ TRACE_EVENT(sched_rq_runnable_load,
__entry->load)
);
TRACE_EVENT(sched_rq_nr_running,
TP_PROTO(int cpu, unsigned int nr_running, int nr_iowait),
TP_ARGS(cpu, nr_running, nr_iowait),
TP_STRUCT__entry(
__field(int, cpu)
__field(unsigned int, nr_running)
__field(int, nr_iowait)
),
TP_fast_assign(
__entry->cpu = cpu;
__entry->nr_running = nr_running;
__entry->nr_iowait = nr_iowait;
),
TP_printk("cpu=%d nr_running=%u nr_iowait=%d",
__entry->cpu,
__entry->nr_running, __entry->nr_iowait)
);
/*
* Tracepoint for showing tracked task cpu usage ratio [0..1023].
*/
@@ -559,6 +582,10 @@ TRACE_EVENT(sched_task_usage_ratio,
/*
* Tracepoint for HMP (CONFIG_SCHED_HMP) task migrations.
*/
#define HMP_MIGRATE_WAKEUP 0
#define HMP_MIGRATE_FORCE 1
#define HMP_MIGRATE_OFFLOAD 2
#define HMP_MIGRATE_IDLE_PULL 3
TRACE_EVENT(sched_hmp_migrate,
TP_PROTO(struct task_struct *tsk, int dest, int force),
@@ -583,6 +610,51 @@ TRACE_EVENT(sched_hmp_migrate,
__entry->comm, __entry->pid,
__entry->dest, __entry->force)
);
TRACE_EVENT(sched_hmp_offload_abort,
TP_PROTO(int cpu, int data, char *label),
TP_ARGS(cpu,data,label),
TP_STRUCT__entry(
__array(char, label, 64)
__field(int, cpu)
__field(int, data)
),
TP_fast_assign(
strncpy(__entry->label, label, 64);
__entry->cpu = cpu;
__entry->data = data;
),
TP_printk("cpu=%d data=%d label=%63s",
__entry->cpu, __entry->data,
__entry->label)
);
TRACE_EVENT(sched_hmp_offload_succeed,
TP_PROTO(int cpu, int dest_cpu),
TP_ARGS(cpu,dest_cpu),
TP_STRUCT__entry(
__field(int, cpu)
__field(int, dest_cpu)
),
TP_fast_assign(
__entry->cpu = cpu;
__entry->dest_cpu = dest_cpu;
),
TP_printk("cpu=%d dest=%d",
__entry->cpu,
__entry->dest_cpu)
);
#endif /* _TRACE_SCHED_H */
/* This part must be outside protection */

View File

@@ -0,0 +1,91 @@
#undef TRACE_SYSTEM
#define TRACE_SYSTEM smp
#if !defined(_TRACE_SMP_H) || defined(TRACE_HEADER_MULTI_READ)
#define _TRACE_SMP_H
#include <linux/tracepoint.h>
typedef void (*__smp_call_func_t)(void *info);
DECLARE_EVENT_CLASS(smp_call_class,
TP_PROTO(__smp_call_func_t fnc),
TP_ARGS(fnc),
TP_STRUCT__entry(
__field( void *, func )
),
TP_fast_assign(
__entry->func = fnc;
),
TP_printk("func=%pf", __entry->func)
);
/**
* smp_call_func_entry - called in the generic smp-cross-call-handler
* immediately before calling the destination
* function
* @func: function pointer
*
* When used in combination with the smp_call_func_exit tracepoint
* we can determine the cross-call runtime.
*/
DEFINE_EVENT(smp_call_class, smp_call_func_entry,
TP_PROTO(__smp_call_func_t fnc),
TP_ARGS(fnc)
);
/**
* smp_call_func_exit - called in the generic smp-cross-call-handler
* immediately after the destination function
* returns
* @func: function pointer
*
* When used in combination with the smp_call_entry tracepoint
* we can determine the cross-call runtime.
*/
DEFINE_EVENT(smp_call_class, smp_call_func_exit,
TP_PROTO(__smp_call_func_t fnc),
TP_ARGS(fnc)
);
/**
* smp_call_func_send - called as destination function is set
* in the per-cpu storage
* @func: function pointer
* @dest: cpu to send to
*
* When used in combination with the smp_cross_call_entry tracepoint
* we can determine the call-to-run latency.
*/
TRACE_EVENT(smp_call_func_send,
TP_PROTO(__smp_call_func_t func, int dest),
TP_ARGS(func, dest),
TP_STRUCT__entry(
__field( void * , func )
__field( int , dest )
),
TP_fast_assign(
__entry->func = func;
__entry->dest = dest;
),
TP_printk("dest=%d func=%pf", __entry->dest,
__entry->func)
);
#endif /* _TRACE_SMP_H */
/* This part must be outside protection */
#include <trace/define_trace.h>