* [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
* [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 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
* 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
* [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
* [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
* 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 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
* 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
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).