From: Alex Shi <alex.shi@linaro.org>
To: open list <linux-kernel@vger.kernel.org>
Cc: linux-pm@vger.kernel.org, Ulf Hansson <ulf.hansson@linaro.org>,
Daniel Lezcano <daniel.lezcano@linaro.org>,
Rasmus Villemoes <linux@rasmusvillemoes.dk>,
Arjan van de Ven <arjan@linux.intel.com>,
Rik van Riel <riel@redhat.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
Subject: Re: [PATCH 4/4] cpuidle/menu: add per cpu pm_qos_resume_latency consideration
Date: Tue, 13 Sep 2016 22:02:49 +0800 [thread overview]
Message-ID: <57D80709.4040500@linaro.org> (raw)
In-Reply-To: <1472114562-2736-4-git-send-email-alex.shi@linaro.org>
Hi Daniel & Rafael,
Any comments on this patch?
On 08/25/2016 04:42 PM, Alex Shi wrote:
> Kernel or user may have special requirement on cpu response time, like
> if a interrupt is pinned to a cpu, we don't want the cpu goes too deep
> sleep. This patch can prevent this thing happen by consider per cpu
> resume_latency setting in cpu sleep state selection in menu governor.
>
> The pm_qos_resume_latency ask device to give reponse in this time. That's
> similar with cpu cstates' entry_latency + exit_latency. But since
> most of cpu cstate either has no entry_latency or add it into exit_latency
> So, we just can restrict this time requirement as states exit_latency.
>
> The 0 value of pm_qos_resume_latency is for no limitation according ABI
> definition. So set the value 1 could get the 0 latency if it's needed.
>
> Signed-off-by: Alex Shi <alex.shi@linaro.org>
> To: linux-kernel@vger.kernel.org
> Cc: linux-pm@vger.kernel.org
> Cc: Ulf Hansson <ulf.hansson@linaro.org>
> Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
> Cc: Alex Shi <alex.shi@linaro.org>
> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk>
> Cc: Arjan van de Ven <arjan@linux.intel.com>
> Cc: Rik van Riel <riel@redhat.com>
> Cc: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
> ---
> drivers/cpuidle/governors/menu.c | 7 +++++++
> 1 file changed, 7 insertions(+)
>
> diff --git a/drivers/cpuidle/governors/menu.c b/drivers/cpuidle/governors/menu.c
> index bb58e2a..e354880 100644
> --- a/drivers/cpuidle/governors/menu.c
> +++ b/drivers/cpuidle/governors/menu.c
> @@ -12,6 +12,7 @@
>
> #include <linux/kernel.h>
> #include <linux/cpuidle.h>
> +#include <linux/cpu.h>
> #include <linux/pm_qos.h>
> #include <linux/time.h>
> #include <linux/ktime.h>
> @@ -281,17 +282,23 @@ again:
> static int menu_select(struct cpuidle_driver *drv, struct cpuidle_device *dev)
> {
> struct menu_device *data = this_cpu_ptr(&menu_devices);
> + struct device *device = get_cpu_device(dev->cpu);
> int latency_req = pm_qos_request(PM_QOS_CPU_DMA_LATENCY);
> int i;
> unsigned int interactivity_req;
> unsigned int expected_interval;
> unsigned long nr_iowaiters, cpu_load;
> + int resume_latency = dev_pm_qos_read_value(device);
>
> if (data->needs_update) {
> menu_update(drv, dev);
> data->needs_update = 0;
> }
>
> + /* resume_latency is 0 means no restriction */
> + if (resume_latency && resume_latency < latency_req)
> + latency_req = resume_latency;
> +
> /* Special case when user has set very strict latency requirement */
> if (unlikely(latency_req == 0))
> return 0;
>
next prev parent reply other threads:[~2016-09-13 14:02 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-25 8:42 [PATCH 1/4] cpu: clean up register_cpu func Alex Shi
2016-08-25 8:42 ` Alex Shi
2016-08-25 8:42 ` [PATCH 2/4] cpu: expose pm_qos_resume_latency for each cpu Alex Shi
2016-08-25 8:42 ` Alex Shi
2016-08-31 10:45 ` Alex Shi
2016-08-31 13:18 ` Greg Kroah-Hartman
2016-09-01 3:39 ` Alex Shi
2016-09-01 3:45 ` Alex Shi
2016-09-01 3:50 ` Alex Shi
2016-09-01 9:26 ` Ulf Hansson
2016-09-13 1:04 ` Alex Shi
2016-09-13 7:17 ` Ulf Hansson
2016-09-13 13:57 ` Alex Shi
2016-08-25 8:42 ` [PATCH 3/4] cpuidle/menu: stop seeking deeper idle if current state is too deep Alex Shi
2016-08-25 8:42 ` Alex Shi
2016-08-31 10:45 ` Alex Shi
2016-09-13 14:01 ` Alex Shi
2016-08-25 8:42 ` [PATCH 4/4] cpuidle/menu: add per cpu pm_qos_resume_latency consideration Alex Shi
2016-08-25 8:42 ` Alex Shi
2016-08-31 10:46 ` Alex Shi
2016-09-13 14:02 ` Alex Shi [this message]
2016-09-13 22:10 ` Rafael J. Wysocki
2016-09-14 8:28 ` Vincent Guittot
2016-09-23 1:36 ` Rafael J. Wysocki
2016-09-23 4:58 ` Alex Shi
2016-08-31 10:45 ` [PATCH 1/4] cpu: clean up register_cpu func Alex Shi
2016-08-31 13:17 ` Greg Kroah-Hartman
-- strict thread matches above, loose matches on Subject: below --
2016-08-19 8:25 Alex Shi
2016-08-19 8:25 ` [PATCH 4/4] cpuidle/menu: add per cpu pm_qos_resume_latency consideration Alex Shi
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=57D80709.4040500@linaro.org \
--to=alex.shi@linaro.org \
--cc=arjan@linux.intel.com \
--cc=daniel.lezcano@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=linux@rasmusvillemoes.dk \
--cc=rafael.j.wysocki@intel.com \
--cc=riel@redhat.com \
--cc=ulf.hansson@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.