All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/6] ARM generic idle states
@ 2014-06-11 16:18 ` Lorenzo Pieralisi
  0 siblings, 0 replies; 74+ messages in thread
From: Lorenzo Pieralisi @ 2014-06-11 16:18 UTC (permalink / raw)
  To: linux-arm-kernel, linux-pm, devicetree
  Cc: Lorenzo Pieralisi, Mark Rutland, Sudeep Holla, Catalin Marinas,
	Charles Garcia Tobin, Nicolas Pitre, Rob Herring, Grant Likely,
	Peter De Schrijver, Santosh Shilimkar, Daniel Lezcano,
	Amit Kucheria, Vincent Guittot, Antti Miettinen, Stephen Boyd,
	Kevin Hilman, Sebastian Capella, Tomasz Figa, Mark Brown,
	Paul Walmsley, Chander Kashyap

This patch is v4 of a previous posting:

http://lists.infradead.org/pipermail/linux-arm-kernel/2014-May/253693.html

Changes in v4:

- States sorting using exit-latency
- Added cosmetic review comments
- Dropped RFC tag
- Rebased against 3.15

Changes in v3:

- Streamlined the idle states bindings and added them to the series
  http://www.spinics.net/lists/arm-kernel/msg316299.html
- Sorting states through min-residency+exit-latency
- Added debug strings formatting
- Reworded min-residency-us idle state property
- Removed power-domain properties from idle states waiting for code
  examples requiring them to be defined

Changes in v2:

- Moved OF parsing code to drivers/cpuidle
- Improved states detection and sorting through linked list
- Split code in generic and ARM64 specific bits
- Moved idle enter function into ARM64 idle driver
- Refactored PSCI idle states register function
- Renamed suspend operations and moved detection to ARM64 idle driver
- Changed the way CPUIDLE_FLAG_TIMER_STOP is handled
- Simplified idle state nodes parsing since according to the latest
  bindings idle state nodes are a flat list, not hierarchical anymore
- Used min-residency-us to sort the states, to be further discussed

Idle states on most ARM platforms can be characterized by a set of
parameters that are platform agnostic and describe the HW idle states
features. So far, CPU idle drivers for ARM platforms required the definition
of parameters through static tables, duplicating control data for different
platforms. Moreover, the lack of standardization on firmware interfaces
hampered any standardization effort, resulting in CPU idle drivers for ARM
platforms containing duplicated code and platform specific power down routines.

The introduction of the PSCI firmware interface, and more in general, well
defined suspend back-ends, allows the definition of generic idle states and
the respective kernel infrastructure to support them.

Building on top of DT idle states bindings, that standardize idle states
parameters and corresponding suspend back-ends, this patchset provides code
that parses DT idle states nodes and builds at run-time the control data
infrastructure required by the ARM CPU idle drivers.

Idle states define an entry method (eg PSCI), that requires the respective
ARM64 kernel back-end to be invoked to initialize idle states parameters, so
that when the idle driver executes the back-end specific entry method a table
look-up can be carried out to retrieve the corresponding idle state parameter.

On legacy ARM platforms, the OF idle states are just used to initialize
states data.

The idle states bindings can be extended with new back-ends; the ARM64 CPUidle
driver must be updated accordingly so that the corresponding back
end initializer can be invoked at boot time for parameters initialization.

Patchset has been tested on AEM v8 models, on top of bootwrapper PSCI CPU
SUSPEND implementation which provides simulated core power gating.

[1] http://www.spinics.net/lists/arm-kernel/msg316299.html

Lorenzo Pieralisi (6):
  Documentation: arm: define DT idle states bindings
  Documentation: devicetree: psci: define CPU suspend parameter
  drivers: cpuidle: implement OF based idle states infrastructure
  arm64: add PSCI CPU_SUSPEND based cpu_suspend support
  drivers: cpuidle: CPU idle ARM64 driver
  arm64: boot: dts: update rtsm aemv8 dts with PSCI and idle states

 Documentation/devicetree/bindings/arm/cpus.txt     |   8 +
 .../devicetree/bindings/arm/idle-states.txt        | 507 +++++++++++++++++++++
 Documentation/devicetree/bindings/arm/psci.txt     |  12 +-
 arch/arm64/boot/dts/rtsm_ve-aemv8a.dts             |  44 +-
 arch/arm64/include/asm/psci.h                      |   4 +
 arch/arm64/kernel/psci.c                           | 103 +++++
 drivers/cpuidle/Kconfig                            |  14 +
 drivers/cpuidle/Kconfig.arm64                      |  13 +
 drivers/cpuidle/Makefile                           |   5 +
 drivers/cpuidle/cpuidle-arm64.c                    | 168 +++++++
 drivers/cpuidle/of_idle_states.c                   | 282 ++++++++++++
 drivers/cpuidle/of_idle_states.h                   |   8 +
 12 files changed, 1159 insertions(+), 9 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/arm/idle-states.txt
 create mode 100644 drivers/cpuidle/Kconfig.arm64
 create mode 100644 drivers/cpuidle/cpuidle-arm64.c
 create mode 100644 drivers/cpuidle/of_idle_states.c
 create mode 100644 drivers/cpuidle/of_idle_states.h

-- 
1.8.4



^ permalink raw reply	[flat|nested] 74+ messages in thread

end of thread, other threads:[~2014-07-06 10:01 UTC | newest]

Thread overview: 74+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-06-11 16:18 [PATCH v4 0/6] ARM generic idle states Lorenzo Pieralisi
2014-06-11 16:18 ` Lorenzo Pieralisi
2014-06-11 16:18 ` [PATCH v4 1/6] Documentation: arm: define DT idle states bindings Lorenzo Pieralisi
2014-06-11 16:18   ` Lorenzo Pieralisi
2014-06-11 18:15   ` Nicolas Pitre
2014-06-11 18:15     ` Nicolas Pitre
2014-06-13 16:49     ` Lorenzo Pieralisi
2014-06-13 16:49       ` Lorenzo Pieralisi
2014-06-13 17:33       ` Nicolas Pitre
2014-06-13 17:33         ` Nicolas Pitre
2014-06-16 14:23         ` Lorenzo Pieralisi
2014-06-16 14:23           ` Lorenzo Pieralisi
2014-06-16 14:48           ` Nicolas Pitre
2014-06-16 14:48             ` Nicolas Pitre
2014-06-18 17:36         ` Lorenzo Pieralisi
2014-06-18 17:36           ` Lorenzo Pieralisi
2014-06-18 18:20           ` Sebastian Capella
2014-06-18 18:20             ` Sebastian Capella
2014-06-18 19:27           ` Santosh Shilimkar
2014-06-18 19:27             ` Santosh Shilimkar
2014-06-18 20:51             ` Nicolas Pitre
2014-06-18 20:51               ` Nicolas Pitre
2014-06-18 20:55               ` Santosh Shilimkar
2014-06-18 20:55                 ` Santosh Shilimkar
2014-06-18 21:09                 ` Nicolas Pitre
2014-06-18 21:09                   ` Nicolas Pitre
2014-06-18 23:13                   ` Santosh Shilimkar
2014-06-18 23:13                     ` Santosh Shilimkar
2014-06-19  7:33             ` Charles Garcia-Tobin
2014-06-19  7:33               ` Charles Garcia-Tobin
2014-06-19 14:08               ` Santosh Shilimkar
2014-06-19 14:08                 ` Santosh Shilimkar
2014-06-19 15:09                 ` Charles Garcia-Tobin
2014-06-19 15:09                   ` Charles Garcia-Tobin
2014-06-18 21:03           ` Nicolas Pitre
2014-06-18 21:03             ` Nicolas Pitre
2014-06-13 17:40       ` Sebastian Capella
2014-06-13 17:40         ` Sebastian Capella
     [not found] ` <1402503520-8611-1-git-send-email-lorenzo.pieralisi-5wv7dgnIgG8@public.gmane.org>
2014-06-11 16:18   ` [PATCH v4 2/6] Documentation: devicetree: psci: define CPU suspend parameter Lorenzo Pieralisi
2014-06-11 16:18     ` Lorenzo Pieralisi
2014-06-11 16:18   ` [PATCH v4 5/6] drivers: cpuidle: CPU idle ARM64 driver Lorenzo Pieralisi
2014-06-11 16:18     ` Lorenzo Pieralisi
2014-06-18 21:34     ` Daniel Lezcano
2014-06-18 21:34       ` Daniel Lezcano
2014-06-19  9:30       ` Lorenzo Pieralisi
2014-06-19  9:30         ` Lorenzo Pieralisi
2014-06-19  3:02     ` Rob Herring
2014-06-19  3:02       ` Rob Herring
2014-06-19  9:08       ` Lorenzo Pieralisi
2014-06-19  9:08         ` Lorenzo Pieralisi
2014-06-11 16:18 ` [PATCH v4 3/6] drivers: cpuidle: implement OF based idle states infrastructure Lorenzo Pieralisi
2014-06-11 16:18   ` Lorenzo Pieralisi
2014-06-11 18:24   ` Nicolas Pitre
2014-06-11 18:24     ` Nicolas Pitre
2014-06-12  8:46     ` Lorenzo Pieralisi
2014-06-12  8:46       ` Lorenzo Pieralisi
2014-06-11 18:25   ` Rafael J. Wysocki
2014-06-11 18:25     ` Rafael J. Wysocki
2014-06-12  9:03     ` Lorenzo Pieralisi
2014-06-12  9:03       ` Lorenzo Pieralisi
2014-06-13  3:48       ` Preeti U Murthy
2014-06-13  3:48         ` Preeti U Murthy
2014-06-13 17:16         ` Lorenzo Pieralisi
2014-06-13 17:16           ` Lorenzo Pieralisi
2014-07-06 10:01       ` Paul Burton
2014-07-06 10:01         ` Paul Burton
2014-06-11 18:38   ` Nicolas Pitre
2014-06-11 18:38     ` Nicolas Pitre
2014-06-12  9:19     ` Lorenzo Pieralisi
2014-06-12  9:19       ` Lorenzo Pieralisi
2014-06-11 16:18 ` [PATCH v4 4/6] arm64: add PSCI CPU_SUSPEND based cpu_suspend support Lorenzo Pieralisi
2014-06-11 16:18   ` Lorenzo Pieralisi
2014-06-11 16:18 ` [PATCH v4 6/6] arm64: boot: dts: update rtsm aemv8 dts with PSCI and idle states Lorenzo Pieralisi
2014-06-11 16:18   ` Lorenzo Pieralisi

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.