* [PATCH 0/2] Trace: PM: promote event 'power_domain_target' to generic power domains.
@ 2015-09-25 13:22 Marc Titinger
2015-09-25 13:22 ` [PATCH 1/2] " Marc Titinger
2015-09-25 13:22 ` [PATCH " Marc Titinger
0 siblings, 2 replies; 16+ messages in thread
From: Marc Titinger @ 2015-09-25 13:22 UTC (permalink / raw)
To: khilman, rostedt, rjw; +Cc: linux-omap, linux-pm, Marc Titinger
- change arg3 to a state name string: we got the current CPU from the trace
backend already. This also prepares for multiple/named states in the power
domain.
- tested with Juno Dev Platform
<idle>-0 [000] 42.395510: power_domain_target: a53_pd index=0 'cluster-sleep-0'
<idle>-0 [000] 42.395528: cpu_idle: state=4294967295 cpu_id=0
<idle>-0 [000] 42.395668: cpu_idle: state=2 cpu_id=0
- compiled for Omap2+
Depends on this patch set from Axel Haslam:
[v7,1/5] PM / Domains: prepare for multiple states
[v7,2/5] PM / Domains: core changes for multiple states
[v7,3/5] PM / Domains: make governor select deepest state
[v7,4/5] ARM: imx6: pm: declare pm domain latency on power_state struct.
[v7,5/5] PM / Domains: remove old power on/off latencies.
Marc Titinger (2):
Trace: PM: promote event 'power_domain_target' to generic power
domains.
arm: omap2+: PM: change trace_power_domain_target event format.
arch/arm/mach-omap2/powerdomain.c | 32 ++++++++++++++++++++------------
drivers/base/power/domain.c | 9 +++++++++
include/trace/events/power.h | 29 +++++++++++++++--------------
3 files changed, 44 insertions(+), 26 deletions(-)
--
1.9.1
^ permalink raw reply [flat|nested] 16+ messages in thread* [PATCH 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains. 2015-09-25 13:22 [PATCH 0/2] Trace: PM: promote event 'power_domain_target' to generic power domains Marc Titinger @ 2015-09-25 13:22 ` Marc Titinger 2015-09-25 14:05 ` Steven Rostedt ` (2 more replies) 2015-09-25 13:22 ` [PATCH " Marc Titinger 1 sibling, 3 replies; 16+ messages in thread From: Marc Titinger @ 2015-09-25 13:22 UTC (permalink / raw) To: khilman, rostedt, rjw; +Cc: linux-omap, linux-pm, Marc Titinger From: Marc Titinger <mtitinger@baylibre.com> - change arg3 to a state name string: we got the current CPU rom the trace backend already. This also prepares for multiple/named states in the power domain, consistent with idle-states. states in the domain may match given CPU states in this case, we will trace them by their name, and potentially use arg2 as a link to their index for the cpuidle driver. - tested with Juno DP <idle>-0 [000] 42.395510: power_domain_target: a53_pd index=0 'cluster-sleep-0' <idle>-0 [000] 42.395528: cpu_idle: state=4294967295 cpu_id=0 <idle>-0 [000] 42.395668: cpu_idle: state=2 cpu_id=0 - compiled for Omap2+ Signed-off-by: Marc Titinger <mtitinger@baylibre.com> --- drivers/base/power/domain.c | 9 +++++++++ include/trace/events/power.h | 29 +++++++++++++++-------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 59ccd92..b9e2a37 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -21,6 +21,10 @@ #include <linux/export.h> #include <linux/sort.h> +#ifdef CONFIG_PM_ADVANCED_DEBUG +#include <trace/events/power.h> +#endif + #define GENPD_RETRY_MAX_MS 250 /* Approximate */ #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ @@ -328,6 +332,11 @@ static int __pm_genpd_poweron(struct generic_pm_domain *genpd) out: genpd->status = GPD_STATE_ACTIVE; + +#ifdef CONFIG_PM_ADVANCED_DEBUG + trace_power_domain_target(genpd->name, genpd->state_idx, + genpd->states[genpd->state_idx].name); +#endif return 0; err: diff --git a/include/trace/events/power.h b/include/trace/events/power.h index 284244e..8f93be6 100644 --- a/include/trace/events/power.h +++ b/include/trace/events/power.h @@ -237,9 +237,9 @@ DECLARE_EVENT_CLASS(clock, TP_ARGS(name, state, cpu_id), TP_STRUCT__entry( - __string( name, name ) - __field( u64, state ) - __field( u64, cpu_id ) + __string(name, name) + __field(u64, state) + __field(u64, cpu_id) ), TP_fast_assign( @@ -278,31 +278,32 @@ DEFINE_EVENT(clock, clock_set_rate, */ DECLARE_EVENT_CLASS(power_domain, - TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), + TP_PROTO(const char *name, unsigned int index, const char *state_name), - TP_ARGS(name, state, cpu_id), + TP_ARGS(name, index, state_name), TP_STRUCT__entry( - __string( name, name ) - __field( u64, state ) - __field( u64, cpu_id ) + __string(name, name) + __field(u64, index) + __string(state_name, state_name) ), TP_fast_assign( __assign_str(name, name); - __entry->state = state; - __entry->cpu_id = cpu_id; + __entry->index = index; + __assign_str(state_name, state_name); ), - TP_printk("%s state=%lu cpu_id=%lu", __get_str(name), - (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) + TP_printk("%s index=%lu '%s'", __get_str(name), + (unsigned long)__entry->index, + __get_str(state_name)) ); DEFINE_EVENT(power_domain, power_domain_target, - TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), + TP_PROTO(const char *name, unsigned int index, const char *state_name), - TP_ARGS(name, state, cpu_id) + TP_ARGS(name, index, state_name) ); /* -- 1.9.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains. 2015-09-25 13:22 ` [PATCH 1/2] " Marc Titinger @ 2015-09-25 14:05 ` Steven Rostedt 2015-09-28 8:44 ` [PATCH v2 " Marc Titinger 2015-09-28 8:44 ` [PATCH v2 2/2] arm: omap2+: PM: change trace_power_domain_target event format Marc Titinger 2 siblings, 0 replies; 16+ messages in thread From: Steven Rostedt @ 2015-09-25 14:05 UTC (permalink / raw) To: Marc Titinger; +Cc: khilman, rjw, linux-omap, linux-pm On Fri, 25 Sep 2015 15:22:24 +0200 Marc Titinger <mtitinger@baylibre.com> wrote: > From: Marc Titinger <mtitinger@baylibre.com> > > - change arg3 to a state name string: we got the current CPU rom the trace > backend already. This also prepares for multiple/named states in the power > domain, consistent with idle-states. states in the domain may match given > CPU states in this case, we will trace them by their name, and potentially > use arg2 as a link to their index for the cpuidle driver. > > - tested with Juno DP > > <idle>-0 [000] 42.395510: power_domain_target: a53_pd index=0 'cluster-sleep-0' > <idle>-0 [000] 42.395528: cpu_idle: state=4294967295 cpu_id=0 > <idle>-0 [000] 42.395668: cpu_idle: state=2 cpu_id=0 > > - compiled for Omap2+ > > Signed-off-by: Marc Titinger <mtitinger@baylibre.com> > --- > drivers/base/power/domain.c | 9 +++++++++ > include/trace/events/power.h | 29 +++++++++++++++-------------- > 2 files changed, 24 insertions(+), 14 deletions(-) > > diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c > index 59ccd92..b9e2a37 100644 > --- a/drivers/base/power/domain.c > +++ b/drivers/base/power/domain.c > @@ -21,6 +21,10 @@ > #include <linux/export.h> > #include <linux/sort.h> > > +#ifdef CONFIG_PM_ADVANCED_DEBUG > +#include <trace/events/power.h> > +#endif Are the events in events/power.h only available when PM_ADVANCED_DEBUG is enabled? If so, this should probably be encapsulated in that header file, with an "#else" that makes all the trace_power_*() calls into static inlined nops. Then you can get rid of the ugly #ifdef in this file. > + > #define GENPD_RETRY_MAX_MS 250 /* Approximate */ > > #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ > @@ -328,6 +332,11 @@ static int __pm_genpd_poweron(struct generic_pm_domain *genpd) > > out: > genpd->status = GPD_STATE_ACTIVE; > + > +#ifdef CONFIG_PM_ADVANCED_DEBUG > + trace_power_domain_target(genpd->name, genpd->state_idx, > + genpd->states[genpd->state_idx].name); > +#endif > return 0; > > err: > diff --git a/include/trace/events/power.h b/include/trace/events/power.h > index 284244e..8f93be6 100644 > --- a/include/trace/events/power.h > +++ b/include/trace/events/power.h > @@ -237,9 +237,9 @@ DECLARE_EVENT_CLASS(clock, > TP_ARGS(name, state, cpu_id), > > TP_STRUCT__entry( > - __string( name, name ) > - __field( u64, state ) > - __field( u64, cpu_id ) > + __string(name, name) > + __field(u64, state) > + __field(u64, cpu_id) Note, the standard formatting for the tracepoints is with the spaces. Igonre checkpatch for that, tracepoints don't follow it. -- Steve > ), > > TP_fast_assign( > @@ -278,31 +278,32 @@ DEFINE_EVENT(clock, clock_set_rate, > */ > DECLARE_EVENT_CLASS(power_domain, ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains. 2015-09-25 13:22 ` [PATCH 1/2] " Marc Titinger 2015-09-25 14:05 ` Steven Rostedt @ 2015-09-28 8:44 ` Marc Titinger 2015-09-28 8:44 ` [PATCH v2 2/2] arm: omap2+: PM: change trace_power_domain_target event format Marc Titinger 2 siblings, 0 replies; 16+ messages in thread From: Marc Titinger @ 2015-09-28 8:44 UTC (permalink / raw) To: rostedt; +Cc: khilman, rjw, linux-omap, linux-pm, Marc Titinger, Marc Titinger - change arg3 to a state name string: we got the current CPU rom the trace backend already. This also prepares for multiple/named states in the power domain, consistent with idle-states. states in the domain may match given CPU states in this case, we will trace them by their name, and potentially use arg2 as a link to their index for the cpuidle driver. - tested with Juno DP <idle>-0 [000] 42.395510: power_domain_target: a53_pd index=0 'cluster-sleep-0' <idle>-0 [000] 42.395528: cpu_idle: state=4294967295 cpu_id=0 <idle>-0 [000] 42.395668: cpu_idle: state=2 cpu_id=0 - compiled for Omap2+ Signed-off-by: Marc Titinger <mtitinger@baylibre.com> --- drivers/base/power/domain.c | 5 +++++ include/trace/events/power.h | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 59ccd92..017c151 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -21,6 +21,8 @@ #include <linux/export.h> #include <linux/sort.h> +#include <trace/events/power.h> + #define GENPD_RETRY_MAX_MS 250 /* Approximate */ #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ @@ -328,6 +330,9 @@ static int __pm_genpd_poweron(struct generic_pm_domain *genpd) out: genpd->status = GPD_STATE_ACTIVE; + + trace_power_domain_target(genpd->name, genpd->state_idx, + genpd->states[genpd->state_idx].name); return 0; err: diff --git a/include/trace/events/power.h b/include/trace/events/power.h index 284244e..8172d93 100644 --- a/include/trace/events/power.h +++ b/include/trace/events/power.h @@ -278,31 +278,32 @@ DEFINE_EVENT(clock, clock_set_rate, */ DECLARE_EVENT_CLASS(power_domain, - TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), + TP_PROTO(const char *name, unsigned int index, const char *state_name), - TP_ARGS(name, state, cpu_id), + TP_ARGS(name, index, state_name), TP_STRUCT__entry( __string( name, name ) - __field( u64, state ) - __field( u64, cpu_id ) + __field( u64, index ) + __string( state_name, state_name ) ), TP_fast_assign( __assign_str(name, name); - __entry->state = state; - __entry->cpu_id = cpu_id; + __entry->index = index; + __assign_str(state_name, state_name); ), - TP_printk("%s state=%lu cpu_id=%lu", __get_str(name), - (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) + TP_printk("%s index=%lu '%s'", __get_str(name), + (unsigned long)__entry->index, + __get_str(state_name)) ); DEFINE_EVENT(power_domain, power_domain_target, - TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), + TP_PROTO(const char *name, unsigned int index, const char *state_name), - TP_ARGS(name, state, cpu_id) + TP_ARGS(name, index, state_name) ); /* -- 1.9.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v2 2/2] arm: omap2+: PM: change trace_power_domain_target event format. 2015-09-25 13:22 ` [PATCH 1/2] " Marc Titinger 2015-09-25 14:05 ` Steven Rostedt 2015-09-28 8:44 ` [PATCH v2 " Marc Titinger @ 2015-09-28 8:44 ` Marc Titinger 2015-09-28 13:20 ` [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains Marc Titinger 2015-09-28 13:20 ` [PATCH v3 2/2] arm: omap2+: PM: change trace_power_domain_target event format Marc Titinger 2 siblings, 2 replies; 16+ messages in thread From: Marc Titinger @ 2015-09-28 8:44 UTC (permalink / raw) To: rostedt; +Cc: khilman, rjw, linux-omap, linux-pm, Marc Titinger, Marc Titinger power_domain_target arg3 is now a string (event name) with generic power domains. In the case of Omap, it is a hint to the prev/next switch op. Compiled for Omap2+ but not tested. Signed-off-by: Marc Titinger <mtitinger@baylibre.com> --- arch/arm/mach-omap2/powerdomain.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 78af6d8..02167c2 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c @@ -160,7 +160,7 @@ static void _update_logic_membank_counters(struct powerdomain *pwrdm) static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) { - int prev, next, state, trace_state = 0; + int prev, state; if (pwrdm == NULL) return -EINVAL; @@ -177,17 +177,21 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) pwrdm->state_counter[prev]++; if (prev == PWRDM_POWER_RET) _update_logic_membank_counters(pwrdm); - /* - * If the power domain did not hit the desired state, - * generate a trace event with both the desired and hit states - */ - next = pwrdm_read_next_pwrst(pwrdm); - if (next != prev) { - trace_state = (PWRDM_TRACE_STATES_FLAG | + + if (trace_power_domain_target_enabled()) { + /* + * If the power domain did not hit the desired state, + * generate a trace event with both the desired and hit + * states */ + int next = pwrdm_read_next_pwrst(pwrdm); + + if (next != prev) { + int trace_state = (PWRDM_TRACE_STATES_FLAG | ((next & OMAP_POWERSTATE_MASK) << 8) | ((prev & OMAP_POWERSTATE_MASK) << 0)); - trace_power_domain_target(pwrdm->name, trace_state, - smp_processor_id()); + trace_power_domain_target(pwrdm->name, + trace_state, "PWRDM_STATE_PREV"); + } } break; default: @@ -523,8 +527,7 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) if (arch_pwrdm && arch_pwrdm->pwrdm_set_next_pwrst) { /* Trace the pwrdm desired target state */ - trace_power_domain_target(pwrdm->name, pwrst, - smp_processor_id()); + trace_power_domain_target(pwrdm->name, pwrst, "set_next_pwrst"); /* Program the pwrdm desired target state */ ret = arch_pwrdm->pwrdm_set_next_pwrst(pwrdm, pwrst); } -- 1.9.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains. 2015-09-28 8:44 ` [PATCH v2 2/2] arm: omap2+: PM: change trace_power_domain_target event format Marc Titinger @ 2015-09-28 13:20 ` Marc Titinger 2015-09-28 13:31 ` kbuild test robot 2015-10-14 0:55 ` Rafael J. Wysocki 2015-09-28 13:20 ` [PATCH v3 2/2] arm: omap2+: PM: change trace_power_domain_target event format Marc Titinger 1 sibling, 2 replies; 16+ messages in thread From: Marc Titinger @ 2015-09-28 13:20 UTC (permalink / raw) To: linux-pm; +Cc: linux-omap, Marc Titinger, Marc Titinger - change arg3 to a state name string: we got the current CPU rom the trace backend already. This also prepares for multiple/named states in the power domain, consistent with idle-states. states in the domain may match given CPU states in this case, we will trace them by their name, and potentially use arg2 as a link to their index for the cpuidle driver. - tested with Juno DP <idle>-0 [000] 42.395510: power_domain_target: a53_pd index=0 'cluster-sleep-0' <idle>-0 [000] 42.395528: cpu_idle: state=4294967295 cpu_id=0 <idle>-0 [000] 42.395668: cpu_idle: state=2 cpu_id=0 - compiled for Omap2+ Signed-off-by: Marc Titinger <mtitinger@baylibre.com> --- v3: make this patch set applicable to current HEAD, since there is no dependency. drivers/base/power/domain.c | 5 +++++ include/trace/events/power.h | 21 +++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 16550c6..6661a80 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -20,6 +20,8 @@ #include <linux/suspend.h> #include <linux/export.h> +#include <trace/events/power.h> + #define GENPD_RETRY_MAX_MS 250 /* Approximate */ #define GENPD_DEV_CALLBACK(genpd, type, callback, dev) \ @@ -268,6 +270,9 @@ static int __pm_genpd_poweron(struct generic_pm_domain *genpd) out: genpd->status = GPD_STATE_ACTIVE; + + trace_power_domain_target(genpd->name, genpd->state_idx, + genpd->states[genpd->state_idx].name); return 0; err: diff --git a/include/trace/events/power.h b/include/trace/events/power.h index 284244e..8172d93 100644 --- a/include/trace/events/power.h +++ b/include/trace/events/power.h @@ -278,31 +278,32 @@ DEFINE_EVENT(clock, clock_set_rate, */ DECLARE_EVENT_CLASS(power_domain, - TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), + TP_PROTO(const char *name, unsigned int index, const char *state_name), - TP_ARGS(name, state, cpu_id), + TP_ARGS(name, index, state_name), TP_STRUCT__entry( __string( name, name ) - __field( u64, state ) - __field( u64, cpu_id ) + __field( u64, index ) + __string( state_name, state_name ) ), TP_fast_assign( __assign_str(name, name); - __entry->state = state; - __entry->cpu_id = cpu_id; + __entry->index = index; + __assign_str(state_name, state_name); ), - TP_printk("%s state=%lu cpu_id=%lu", __get_str(name), - (unsigned long)__entry->state, (unsigned long)__entry->cpu_id) + TP_printk("%s index=%lu '%s'", __get_str(name), + (unsigned long)__entry->index, + __get_str(state_name)) ); DEFINE_EVENT(power_domain, power_domain_target, - TP_PROTO(const char *name, unsigned int state, unsigned int cpu_id), + TP_PROTO(const char *name, unsigned int index, const char *state_name), - TP_ARGS(name, state, cpu_id) + TP_ARGS(name, index, state_name) ); /* -- 1.9.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains. 2015-09-28 13:20 ` [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains Marc Titinger @ 2015-09-28 13:31 ` kbuild test robot 2015-10-14 0:55 ` Rafael J. Wysocki 1 sibling, 0 replies; 16+ messages in thread From: kbuild test robot @ 2015-09-28 13:31 UTC (permalink / raw) Cc: kbuild-all, linux-pm, linux-omap, Marc Titinger, Marc Titinger [-- Attachment #1: Type: text/plain, Size: 1415 bytes --] Hi Marc, [auto build test results on v4.3-rc3 -- if it's inappropriate base, please ignore] config: i386-allmodconfig (attached as .config) reproduce: git checkout cc6f7469844987395d46013269b2d2f4e1ad735c # save the attached .config to linux build tree make ARCH=i386 All error/warnings (new ones prefixed by >>): drivers/base/power/domain.c: In function '__pm_genpd_poweron': >> drivers/base/power/domain.c:274:46: error: 'struct generic_pm_domain' has no member named 'state_idx' trace_power_domain_target(genpd->name, genpd->state_idx, ^ >> drivers/base/power/domain.c:275:10: error: 'struct generic_pm_domain' has no member named 'states' genpd->states[genpd->state_idx].name); ^ drivers/base/power/domain.c:275:24: error: 'struct generic_pm_domain' has no member named 'state_idx' genpd->states[genpd->state_idx].name); ^ vim +274 drivers/base/power/domain.c 268 if (ret) 269 goto err; 270 271 out: 272 genpd->status = GPD_STATE_ACTIVE; 273 > 274 trace_power_domain_target(genpd->name, genpd->state_idx, > 275 genpd->states[genpd->state_idx].name); 276 return 0; 277 278 err: --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/octet-stream, Size: 51590 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains. 2015-09-28 13:20 ` [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains Marc Titinger 2015-09-28 13:31 ` kbuild test robot @ 2015-10-14 0:55 ` Rafael J. Wysocki 2015-10-14 8:18 ` Marc Titinger 1 sibling, 1 reply; 16+ messages in thread From: Rafael J. Wysocki @ 2015-10-14 0:55 UTC (permalink / raw) To: Marc Titinger; +Cc: linux-pm, linux-omap, Marc Titinger On Monday, September 28, 2015 03:20:44 PM Marc Titinger wrote: > - change arg3 to a state name string: we got the current CPU rom the trace > backend already. This also prepares for multiple/named states in the power > domain, consistent with idle-states. states in the domain may match given > CPU states in this case, we will trace them by their name, and potentially > use arg2 as a link to their index for the cpuidle driver. > > - tested with Juno DP > > <idle>-0 [000] 42.395510: power_domain_target: a53_pd index=0 'cluster-sleep-0' > <idle>-0 [000] 42.395528: cpu_idle: state=4294967295 cpu_id=0 > <idle>-0 [000] 42.395668: cpu_idle: state=2 cpu_id=0 > > - compiled for Omap2+ > > Signed-off-by: Marc Titinger <mtitinger@baylibre.com> Hi, What's your intent regarding this series? Do you want it to be applied separately, or is it going to be part of a larger series? Thanks, Rafael ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains. 2015-10-14 0:55 ` Rafael J. Wysocki @ 2015-10-14 8:18 ` Marc Titinger 2015-10-14 16:49 ` Rafael J. Wysocki 0 siblings, 1 reply; 16+ messages in thread From: Marc Titinger @ 2015-10-14 8:18 UTC (permalink / raw) To: Rafael J. Wysocki; +Cc: linux-pm, linux-omap, Marc Titinger, ahaslam On 14/10/2015 02:55, Rafael J. Wysocki wrote: > On Monday, September 28, 2015 03:20:44 PM Marc Titinger wrote: >> - change arg3 to a state name string: we got the current CPU rom the trace >> backend already. This also prepares for multiple/named states in the power >> domain, consistent with idle-states. states in the domain may match given >> CPU states in this case, we will trace them by their name, and potentially >> use arg2 as a link to their index for the cpuidle driver. >> >> - tested with Juno DP >> >> <idle>-0 [000] 42.395510: power_domain_target: a53_pd index=0 'cluster-sleep-0' >> <idle>-0 [000] 42.395528: cpu_idle: state=4294967295 cpu_id=0 >> <idle>-0 [000] 42.395668: cpu_idle: state=2 cpu_id=0 >> >> - compiled for Omap2+ >> >> Signed-off-by: Marc Titinger <mtitinger@baylibre.com> > > Hi, > > What's your intent regarding this series? Do you want it to be applied > separately, or is it going to be part of a larger series? Hi Rafael, v3 is a missed attempt to rebase this on the current head, but I did not fix v3 because thinking twice it's not that useful until Axel Haslam's multiple genpd states stuff is merged in. I'm finding v2 useful, shall I re-post v2 as v4 for clarity then ? Thanks, Marc. > > Thanks, > Rafael > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains. 2015-10-14 8:18 ` Marc Titinger @ 2015-10-14 16:49 ` Rafael J. Wysocki 0 siblings, 0 replies; 16+ messages in thread From: Rafael J. Wysocki @ 2015-10-14 16:49 UTC (permalink / raw) To: Marc Titinger; +Cc: linux-pm, linux-omap, Marc Titinger, ahaslam On Wednesday, October 14, 2015 10:18:27 AM Marc Titinger wrote: > On 14/10/2015 02:55, Rafael J. Wysocki wrote: > > On Monday, September 28, 2015 03:20:44 PM Marc Titinger wrote: > >> - change arg3 to a state name string: we got the current CPU rom the trace > >> backend already. This also prepares for multiple/named states in the power > >> domain, consistent with idle-states. states in the domain may match given > >> CPU states in this case, we will trace them by their name, and potentially > >> use arg2 as a link to their index for the cpuidle driver. > >> > >> - tested with Juno DP > >> > >> <idle>-0 [000] 42.395510: power_domain_target: a53_pd index=0 'cluster-sleep-0' > >> <idle>-0 [000] 42.395528: cpu_idle: state=4294967295 cpu_id=0 > >> <idle>-0 [000] 42.395668: cpu_idle: state=2 cpu_id=0 > >> > >> - compiled for Omap2+ > >> > >> Signed-off-by: Marc Titinger <mtitinger@baylibre.com> > > > > Hi, > > > > What's your intent regarding this series? Do you want it to be applied > > separately, or is it going to be part of a larger series? > > Hi Rafael, > > v3 is a missed attempt to rebase this on the current head, but I did not > fix v3 because thinking twice it's not that useful until Axel Haslam's > multiple genpd states stuff is merged in. I'm finding v2 useful, shall I > re-post v2 as v4 for clarity then ? That's up to you mostly. If I get ACKs from all of the appropriate people on those, I can easily apply them. Thanks, Rafael ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3 2/2] arm: omap2+: PM: change trace_power_domain_target event format. 2015-09-28 8:44 ` [PATCH v2 2/2] arm: omap2+: PM: change trace_power_domain_target event format Marc Titinger 2015-09-28 13:20 ` [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains Marc Titinger @ 2015-09-28 13:20 ` Marc Titinger 1 sibling, 0 replies; 16+ messages in thread From: Marc Titinger @ 2015-09-28 13:20 UTC (permalink / raw) To: linux-pm; +Cc: linux-omap, Marc Titinger, Marc Titinger power_domain_target arg3 is now a string (event name) with generic power domains. In the case of Omap, it is a hint to the prev/next switch op. Compiled for Omap2+ but not tested. Signed-off-by: Marc Titinger <mtitinger@baylibre.com> --- arch/arm/mach-omap2/powerdomain.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 78af6d8..02167c2 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c @@ -160,7 +160,7 @@ static void _update_logic_membank_counters(struct powerdomain *pwrdm) static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) { - int prev, next, state, trace_state = 0; + int prev, state; if (pwrdm == NULL) return -EINVAL; @@ -177,17 +177,21 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) pwrdm->state_counter[prev]++; if (prev == PWRDM_POWER_RET) _update_logic_membank_counters(pwrdm); - /* - * If the power domain did not hit the desired state, - * generate a trace event with both the desired and hit states - */ - next = pwrdm_read_next_pwrst(pwrdm); - if (next != prev) { - trace_state = (PWRDM_TRACE_STATES_FLAG | + + if (trace_power_domain_target_enabled()) { + /* + * If the power domain did not hit the desired state, + * generate a trace event with both the desired and hit + * states */ + int next = pwrdm_read_next_pwrst(pwrdm); + + if (next != prev) { + int trace_state = (PWRDM_TRACE_STATES_FLAG | ((next & OMAP_POWERSTATE_MASK) << 8) | ((prev & OMAP_POWERSTATE_MASK) << 0)); - trace_power_domain_target(pwrdm->name, trace_state, - smp_processor_id()); + trace_power_domain_target(pwrdm->name, + trace_state, "PWRDM_STATE_PREV"); + } } break; default: @@ -523,8 +527,7 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) if (arch_pwrdm && arch_pwrdm->pwrdm_set_next_pwrst) { /* Trace the pwrdm desired target state */ - trace_power_domain_target(pwrdm->name, pwrst, - smp_processor_id()); + trace_power_domain_target(pwrdm->name, pwrst, "set_next_pwrst"); /* Program the pwrdm desired target state */ ret = arch_pwrdm->pwrdm_set_next_pwrst(pwrdm, pwrst); } -- 1.9.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH 2/2] arm: omap2+: PM: change trace_power_domain_target event format. 2015-09-25 13:22 [PATCH 0/2] Trace: PM: promote event 'power_domain_target' to generic power domains Marc Titinger 2015-09-25 13:22 ` [PATCH 1/2] " Marc Titinger @ 2015-09-25 13:22 ` Marc Titinger 2015-09-25 14:10 ` Steven Rostedt 1 sibling, 1 reply; 16+ messages in thread From: Marc Titinger @ 2015-09-25 13:22 UTC (permalink / raw) To: khilman, rostedt, rjw; +Cc: linux-omap, linux-pm, Marc Titinger From: Marc Titinger <mtitinger@baylibre.com> power_domain_target arg3 is now a string (event name) with generic power domains. In the case of Omap, it is a hint to the prev/next switch op. Incidentally this trace is now conditioned by CONFIG_PM_ADVANCED_DEBUG. Compiled for Omap2+ but not tested. Signed-off-by: Marc Titinger <mtitinger@baylibre.com> --- arch/arm/mach-omap2/powerdomain.c | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c index 78af6d8..cd77696 100644 --- a/arch/arm/mach-omap2/powerdomain.c +++ b/arch/arm/mach-omap2/powerdomain.c @@ -160,7 +160,7 @@ static void _update_logic_membank_counters(struct powerdomain *pwrdm) static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) { - int prev, next, state, trace_state = 0; + int prev, state; if (pwrdm == NULL) return -EINVAL; @@ -177,18 +177,25 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) pwrdm->state_counter[prev]++; if (prev == PWRDM_POWER_RET) _update_logic_membank_counters(pwrdm); - /* - * If the power domain did not hit the desired state, - * generate a trace event with both the desired and hit states - */ - next = pwrdm_read_next_pwrst(pwrdm); - if (next != prev) { - trace_state = (PWRDM_TRACE_STATES_FLAG | + +#ifdef CONFIG_PM_ADVANCED_DEBUG + { + /* + * If the power domain did not hit the desired state, + * generate a trace event with both the desired and hit + * states */ + int next = pwrdm_read_next_pwrst(pwrdm); + + if (next != prev) { + int trace_state = (PWRDM_TRACE_STATES_FLAG | ((next & OMAP_POWERSTATE_MASK) << 8) | ((prev & OMAP_POWERSTATE_MASK) << 0)); - trace_power_domain_target(pwrdm->name, trace_state, - smp_processor_id()); + trace_power_domain_target(pwrdm->name, + trace_state, "PWRDM_STATE_PREV"); + } } +#endif + break; default: return -EINVAL; @@ -522,9 +529,10 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) pwrdm->name, pwrst); if (arch_pwrdm && arch_pwrdm->pwrdm_set_next_pwrst) { +#ifdef CONFIG_PM_ADVANCED_DEBUG /* Trace the pwrdm desired target state */ - trace_power_domain_target(pwrdm->name, pwrst, - smp_processor_id()); + trace_power_domain_target(pwrdm->name, pwrst, "set_next_pwrst"); +#endif /* Program the pwrdm desired target state */ ret = arch_pwrdm->pwrdm_set_next_pwrst(pwrdm, pwrst); } -- 1.9.1 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] arm: omap2+: PM: change trace_power_domain_target event format. 2015-09-25 13:22 ` [PATCH " Marc Titinger @ 2015-09-25 14:10 ` Steven Rostedt 2015-09-25 14:57 ` Marc Titinger 0 siblings, 1 reply; 16+ messages in thread From: Steven Rostedt @ 2015-09-25 14:10 UTC (permalink / raw) To: Marc Titinger; +Cc: khilman, rjw, linux-omap, linux-pm On Fri, 25 Sep 2015 15:22:25 +0200 Marc Titinger <mtitinger@baylibre.com> wrote: > From: Marc Titinger <mtitinger@baylibre.com> > > power_domain_target arg3 is now a string (event name) with generic power > domains. In the case of Omap, it is a hint to the prev/next switch op. > Incidentally this trace is now conditioned by CONFIG_PM_ADVANCED_DEBUG. I'm curious to why the addition of this config option? > > Compiled for Omap2+ but not tested. > > Signed-off-by: Marc Titinger <mtitinger@baylibre.com> > --- > arch/arm/mach-omap2/powerdomain.c | 32 ++++++++++++++++++++------------ > 1 file changed, 20 insertions(+), 12 deletions(-) > > diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c > index 78af6d8..cd77696 100644 > --- a/arch/arm/mach-omap2/powerdomain.c > +++ b/arch/arm/mach-omap2/powerdomain.c > @@ -160,7 +160,7 @@ static void _update_logic_membank_counters(struct powerdomain *pwrdm) > static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) > { > > - int prev, next, state, trace_state = 0; > + int prev, state; > > if (pwrdm == NULL) > return -EINVAL; > @@ -177,18 +177,25 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) > pwrdm->state_counter[prev]++; > if (prev == PWRDM_POWER_RET) > _update_logic_membank_counters(pwrdm); > - /* > - * If the power domain did not hit the desired state, > - * generate a trace event with both the desired and hit states > - */ > - next = pwrdm_read_next_pwrst(pwrdm); > - if (next != prev) { > - trace_state = (PWRDM_TRACE_STATES_FLAG | > + > +#ifdef CONFIG_PM_ADVANCED_DEBUG You do realize that you can add this to the block: if (trace_power_domain_target_enabled()) { as it seems this code is only run to pass data to the tracepoint. The above if statement will keep this block in the 'out-of-line' path when tracing is not enabled via a static_key (jump-label). -- Steve > + { > + /* > + * If the power domain did not hit the desired state, > + * generate a trace event with both the desired and hit > + * states */ > + int next = pwrdm_read_next_pwrst(pwrdm); > + > + if (next != prev) { > + int trace_state = (PWRDM_TRACE_STATES_FLAG | > ((next & OMAP_POWERSTATE_MASK) << 8) | > ((prev & OMAP_POWERSTATE_MASK) << 0)); > - trace_power_domain_target(pwrdm->name, trace_state, > - smp_processor_id()); > + trace_power_domain_target(pwrdm->name, > + trace_state, "PWRDM_STATE_PREV"); > + } > } > +#endif > + > break; > default: > return -EINVAL; > @@ -522,9 +529,10 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) > pwrdm->name, pwrst); > > if (arch_pwrdm && arch_pwrdm->pwrdm_set_next_pwrst) { > +#ifdef CONFIG_PM_ADVANCED_DEBUG > /* Trace the pwrdm desired target state */ > - trace_power_domain_target(pwrdm->name, pwrst, > - smp_processor_id()); > + trace_power_domain_target(pwrdm->name, pwrst, "set_next_pwrst"); > +#endif > /* Program the pwrdm desired target state */ > ret = arch_pwrdm->pwrdm_set_next_pwrst(pwrdm, pwrst); > } ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] arm: omap2+: PM: change trace_power_domain_target event format. 2015-09-25 14:10 ` Steven Rostedt @ 2015-09-25 14:57 ` Marc Titinger 2015-10-12 23:33 ` Tony Lindgren 0 siblings, 1 reply; 16+ messages in thread From: Marc Titinger @ 2015-09-25 14:57 UTC (permalink / raw) To: Steven Rostedt; +Cc: khilman, rjw, linux-omap, linux-pm On 25/09/2015 16:10, Steven Rostedt wrote: > On Fri, 25 Sep 2015 15:22:25 +0200 > Marc Titinger <mtitinger@baylibre.com> wrote: > >> From: Marc Titinger <mtitinger@baylibre.com> >> >> power_domain_target arg3 is now a string (event name) with generic power >> domains. In the case of Omap, it is a hint to the prev/next switch op. >> Incidentally this trace is now conditioned by CONFIG_PM_ADVANCED_DEBUG. > I'm curious to why the addition of this config option? > I meant to be consistent with Juno/generic-power-domains, so that this trace always (or never) requires this switch. I think I will remove this condition for both actually. >> Compiled for Omap2+ but not tested. >> >> Signed-off-by: Marc Titinger <mtitinger@baylibre.com> >> --- >> arch/arm/mach-omap2/powerdomain.c | 32 ++++++++++++++++++++------------ >> 1 file changed, 20 insertions(+), 12 deletions(-) >> >> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c >> index 78af6d8..cd77696 100644 >> --- a/arch/arm/mach-omap2/powerdomain.c >> +++ b/arch/arm/mach-omap2/powerdomain.c >> @@ -160,7 +160,7 @@ static void _update_logic_membank_counters(struct powerdomain *pwrdm) >> static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) >> { >> >> - int prev, next, state, trace_state = 0; >> + int prev, state; >> >> if (pwrdm == NULL) >> return -EINVAL; >> @@ -177,18 +177,25 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) >> pwrdm->state_counter[prev]++; >> if (prev == PWRDM_POWER_RET) >> _update_logic_membank_counters(pwrdm); >> - /* >> - * If the power domain did not hit the desired state, >> - * generate a trace event with both the desired and hit states >> - */ >> - next = pwrdm_read_next_pwrst(pwrdm); >> - if (next != prev) { >> - trace_state = (PWRDM_TRACE_STATES_FLAG | >> + >> +#ifdef CONFIG_PM_ADVANCED_DEBUG > You do realize that you can add this to the block: > > > if (trace_power_domain_target_enabled()) { Nope I didn't, but now I do ;) thanks. Marc. > > as it seems this code is only run to pass data to the tracepoint. The > above if statement will keep this block in the 'out-of-line' path when > tracing is not enabled via a static_key (jump-label). > > -- Steve > >> + { >> + /* >> + * If the power domain did not hit the desired state, >> + * generate a trace event with both the desired and hit >> + * states */ >> + int next = pwrdm_read_next_pwrst(pwrdm); >> + >> + if (next != prev) { >> + int trace_state = (PWRDM_TRACE_STATES_FLAG | >> ((next & OMAP_POWERSTATE_MASK) << 8) | >> ((prev & OMAP_POWERSTATE_MASK) << 0)); >> - trace_power_domain_target(pwrdm->name, trace_state, >> - smp_processor_id()); >> + trace_power_domain_target(pwrdm->name, >> + trace_state, "PWRDM_STATE_PREV"); >> + } >> } >> +#endif >> + >> break; >> default: >> return -EINVAL; >> @@ -522,9 +529,10 @@ int pwrdm_set_next_pwrst(struct powerdomain *pwrdm, u8 pwrst) >> pwrdm->name, pwrst); >> >> if (arch_pwrdm && arch_pwrdm->pwrdm_set_next_pwrst) { >> +#ifdef CONFIG_PM_ADVANCED_DEBUG >> /* Trace the pwrdm desired target state */ >> - trace_power_domain_target(pwrdm->name, pwrst, >> - smp_processor_id()); >> + trace_power_domain_target(pwrdm->name, pwrst, "set_next_pwrst"); >> +#endif >> /* Program the pwrdm desired target state */ >> ret = arch_pwrdm->pwrdm_set_next_pwrst(pwrdm, pwrst); >> } ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] arm: omap2+: PM: change trace_power_domain_target event format. 2015-09-25 14:57 ` Marc Titinger @ 2015-10-12 23:33 ` Tony Lindgren 2015-10-13 7:59 ` Marc Titinger 0 siblings, 1 reply; 16+ messages in thread From: Tony Lindgren @ 2015-10-12 23:33 UTC (permalink / raw) To: Marc Titinger; +Cc: Steven Rostedt, khilman, rjw, linux-omap, linux-pm * Marc Titinger <mtitinger@baylibre.com> [150925 08:02]: > > > On 25/09/2015 16:10, Steven Rostedt wrote: > >On Fri, 25 Sep 2015 15:22:25 +0200 > >Marc Titinger <mtitinger@baylibre.com> wrote: > > > >>From: Marc Titinger <mtitinger@baylibre.com> > >> > >>power_domain_target arg3 is now a string (event name) with generic power > >>domains. In the case of Omap, it is a hint to the prev/next switch op. > >>Incidentally this trace is now conditioned by CONFIG_PM_ADVANCED_DEBUG. > >I'm curious to why the addition of this config option? > > > I meant to be consistent with Juno/generic-power-domains, so that this trace > always (or never) requires this switch. > I think I will remove this condition for both actually. > > >>Compiled for Omap2+ but not tested. > >> > >>Signed-off-by: Marc Titinger <mtitinger@baylibre.com> > >>--- > >> arch/arm/mach-omap2/powerdomain.c | 32 ++++++++++++++++++++------------ > >> 1 file changed, 20 insertions(+), 12 deletions(-) > >> > >>diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c > >>index 78af6d8..cd77696 100644 > >>--- a/arch/arm/mach-omap2/powerdomain.c > >>+++ b/arch/arm/mach-omap2/powerdomain.c > >>@@ -160,7 +160,7 @@ static void _update_logic_membank_counters(struct powerdomain *pwrdm) > >> static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) > >> { > >>- int prev, next, state, trace_state = 0; > >>+ int prev, state; > >> if (pwrdm == NULL) > >> return -EINVAL; > >>@@ -177,18 +177,25 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) > >> pwrdm->state_counter[prev]++; > >> if (prev == PWRDM_POWER_RET) > >> _update_logic_membank_counters(pwrdm); > >>- /* > >>- * If the power domain did not hit the desired state, > >>- * generate a trace event with both the desired and hit states > >>- */ > >>- next = pwrdm_read_next_pwrst(pwrdm); > >>- if (next != prev) { > >>- trace_state = (PWRDM_TRACE_STATES_FLAG | > >>+ > >>+#ifdef CONFIG_PM_ADVANCED_DEBUG > >You do realize that you can add this to the block: > > > > > > if (trace_power_domain_target_enabled()) { > Nope I didn't, but now I do ;) thanks. Probably best to keep this with your series, it should not cause merge conflicts, so: Acked-by: Tony Lindgren <tony@atomide.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 2/2] arm: omap2+: PM: change trace_power_domain_target event format. 2015-10-12 23:33 ` Tony Lindgren @ 2015-10-13 7:59 ` Marc Titinger 0 siblings, 0 replies; 16+ messages in thread From: Marc Titinger @ 2015-10-13 7:59 UTC (permalink / raw) To: Tony Lindgren; +Cc: Steven Rostedt, khilman, rjw, linux-omap, linux-pm On 13/10/2015 01:33, Tony Lindgren wrote: > * Marc Titinger <mtitinger@baylibre.com> [150925 08:02]: >> >> >> On 25/09/2015 16:10, Steven Rostedt wrote: >>> On Fri, 25 Sep 2015 15:22:25 +0200 >>> Marc Titinger <mtitinger@baylibre.com> wrote: >>> >>>> From: Marc Titinger <mtitinger@baylibre.com> >>>> >>>> power_domain_target arg3 is now a string (event name) with generic power >>>> domains. In the case of Omap, it is a hint to the prev/next switch op. >>>> Incidentally this trace is now conditioned by CONFIG_PM_ADVANCED_DEBUG. >>> I'm curious to why the addition of this config option? >>> >> I meant to be consistent with Juno/generic-power-domains, so that this trace >> always (or never) requires this switch. >> I think I will remove this condition for both actually. >> >>>> Compiled for Omap2+ but not tested. >>>> >>>> Signed-off-by: Marc Titinger <mtitinger@baylibre.com> >>>> --- >>>> arch/arm/mach-omap2/powerdomain.c | 32 ++++++++++++++++++++------------ >>>> 1 file changed, 20 insertions(+), 12 deletions(-) >>>> >>>> diff --git a/arch/arm/mach-omap2/powerdomain.c b/arch/arm/mach-omap2/powerdomain.c >>>> index 78af6d8..cd77696 100644 >>>> --- a/arch/arm/mach-omap2/powerdomain.c >>>> +++ b/arch/arm/mach-omap2/powerdomain.c >>>> @@ -160,7 +160,7 @@ static void _update_logic_membank_counters(struct powerdomain *pwrdm) >>>> static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) >>>> { >>>> - int prev, next, state, trace_state = 0; >>>> + int prev, state; >>>> if (pwrdm == NULL) >>>> return -EINVAL; >>>> @@ -177,18 +177,25 @@ static int _pwrdm_state_switch(struct powerdomain *pwrdm, int flag) >>>> pwrdm->state_counter[prev]++; >>>> if (prev == PWRDM_POWER_RET) >>>> _update_logic_membank_counters(pwrdm); >>>> - /* >>>> - * If the power domain did not hit the desired state, >>>> - * generate a trace event with both the desired and hit states >>>> - */ >>>> - next = pwrdm_read_next_pwrst(pwrdm); >>>> - if (next != prev) { >>>> - trace_state = (PWRDM_TRACE_STATES_FLAG | >>>> + >>>> +#ifdef CONFIG_PM_ADVANCED_DEBUG >>> You do realize that you can add this to the block: >>> >>> >>> if (trace_power_domain_target_enabled()) { >> Nope I didn't, but now I do ;) thanks. > > Probably best to keep this with your series, it should not cause merge conflicts, > so: > > Acked-by: Tony Lindgren <tony@atomide.com> > Thanks for the ack. Indeed, I rebased it on current but figured that it's not that usefull until 'multiple states' are merged in. M. ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2015-10-14 16:49 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2015-09-25 13:22 [PATCH 0/2] Trace: PM: promote event 'power_domain_target' to generic power domains Marc Titinger 2015-09-25 13:22 ` [PATCH 1/2] " Marc Titinger 2015-09-25 14:05 ` Steven Rostedt 2015-09-28 8:44 ` [PATCH v2 " Marc Titinger 2015-09-28 8:44 ` [PATCH v2 2/2] arm: omap2+: PM: change trace_power_domain_target event format Marc Titinger 2015-09-28 13:20 ` [PATCH v3 1/2] Trace: PM: promote event 'power_domain_target' to generic power domains Marc Titinger 2015-09-28 13:31 ` kbuild test robot 2015-10-14 0:55 ` Rafael J. Wysocki 2015-10-14 8:18 ` Marc Titinger 2015-10-14 16:49 ` Rafael J. Wysocki 2015-09-28 13:20 ` [PATCH v3 2/2] arm: omap2+: PM: change trace_power_domain_target event format Marc Titinger 2015-09-25 13:22 ` [PATCH " Marc Titinger 2015-09-25 14:10 ` Steven Rostedt 2015-09-25 14:57 ` Marc Titinger 2015-10-12 23:33 ` Tony Lindgren 2015-10-13 7:59 ` Marc Titinger
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).