Skip to content

PM QoS: implement the OMAP low level constraints management code

Kevin Hilman linux-arm-kernel linux-omap 2 versions – New

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v7 Latest0 of 6 patches 0 repliesNew
  2. v52 of 6 patches 0 repliesSuperseded

Patches in v7 No applies recorded yet

None of the 6 patches the cover letter announces are in this archive.

Reviews trailers per patch

PatchKevin Hilman
SeriesR-b

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.

Read the v7 thread

Cover letter [PATCH v7 0/6] PM QoS: implement the OMAP low level constraints management code

Hi Jean,

Quoted 17 lines · jean.pihet at newoldbits.com

From: Jean Pihet <[email protected]>

. Implement the devices wake-up latency constraints using the global
device PM QoS notification handler which applies the constraints to the underlying layer,
. Implement the low level code which controls the power domains next
functional power states [3], through the hwmod and pwrdm layers,
. Add cpuidle and power domains wake-up latency figures for OMAP3, cf.
comments in the code and [1] for the details on where the numbers are magically coming from,
. Implement the relation between the cpuidle and per-device PM QoS frameworks
in the OMAP3 specific idle callbacks.
The chosen C-state shall satisfy the following conditions:
. the 'valid' field is enabled,
. it satisfies the enable_off_mode flag,
. the next state for MPU and CORE power domains is not lower than the
state programmed by the per-device PM QoS.

I've just been through this series and it looks good to me.

Quoted 2 lines

ToDo:
1. support OMAP4 chipset when the low power modes will be supported

Have you been able to do this with Tero's latest CORE RET and device off series?

Kevin

Quoted 67 lines

2. validate the constraints framework on OMAP4 HW (done on OMAP3)
3. Re-visit the OMAP power domains states initialization procedure. Currently the power states that have been changed from the constraints API which were applied before the initialization of the power domains are lost
4. Further clean-up the OMAP PM layer, use the generic frameworks instead (OPP, PM QoS for throughput constraints ...)

Based on the pm-qos branch of the linux-omap git tree (3.4.0-rc2) [2] with the functional power states changes applied [3].

Tested cpuidle and suspend on OMAP3 Beagleboard (ES2.x) with constraints on MPU, CORE, PER in RETention and OFF modes.

[1] http://www.omappedia.org/wiki/Power_Management_Device_Latencies_Measurement
[2] git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap.git
[3] http://marc.info/?l=linux-omap&m=133475291911194&w=2

History:

v7:
. rebased on top of the functional power state changes [3]

v6:
. minor change in the commits description after Kevin's review . added Kevin's Reviewed-by

v5:
. rebased on latest linux-omap [2]
. rework after Kevin's comments on the MLs

v4:
. split up the patches which remove the omap_pm_ code from the patch set.
Those patches are to be submitted later, on top of this patch set.
. latency numbers: provide the measurements setup and conditions in the code
comments, added the link to the details on wiki [1].
. improved kerneldoc
. split big functions into smaller ones, in order to improve the readability

v3: reworked the error return path and improved the kerneldoc

v2: reworked the OMAP specific cpuidle code to demote the initial C-state to
a valid C-state which fulfills the per-device constraints

v1: initial version

Jean Pihet (6):
ARM: OMAP2+: PM QoS: control the power domains next state from the
constraints
ARM: OMAP2+: PM QoS: manage the per-device latency constraints in
hwmod
ARM: OMAP: omap_device: register to the per-device PM QoS framework
ARM: OMAP3: cpuidle: next C-state decision depends on the PM QoS MPU
and CORE constraints
ARM: OMAP3: update cpuidle latency and threshold figures
ARM: OMAP3: powerdomain data: add wake-up latency figures

 arch/arm/mach-omap2/cpuidle34xx.c           |  109 ++++++++------
 arch/arm/mach-omap2/omap_hwmod.c            |   22 +--
 arch/arm/mach-omap2/pm.h                    |   17 ++-
 arch/arm/mach-omap2/powerdomain.c           |  216 +++++++++++++++++++++++++++
 arch/arm/mach-omap2/powerdomain.h           |   17 ++
 arch/arm/mach-omap2/powerdomains3xxx_data.c |   83 ++++++++++
 arch/arm/plat-omap/omap_device.c            |   81 ++++++++++-
 7 files changed, 481 insertions(+), 64 deletions(-)