Re: [PATCH 2/2] arm: omap2+: PM: change trace_power_domain_target event format.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 





On 25/09/2015 16:10, Steven Rostedt wrote:
On Fri, 25 Sep 2015 15:22:25 +0200
Marc Titinger <mtitinger@xxxxxxxxxxxx> wrote:

From: Marc Titinger <mtitinger@xxxxxxxxxxxx>

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@xxxxxxxxxxxx>
---
  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);
  	}

--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux