linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Maulik Shah <quic_mkshah@quicinc.com>,
	Peter Zijlstra <peterz@infradead.org>,
	"Rafael J. Wysocki" <rafael@kernel.org>
Cc: bjorn.andersson@linaro.org, linux-arm-msm@vger.kernel.org,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	ulf.hansson@linaro.org, quic_lsrao@quicinc.com,
	rnayak@codeaurora.org, Ingo Molnar <mingo@redhat.com>,
	Juri Lelli <juri.lelli@redhat.com>,
	Vincent Guittot <vincent.guittot@linaro.org>
Subject: Re: [PATCH] sched/idle: Export cpu_idle_poll_ctrl() symbol
Date: Thu, 25 Nov 2021 18:26:01 +0100	[thread overview]
Message-ID: <0fb74083-e378-e1b4-624b-4f2076f237df@linaro.org> (raw)
In-Reply-To: <687d97b6-347a-92c0-34ba-00331dfb6c82@quicinc.com>

On 25/11/2021 15:13, Maulik Shah wrote:
> Hi Peter,
> 
> On 11/25/2021 3:21 PM, Peter Zijlstra wrote:
>> On Thu, Nov 25, 2021 at 02:44:36PM +0530, Maulik Shah wrote:
>>> Export cpu_idle_poll_ctrl() so that module drivers can use same.
>> This does not seem like a really safe interface to expose to the
>> world.
> 
> Thanks for the review.
> 
> Keeping the cpuidle enabled from boot up may delay/increase the boot up
> time.
> Below is our use case to force cpuidle to stay in cpu_idle_poll().
> 
> We keep cpuidle disabled from boot up using "nohlt" option of kernel
> command line which internally sets cpu_idle_force_poll = 1;
> and once the device bootup reaches till certain point (for example the
> android homescreen is up) userspace may notify a
> vendor module driver which can invoke cpu_idle_poll_ctrl(false); to come
> out of poll mode.
> So vendor module driver needs cpu_idle_poll_ctrl() exported symbol.
> 
> We can not take PM-QoS from driver to prevent deep cpuidle since all the
> vendor modules are kept in a separate partition and will be loaded only
> after kernel boot up is done
> and by this time kernel already starts executing deep cpuidle modes.
>>
>> Surely the better solution is to rework things to not rely on this. I'm
>> fairly sure it's not hard to write a cpuidle driver that does much the
>> same.
> The other option i think is to pass cpuidle.off=1 in kernel command line
> and then add enable_cpuidle() in drivers/cpuidle/cpuidle.c
> something similar as below which can be called by vendor module.
> 
> void enable_cpuidle(void)
> {
>         off = 0;
> }
> EXPORT_SYMBOL_GPL(enable_cpuidle);
> 
> This may be a good option since we have already disable_cpuidle() but
> not enable_cpuidle().
> 
> void disable_cpuidle(void)
> {
>         off = 1;
> }
> 
> Hi Rafael/Daniel, can you please let me know your suggestion on
> this/similar implementation?

Did you try to use the QoS latency? Sounds like it is exactly for this
purpose.

Set it to zero to force cpuidle to choose the shallowest idle state and
then INT_MAX to disable the constraint.

 cpu_latency_qos_add_request();

Hope that helps

  -- Daniel

-- 
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

  reply	other threads:[~2021-11-25 17:39 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-25  9:14 [PATCH] sched/idle: Export cpu_idle_poll_ctrl() symbol Maulik Shah
2021-11-25  9:51 ` Peter Zijlstra
2021-11-25 14:13   ` Maulik Shah
2021-11-25 17:26     ` Daniel Lezcano [this message]
2021-11-26  5:56       ` Maulik Shah
2021-11-26 11:22         ` Daniel Lezcano
2021-11-26 12:05     ` Ulf Hansson
2021-11-25  9:18 Maulik Shah
2021-11-26  9:15 ` Christoph Hellwig

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=0fb74083-e378-e1b4-624b-4f2076f237df@linaro.org \
    --to=daniel.lezcano@linaro.org \
    --cc=bjorn.andersson@linaro.org \
    --cc=juri.lelli@redhat.com \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=quic_lsrao@quicinc.com \
    --cc=quic_mkshah@quicinc.com \
    --cc=rafael@kernel.org \
    --cc=rnayak@codeaurora.org \
    --cc=ulf.hansson@linaro.org \
    --cc=vincent.guittot@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 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).