From: Nicholas Piggin <npiggin@gmail.com> Date: 2017-06-14 13:03:04
Hi,
These are a few small improvements that came from doing an
optimisation pass over powerpc cpu idle paths.
Michael reminded me to cc the cpuidle maintainers. I think he
will take the patches through the powerpc tree, but any suggestion
or ack or nack would be welcome.
Thanks,
Nick
Nicholas Piggin (3):
cpuidle: powerpc: cpuidle set polling before enabling irqs
cpuidle: powerpc: read mostly for common globals
cpuidle: powerpc: no memory barrier after break from idle
drivers/cpuidle/cpuidle-powernv.c | 25 +++++++++++++++++--------
drivers/cpuidle/cpuidle-pseries.c | 22 +++++++++++++++-------
2 files changed, 32 insertions(+), 15 deletions(-)
--
2.11.0
From: Nicholas Piggin <npiggin@gmail.com> Date: 2017-06-14 13:03:11
local_irq_enable can cause interrupts to be taken which could
take significant amount of processing time. The idle process
should set its polling flag before this, so another process that
wakes it during this time will not have to send an IPI.
Expand the TIF_POLLING_NRFLAG coverage to as large as possible.
Reviewed-by: Gautham R. Shenoy <redacted>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
drivers/cpuidle/cpuidle-powernv.c | 4 +++-
drivers/cpuidle/cpuidle-pseries.c | 3 ++-
2 files changed, 5 insertions(+), 2 deletions(-)
From: Nicholas Piggin <npiggin@gmail.com> Date: 2017-06-14 13:03:21
A memory barrier is not required after the task wakes up,
only if we clear the polling flag before waking. The case
where we have work to do is the important one, so optimise
for it.
Reviewed-by: Vaidyanathan Srinivasan <redacted>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
drivers/cpuidle/cpuidle-powernv.c | 11 +++++++++--
drivers/cpuidle/cpuidle-pseries.c | 11 +++++++++--
2 files changed, 18 insertions(+), 4 deletions(-)
From: Michael Ellerman <hidden> Date: 2017-06-29 12:21:19
On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote:
local_irq_enable can cause interrupts to be taken which could
take significant amount of processing time. The idle process
should set its polling flag before this, so another process that
wakes it during this time will not have to send an IPI.
Expand the TIF_POLLING_NRFLAG coverage to as large as possible.
Reviewed-by: Gautham R. Shenoy <redacted>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
From: "Rafael J. Wysocki" <rafael@kernel.org> Date: 2017-06-29 20:38:57
On Thu, Jun 29, 2017 at 2:21 PM, Michael Ellerman
[off-list ref] wrote:
On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote:
quoted
local_irq_enable can cause interrupts to be taken which could
take significant amount of processing time. The idle process
should set its polling flag before this, so another process that
wakes it during this time will not have to send an IPI.
Expand the TIF_POLLING_NRFLAG coverage to as large as possible.
Reviewed-by: Gautham R. Shenoy <redacted>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
From: Michael Ellerman <mpe@ellerman.id.au> Date: 2017-06-30 03:45:13
"Rafael J. Wysocki" [off-list ref] writes:
On Thu, Jun 29, 2017 at 2:21 PM, Michael Ellerman
[off-list ref] wrote:
quoted
On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote:
quoted
local_irq_enable can cause interrupts to be taken which could
take significant amount of processing time. The idle process
should set its polling flag before this, so another process that
wakes it during this time will not have to send an IPI.
Expand the TIF_POLLING_NRFLAG coverage to as large as possible.
Reviewed-by: Gautham R. Shenoy <redacted>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
From: "Rafael J. Wysocki" <rafael@kernel.org> Date: 2017-06-30 12:51:11
On Fri, Jun 30, 2017 at 5:45 AM, Michael Ellerman [off-list ref] wrote:
"Rafael J. Wysocki" [off-list ref] writes:
quoted
On Thu, Jun 29, 2017 at 2:21 PM, Michael Ellerman
[off-list ref] wrote:
quoted
On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote:
quoted
local_irq_enable can cause interrupts to be taken which could
take significant amount of processing time. The idle process
should set its polling flag before this, so another process that
wakes it during this time will not have to send an IPI.
Expand the TIF_POLLING_NRFLAG coverage to as large as possible.
Reviewed-by: Gautham R. Shenoy <redacted>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
From: Michael Ellerman <mpe@ellerman.id.au> Date: 2017-07-04 02:59:05
"Rafael J. Wysocki" [off-list ref] writes:
On Fri, Jun 30, 2017 at 5:45 AM, Michael Ellerman [off-list ref] wrote:
quoted
"Rafael J. Wysocki" [off-list ref] writes:
quoted
On Thu, Jun 29, 2017 at 2:21 PM, Michael Ellerman
[off-list ref] wrote:
quoted
On Wed, 2017-06-14 at 13:02:39 UTC, Nicholas Piggin wrote:
quoted
local_irq_enable can cause interrupts to be taken which could
take significant amount of processing time. The idle process
should set its polling flag before this, so another process that
wakes it during this time will not have to send an IPI.
Expand the TIF_POLLING_NRFLAG coverage to as large as possible.
Reviewed-by: Gautham R. Shenoy <redacted>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>