From mboxrd@z Thu Jan 1 00:00:00 1970 From: kpark3469@gmail.com Subject: [PATCH 1/4] PM / tracing: Add pm_qos_update_target/flags tracepoints Date: Thu, 20 Jun 2013 13:56:57 +0900 Message-ID: <1371704220-7008-1-git-send-email-kpark3469@gmail.com> Return-path: Received: from mail-ie0-f171.google.com ([209.85.223.171]:42471 "EHLO mail-ie0-f171.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751065Ab3FTE50 (ORCPT ); Thu, 20 Jun 2013 00:57:26 -0400 Received: by mail-ie0-f171.google.com with SMTP id qd12so15549060ieb.2 for ; Wed, 19 Jun 2013 21:57:25 -0700 (PDT) Sender: linux-pm-owner@vger.kernel.org List-Id: linux-pm@vger.kernel.org To: linux-pm@vger.kernel.org Cc: keun-o.park@windriver.com, len.brown@intel.com, rjw@sisk.pl, rostedt@goodmis.org From: Sahara This patch adds tracepoints to pm_qos_update_target and pm_qos_update_flags. It's useful for checking pm qos action, previous value and current value. Signed-off-by: Sahara --- include/trace/events/power.h | 49 ++++++++++++++++++++++++++++++++++++++++++ kernel/power/qos.c | 3 ++ 2 files changed, 52 insertions(+), 0 deletions(-) diff --git a/include/trace/events/power.h b/include/trace/events/power.h index 427acab..27a714c 100644 --- a/include/trace/events/power.h +++ b/include/trace/events/power.h @@ -5,6 +5,7 @@ #define _TRACE_POWER_H #include +#include #include DECLARE_EVENT_CLASS(cpu, @@ -177,6 +178,54 @@ DEFINE_EVENT(power_domain, power_domain_target, TP_ARGS(name, state, cpu_id) ); + +/* + * The pm qos events are used for pm qos update + */ +DECLARE_EVENT_CLASS(pm_qos_update, + + TP_PROTO(enum pm_qos_req_action action, int prev_value, int curr_value), + + TP_ARGS(action, prev_value, curr_value), + + TP_STRUCT__entry( + __field( enum pm_qos_req_action, action ) + __field( int, prev_value ) + __field( int, curr_value ) + ), + + TP_fast_assign( + __entry->action = action; + __entry->prev_value = prev_value; + __entry->curr_value = curr_value; + ), + + TP_printk("action=%s prev_value=%d curr_value=%d", + (__entry->action == PM_QOS_ADD_REQ) ? "ADD_REQ" : + (__entry->action == PM_QOS_UPDATE_REQ) ? "UPDATE_REQ" : + (__entry->action == PM_QOS_REMOVE_REQ) ? "REMOVE_REQ" : "??", + __entry->prev_value, __entry->curr_value) +); + +DEFINE_EVENT(pm_qos_update, pm_qos_update_target, + + TP_PROTO(enum pm_qos_req_action action, int prev_value, int curr_value), + + TP_ARGS(action, prev_value, curr_value) +); + +DEFINE_EVENT_PRINT(pm_qos_update, pm_qos_update_flags, + + TP_PROTO(enum pm_qos_req_action action, int prev_value, int curr_value), + + TP_ARGS(action, prev_value, curr_value), + + TP_printk("action=%s prev_value=0x%x curr_value=0x%x", + (__entry->action == PM_QOS_ADD_REQ) ? "ADD_REQ" : + (__entry->action == PM_QOS_UPDATE_REQ) ? "UPDATE_REQ" : + (__entry->action == PM_QOS_REMOVE_REQ) ? "REMOVE_REQ" : "??", + __entry->prev_value, __entry->curr_value) +); #endif /* _TRACE_POWER_H */ /* This part must be outside protection */ diff --git a/kernel/power/qos.c b/kernel/power/qos.c index f2f5f6e..4fb8d14 100644 --- a/kernel/power/qos.c +++ b/kernel/power/qos.c @@ -44,6 +44,7 @@ #include #include +#include /* * locking rule: all changes to constraints or notifiers lists @@ -202,6 +203,7 @@ int pm_qos_update_target(struct pm_qos_constraints *c, struct plist_node *node, spin_unlock_irqrestore(&pm_qos_lock, flags); + trace_pm_qos_update_target(action, prev_value, curr_value); if (prev_value != curr_value) { blocking_notifier_call_chain(c->notifiers, (unsigned long)curr_value, @@ -272,6 +274,7 @@ bool pm_qos_update_flags(struct pm_qos_flags *pqf, spin_unlock_irqrestore(&pm_qos_lock, irqflags); + trace_pm_qos_update_flags(action, prev_value, curr_value); return prev_value != curr_value; } -- 1.7.1