All of lore.kernel.org
 help / color / mirror / Atom feed
From: Axel Haslam <ahaslam@baylibre.com>
To: Zhaoyang Huang <zhaoyang.huang@linaro.org>
Cc: Kevin Hilman <khilman@linaro.org>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Lina Iyer <lina.iyer@linaro.org>,
	geert@glider.be, k.kozlowski.k@gmail.com, rjw@rjwysocki.net,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	bcousson@baylibre.com, mturquette@baylibre.com,
	Axel Haslam <ahaslam+renesas@baylibre.com>
Subject: Re: [PATCH v10 3/6] PM / Domains: make governor select deepest state
Date: Tue, 10 Nov 2015 14:58:13 +0100	[thread overview]
Message-ID: <5641F7F5.2040901@baylibre.com> (raw)
In-Reply-To: <CAN2waFvS9sphJTi2_8H2_amnRspgQ_pO1-OJCN0XXcJq03OxAw@mail.gmail.com>

Hi Zhaoyang,


>> @@ -209,14 +186,52 @@ static bool default_power_down_ok(struct dev_pm_domain *pd)
>>           * The difference between the computed minimum subdomain or device off
>>           * time and the time needed to turn the domain on is the maximum
>>           * theoretical time this domain can spend in the "off" state.
>> -        * Use the only available state, until multiple state support is added
>> -        * to the governor.
>>           */
>>          genpd->max_off_time_ns = min_off_time_ns -
>> -               genpd->states[0].power_on_latency_ns;
>> +                       genpd->states[state].power_on_latency_ns;
>>          return true;
>>   }
> [question]: Does it mean that the sleep level is just decided by
> comparing the pre-configure on_off time with the gpd_timing_data? How
> about the next timer event which affect the sleep depth on cpuidle
> framework?



There are a couple of patches on the list ill try to summarize
what i understand, Lina, Marc please correct me if im wrong!

I did this patches thinking generally about devices in a power domain 
and not so much about a cpu. So these patches are not aimed at replacing 
cpuidle, but were meant for power domains that may have intermediate 
states, for example some logic may be implemented with retention flip-flops.

There is the proposal by Lina [1] to add cpus clusters to powerdomins
and by Marc[2] that tie cluster idle states to the powerdomain handler.
but i think the effort here is to complement cpuidle rather than to
replace it.

regards
Axel

1. https://lwn.net/Articles/653579/
2. https://lwn.net/Articles/658461/

>>
>> +static bool default_power_down_ok(struct dev_pm_domain *pd)
>> +{
>> +       struct generic_pm_domain *genpd = pd_to_genpd(pd);
>> +       unsigned int last_state_idx = genpd->state_count - 1;
>> +       struct gpd_link *link;
>> +       bool retval = false;
>> +       unsigned int i;
>> +
>> +       /*
>> +        * if there was no change on max_off_time, we can return the
>> +        * cached value and we dont need to find a new target_state
>> +        */
>> +       if (!genpd->max_off_time_changed)
>> +               return genpd->cached_power_down_ok;
>> +
>> +       /*
>> +        * We have to invalidate the cached results for the masters, so
>> +        * use the observation that default_power_down_ok() is not
>> +        * going to be called for any master until this instance
>> +        * returns.
>> +        */
>> +       list_for_each_entry(link, &genpd->slave_links, slave_node)
>> +               link->master->max_off_time_changed = true;
>> +
>> +       genpd->max_off_time_ns = -1;
>> +       genpd->max_off_time_changed = false;
>> +
>> +       /* find a state to power down to, starting from the deepest */
>> +       for (i = 0; i < genpd->state_count; i++) {
>> +               if (power_down_ok_for_state(pd, last_state_idx - i)) {
>> +                       genpd->state_idx = last_state_idx - i;
>> +                       retval = true;
>> +                       break;
>> +               }
>> +       }
>> +
>> +       genpd->cached_power_down_ok = retval;
>> +       return retval;
>> +}
>> +
>>   static bool always_on_power_down_ok(struct dev_pm_domain *domain)
>>   {
>>          return false;
> [question]How the TICK_NOHZ treated if we substitute cpuidle framework
> with this one?
>> --
>> 2.4.5
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-pm" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html

  reply	other threads:[~2015-11-10 13:58 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-20 13:26 [PATCH v10 0/6] Multiple intermediate states for genpd ahaslam
2015-10-20 13:26 ` [PATCH v10 1/6] PM / Domains: prepare for multiple states ahaslam
2015-10-27 14:33   ` Ulf Hansson
2015-10-27 17:04     ` Axel Haslam
2015-10-20 13:26 ` [PATCH v10 2/6] PM / Domains: core changes " ahaslam
     [not found]   ` <CAN2waFuQ+72zstgdD7GbxOr=d1T1wkqRvRePfL8KJbTceEGdzA@mail.gmail.com>
2015-11-10 11:02     ` Axel Haslam
2015-10-20 13:26 ` [PATCH v10 3/6] PM / Domains: make governor select deepest state ahaslam
2015-11-10  9:42   ` Zhaoyang Huang
2015-11-10 13:58     ` Axel Haslam [this message]
2015-10-20 13:26 ` [PATCH v10 4/6] ARM: imx6: pm: declare pm domain latency on power_state struct ahaslam
2015-10-20 13:26 ` [PATCH v10 5/6] PM / Domains: remove old power on/off latencies ahaslam
2015-10-20 13:26 ` [PATCH v10 6/6] PM / Domains: add debugfs 'states' and 'timings' seq files ahaslam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5641F7F5.2040901@baylibre.com \
    --to=ahaslam@baylibre.com \
    --cc=ahaslam+renesas@baylibre.com \
    --cc=bcousson@baylibre.com \
    --cc=geert@glider.be \
    --cc=k.kozlowski.k@gmail.com \
    --cc=khilman@linaro.org \
    --cc=lina.iyer@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=rjw@rjwysocki.net \
    --cc=ulf.hansson@linaro.org \
    --cc=zhaoyang.huang@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.