mirror of
https://github.com/team-infusion-developers/android_kernel_samsung_msm8976.git
synced 2024-09-21 11:53:01 +00:00
msm: mpdcvs: add ftrace events
Add ftrace events at interesting points in the dcvs and mpdecision code. Change-Id: I58e5f087c8f94286bf2a34dcfee258bdab4c8511 Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
This commit is contained in:
parent
25da89de28
commit
abc14e6869
|
@ -26,6 +26,7 @@
|
|||
#include <asm/atomic.h>
|
||||
#include <asm/page.h>
|
||||
#include <mach/msm_dcvs.h>
|
||||
#include <trace/events/mpdcvs_trace.h>
|
||||
|
||||
#define CORE_HANDLE_OFFSET (0xA0)
|
||||
#define __err(f, ...) pr_err("MSM_DCVS: %s: " f, __func__, __VA_ARGS__)
|
||||
|
@ -477,6 +478,7 @@ static enum hrtimer_restart msm_dcvs_core_slack_timer(struct hrtimer *timer)
|
|||
struct dcvs_core, slack_timer);
|
||||
uint32_t ret1;
|
||||
|
||||
trace_printk("dcvs: Slack timer fired for core=%s\n", core->core_name);
|
||||
/**
|
||||
* Timer expired, notify TZ
|
||||
* Dont care about the third arg.
|
||||
|
@ -954,6 +956,7 @@ int msm_dcvs_idle(int dcvs_core_id, enum msm_core_idle_state state,
|
|||
if (ret < 0 && ret != -13)
|
||||
__err("Error (%d) sending idle enter for %s\n",
|
||||
ret, core->core_name);
|
||||
trace_msm_dcvs_idle("idle_enter_exit", core->core_name, 1);
|
||||
break;
|
||||
|
||||
case MSM_DCVS_IDLE_EXIT:
|
||||
|
@ -963,6 +966,10 @@ int msm_dcvs_idle(int dcvs_core_id, enum msm_core_idle_state state,
|
|||
__err("Error (%d) sending idle exit for %s\n",
|
||||
ret, core->core_name);
|
||||
start_slack_timer(core, timer_interval_us);
|
||||
trace_msm_dcvs_idle("idle_enter_exit", core->core_name, 0);
|
||||
trace_msm_dcvs_iowait("iowait", core->core_name, iowaited);
|
||||
trace_msm_dcvs_slack_time("slack_timer_dcvs", core->core_name,
|
||||
timer_interval_us);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
#include <mach/memory.h>
|
||||
#include <mach/scm.h>
|
||||
#include <mach/msm_dcvs_scm.h>
|
||||
#include <trace/events/mpdcvs_trace.h>
|
||||
|
||||
#define DCVS_CMD_REGISTER_CORE 2
|
||||
#define DCVS_CMD_SET_ALGO_PARAM 3
|
||||
|
@ -225,6 +226,9 @@ int msm_dcvs_scm_event(uint32_t core_id,
|
|||
ret = scm_call_atomic4_3(SCM_SVC_DCVS, DCVS_CMD_EVENT,
|
||||
core_id, event_id, param0, param1, ret0, ret1);
|
||||
|
||||
trace_msm_dcvs_scm_event(core_id, (int)event_id, param0, param1,
|
||||
*ret0, *ret1);
|
||||
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL(msm_dcvs_scm_event);
|
||||
|
|
|
@ -37,6 +37,8 @@
|
|||
#include <asm/page.h>
|
||||
#include <mach/msm_dcvs.h>
|
||||
#include <mach/msm_dcvs_scm.h>
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include <trace/events/mpdcvs_trace.h>
|
||||
|
||||
#define DEFAULT_RQ_AVG_POLL_MS (1)
|
||||
|
||||
|
@ -168,6 +170,8 @@ static enum hrtimer_restart msm_mpd_rq_avg_poll_timer(struct hrtimer *timer)
|
|||
if (nr > num_present_hundreds)
|
||||
nr = num_present_hundreds;
|
||||
|
||||
trace_msm_mp_runq("nr_running", nr);
|
||||
|
||||
if (ok_to_update_tz(nr, last_nr)) {
|
||||
hrtimer_try_to_cancel(&msm_mpd.slack_timer);
|
||||
msm_mpd.data.nr = nr;
|
||||
|
@ -263,6 +267,8 @@ static int __ref msm_mpd_update_scm(enum msm_dcvs_scm_event event, int nr)
|
|||
return ret;
|
||||
}
|
||||
|
||||
trace_msm_mp_cpusonline("cpu_online_mp", req_cpu_mask);
|
||||
trace_msm_mp_slacktime("slack_time_mp", slack_us);
|
||||
msm_mpd.slack_us = slack_us;
|
||||
atomic_set(&msm_mpd.algo_cpu_mask, req_cpu_mask);
|
||||
msm_mpd.hpupdate = HPUPDATE_SCHEDULED;
|
||||
|
@ -286,6 +292,8 @@ static enum hrtimer_restart msm_mpd_slack_timer(struct hrtimer *timer)
|
|||
{
|
||||
unsigned long flags;
|
||||
|
||||
trace_printk("mpd:slack_timer_fired!\n");
|
||||
|
||||
spin_lock_irqsave(&rq_avg_lock, flags);
|
||||
if (msm_mpd.data.event == MSM_DCVS_SCM_RUNQ_UPDATE)
|
||||
goto out;
|
||||
|
|
156
include/trace/events/mpdcvs_trace.h
Normal file
156
include/trace/events/mpdcvs_trace.h
Normal file
|
@ -0,0 +1,156 @@
|
|||
/* Copyright (c) 2012, Free Software Foundation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 and
|
||||
* only version 2 as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM mpdcvs_trace
|
||||
|
||||
#if !defined(_TRACE_MPDCVS_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
#define _TRACE_MPDCVS_H
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
DECLARE_EVENT_CLASS(msm_mp,
|
||||
|
||||
TP_PROTO(const char *name, int mp_val),
|
||||
|
||||
TP_ARGS(name, mp_val),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(name, name)
|
||||
__field(int, mp_val)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(name, name);
|
||||
__entry->mp_val = mp_val;
|
||||
),
|
||||
|
||||
TP_printk("ev_name=%s ev_level=%d",
|
||||
__get_str(name),
|
||||
__entry->mp_val)
|
||||
);
|
||||
|
||||
/* Core function of run_q */
|
||||
|
||||
DEFINE_EVENT(msm_mp, msm_mp_runq,
|
||||
|
||||
TP_PROTO(const char *name, int mp_val),
|
||||
|
||||
TP_ARGS(name, mp_val)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(msm_mp, msm_mp_cpusonline,
|
||||
|
||||
TP_PROTO(const char *name, int mp_val),
|
||||
|
||||
TP_ARGS(name, mp_val)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(msm_mp, msm_mp_slacktime,
|
||||
|
||||
TP_PROTO(const char *name, int mp_val),
|
||||
|
||||
TP_ARGS(name, mp_val)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(msm_dcvs,
|
||||
|
||||
TP_PROTO(const char *name, const char *cpuid, int val),
|
||||
|
||||
TP_ARGS(name, cpuid, val),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__string(name, name)
|
||||
__string(cpuid, cpuid)
|
||||
__field(int, val)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__assign_str(name, name);
|
||||
__assign_str(cpuid, cpuid);
|
||||
__entry->val = val;
|
||||
),
|
||||
|
||||
TP_printk("ev_name=%s d_name=%s ev_level=%d",
|
||||
__get_str(name),
|
||||
__get_str(cpuid),
|
||||
__entry->val)
|
||||
);
|
||||
|
||||
/* Core function of dcvs */
|
||||
|
||||
DEFINE_EVENT(msm_dcvs, msm_dcvs_idle,
|
||||
|
||||
TP_PROTO(const char *name, const char *cpuid, int val),
|
||||
|
||||
TP_ARGS(name, cpuid, val)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(msm_dcvs, msm_dcvs_iowait,
|
||||
|
||||
TP_PROTO(const char *name, const char *cpuid, int val),
|
||||
|
||||
TP_ARGS(name, cpuid, val)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(msm_dcvs, msm_dcvs_slack_time,
|
||||
|
||||
TP_PROTO(const char *name, const char *cpuid, int val),
|
||||
|
||||
TP_ARGS(name, cpuid, val)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(msm_dcvs_scm,
|
||||
|
||||
TP_PROTO(unsigned long cpuid, int ev_type, unsigned long param0,
|
||||
unsigned long param1, unsigned long ret0, unsigned long ret1),
|
||||
|
||||
TP_ARGS(cpuid, ev_type, param0, param1, ret0, ret1),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned long, cpuid)
|
||||
__field(int, ev_type)
|
||||
__field(unsigned long, param0)
|
||||
__field(unsigned long, param1)
|
||||
__field(unsigned long, ret0)
|
||||
__field(unsigned long, ret1)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->cpuid = cpuid;
|
||||
__entry->ev_type = ev_type;
|
||||
__entry->param0 = param0;
|
||||
__entry->param1 = param1;
|
||||
__entry->ret0 = ret0;
|
||||
__entry->ret1 = ret1;
|
||||
),
|
||||
|
||||
TP_printk("dev=%lu ev_type=%d ev_param0=%lu ev_param1=%lu ev_ret0=%lu ev_ret1=%lu",
|
||||
__entry->cpuid,
|
||||
__entry->ev_type,
|
||||
__entry->param0,
|
||||
__entry->param1,
|
||||
__entry->ret0,
|
||||
__entry->ret1)
|
||||
);
|
||||
|
||||
DEFINE_EVENT(msm_dcvs_scm, msm_dcvs_scm_event,
|
||||
|
||||
TP_PROTO(unsigned long cpuid, int ev_type, unsigned long param0,
|
||||
unsigned long param1, unsigned long ret0, unsigned long ret1),
|
||||
|
||||
TP_ARGS(cpuid, ev_type, param0, param1, ret0, ret1)
|
||||
);
|
||||
|
||||
#endif /* _TRACE_MPDCVS_H */
|
||||
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
Loading…
Reference in a new issue