From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: rjw@rjwysocki.net, preeti@linux.vnet.ibm.com,
nicolas.pitre@linaro.org, linux-pm@vger.kernel.org,
linux-kernel@vger.kernel.org, linaro-kernel@lists.linaro.org,
patches@linaro.org, lenb@kernel.org
Subject: Re: [PATCH V3 2/6] sched: idle: cpuidle: Check the latency req before idle
Date: Mon, 10 Nov 2014 16:12:47 +0100 [thread overview]
Message-ID: <5460D5EF.2000805@linaro.org> (raw)
In-Reply-To: <20141110124111.GN3337@twins.programming.kicks-ass.net>
On 11/10/2014 01:41 PM, Peter Zijlstra wrote:
> On Fri, Nov 07, 2014 at 03:31:23PM +0100, Daniel Lezcano wrote:
>> @@ -216,19 +219,26 @@ static void cpu_idle_loop(void)
>> local_irq_disable();
>> arch_cpu_idle_enter();
>>
>> + latency_req = pm_qos_request(PM_QOS_CPU_DMA_LATENCY);
>> +
>> /*
>> * In poll mode we reenable interrupts and spin.
>> *
>> + * If the latency req is zero, we don't want to
>> + * enter any idle state and we jump to the poll
>> + * function directly
>> + *
>> * Also if we detected in the wakeup from idle
>> * path that the tick broadcast device expired
>> * for us, we don't want to go deep idle as we
>> * know that the IPI is going to arrive right
>> * away
>> */
>> - if (cpu_idle_force_poll || tick_check_broadcast_expired())
>> + if (!latency_req || cpu_idle_force_poll ||
>> + tick_check_broadcast_expired())
>> cpu_idle_poll();
>
> Is this why you wanted that weak poll function?
Not only there, it will be added in the next patchset in the
cpu_idle_call function.
> Should we not instead allow an arch to deal with !latency_req and only
> fall back to this polling if there is no actual way for it to implement
> this better?
All this is to remove the poll idle state from the x86 cpuidle driver in
order to remove the CPUIDLE_DRIVER_STATE_START (this one forces to write
always ugly code in the cpuidle framework).
This poll state introduces the CPUIDLE_DRIVER_STATE_START macro. If you
look at the different governors and the code, you can checkout what kind
of tricks this macro introduces and how that makes the code ugly.
For the sake of what ? Just a small optimization in the menu governor.
I suppose that has been introduce and then evolved on a wrong basis. So
now we have to deal with that.
This patchset provides a first round of cleanup around the poll
function, the next patchset will move the 5us timer optimization from
the menu governor and the last patchset will remove the
CPUIDLE_DRIVER_STATE_START ugly macro.
--
<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
next prev parent reply other threads:[~2014-11-10 15:12 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-07 14:31 [PATCH V3 0/6] sched: idle: cpuidle: cleanups and fixes Daniel Lezcano
2014-11-07 14:31 ` [PATCH V3 1/6] sched: idle: Add a weak arch_cpu_idle_poll function Daniel Lezcano
2014-11-08 10:39 ` Preeti U Murthy
2014-11-10 12:29 ` Peter Zijlstra
2014-11-10 14:20 ` Preeti U Murthy
2014-11-10 15:17 ` Peter Zijlstra
2014-11-11 11:00 ` Preeti U Murthy
2014-11-07 14:31 ` [PATCH V3 2/6] sched: idle: cpuidle: Check the latency req before idle Daniel Lezcano
2014-11-08 10:40 ` Preeti U Murthy
2014-11-10 12:41 ` Peter Zijlstra
2014-11-10 15:12 ` Daniel Lezcano [this message]
2014-11-10 15:28 ` Peter Zijlstra
2014-11-10 15:58 ` Daniel Lezcano
2014-11-10 16:15 ` Peter Zijlstra
2014-11-10 17:19 ` Daniel Lezcano
2014-11-10 19:48 ` Peter Zijlstra
2014-11-10 22:21 ` Daniel Lezcano
2014-11-11 10:20 ` Peter Zijlstra
2014-11-12 13:53 ` Daniel Lezcano
2014-11-12 15:02 ` Peter Zijlstra
2014-11-12 17:52 ` Daniel Lezcano
2014-11-07 14:31 ` [PATCH V3 3/6] sched: idle: Get the next timer event and pass it the cpuidle framework Daniel Lezcano
2014-11-08 10:44 ` Preeti U Murthy
2014-11-10 12:43 ` Peter Zijlstra
2014-11-10 15:15 ` Daniel Lezcano
2014-11-07 14:31 ` [PATCH V3 4/6] cpuidle: idle: menu: Don't reflect when a state selection failed Daniel Lezcano
2014-11-08 10:41 ` Preeti U Murthy
2014-11-07 14:31 ` [PATCH V3 5/6] cpuidle: menu: Fix the get_typical_interval Daniel Lezcano
2014-11-07 14:31 ` [PATCH V3 6/6] cpuidle: menu: Move the update function before its declaration Daniel Lezcano
2014-11-07 14:34 ` [PATCH V3 0/6] sched: idle: cpuidle: cleanups and fixes Daniel Lezcano
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=5460D5EF.2000805@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=lenb@kernel.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=nicolas.pitre@linaro.org \
--cc=patches@linaro.org \
--cc=peterz@infradead.org \
--cc=preeti@linux.vnet.ibm.com \
--cc=rjw@rjwysocki.net \
/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).