From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: daniel.lezcano@linaro.org, rjw@rjwysocki.net
Cc: heiko@sntech.de, robh@kernel.org, lukasz.luba@arm.com,
arnd@linaro.org, linux-kernel@vger.kernel.org,
linux-pm@vger.kernel.org
Subject: [PATCH v8 0/6] powercap/drivers/dtpm: Create the dtpm hierarchy
Date: Fri, 28 Jan 2022 17:35:32 +0100 [thread overview]
Message-ID: <20220128163537.212248-1-daniel.lezcano@linaro.org> (raw)
The DTPM hierarchy is the base to build on top of it a power budget allocator.
It reflects the power consumption of the group of devices and allows to cap
their power.
The core code is there but there is no way to describe the desired hierarchy
yet.
A first proposal introduced the description through configfs [1] but was
rejected [2].
A second proposal based on the device tree with a binding similar to the power
domains [3] was proposed but finally rejected [4].
This version delegates the hierarchy creation to the SoC with a specific and
self-encapsulated code using an array to describe the tree. The SoC DTPM driver
defines an array of nodes pointing to their parents. The hierarchy description
can integrate a DT node and in the future a SCMI node, that means the
description can mix different type of nodes.
As the DTPM tree depends on different devices which could be modules, the SoC
specific description must always be compiled as a module and describe the
module softdeps in order to let the userspace to handle proper loading
ordering.
In addition to the hierarchy creation, the devfreq dtpm support is also
integrated into this series.
This series was tested on a rock960 (revision B - rk3399 based) and a db845c
(Qualcomm sdm845 based).
[1] https://lore.kernel.org/all/20210401183654.27214-1-daniel.lezcano@linaro.org/
[2] https://lore.kernel.org/all/YGYg6ZeZ1181%2FpXk@kroah.com/
[3] https://lore.kernel.org/all/20211205231558.779698-1-daniel.lezcano@linaro.org/
[4] https://lore.kernel.org/all/YbfFapsmsjs4qnsg@robh.at.kernel.org/
Changelog:
V8:
- Add '/* sentinel */' in the last array entry
- Remove Panfrost dependency in the dtpm rockchip module's Kconfig
V7:
- Added a couple of comments if a node in the hierarchy fails to create
- Fixed a double free in dtpm_devfreq in the error path
V6:
- Switched the init table to a subsystem arrays
- Checked 'setup' function is set before calling it
- Moved out of the loop the 'of_node_put'
- Explicitely add DTPM_NODE_VIRTUAL in documentation
- Moved powercap_register_control_type() into the hierarchy creation function
- Removed the sdm845 description
- Made rk3399 always as a module and added module softdeps
V5:
- Remove DT bindings
- Added description with an array
- Added simple description for rk3399 and sdm845
- Moved dtpm table to the data section
V4:
- Added missing powerzone-cells
- Changed powerzone name to comply with the pattern property
V3:
- Remove GPU section as no power is available (yet)
- Remove '#powerzone-cells' conforming to the bindings change
- Removed required property 'compatible'
- Removed powerzone-cells from the topmost node
- Removed powerzone-cells from cpus 'consumers' in example
- Set additionnal property to false
V2:
- Added pattern properties and stick to powerzone-*
- Added required property compatible and powerzone-cells
- Added additionnal property
- Added compatible
- Renamed to 'powerzones'
- Added missing powerzone-cells to the topmost node
- Fixed errors reported by 'make DT_CHECKER_FLAGS=-m dt_binding_check'
- Move description in the SoC dtsi specific file
- Fixed missing prototype warning reported by lkp@
V1: Initial post
Daniel Lezcano (5):
powercap/drivers/dtpm: Convert the init table section to a simple
array
powercap/drivers/dtpm: Add hierarchy creation
powercap/drivers/dtpm: Add CPU DT initialization support
powercap/drivers/dtpm: Add dtpm devfreq with energy model support
rockchip/soc/drivers: Add DTPM description for rk3399
drivers/powercap/Kconfig | 8 ++
drivers/powercap/Makefile | 1 +
drivers/powercap/dtpm.c | 192 +++++++++++++++++++++++++++-
drivers/powercap/dtpm_cpu.c | 41 ++++--
drivers/powercap/dtpm_devfreq.c | 203 ++++++++++++++++++++++++++++++
drivers/powercap/dtpm_subsys.h | 22 ++++
drivers/soc/rockchip/Kconfig | 8 ++
drivers/soc/rockchip/Makefile | 1 +
drivers/soc/rockchip/dtpm.c | 59 +++++++++
include/asm-generic/vmlinux.lds.h | 11 --
include/linux/dtpm.h | 33 +++--
11 files changed, 540 insertions(+), 39 deletions(-)
create mode 100644 drivers/powercap/dtpm_devfreq.c
create mode 100644 drivers/powercap/dtpm_subsys.h
create mode 100644 drivers/soc/rockchip/dtpm.c
--
2.25.1
next reply other threads:[~2022-01-28 16:36 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-28 16:35 Daniel Lezcano [this message]
2022-01-28 16:35 ` [PATCH v8 1/5] powercap/drivers/dtpm: Convert the init table section to a simple array Daniel Lezcano
2022-01-28 16:35 ` [PATCH v8 2/5] powercap/drivers/dtpm: Add hierarchy creation Daniel Lezcano
2022-01-28 16:35 ` [PATCH v8 3/5] powercap/drivers/dtpm: Add CPU DT initialization support Daniel Lezcano
2022-01-28 16:35 ` [PATCH v8 4/5] powercap/drivers/dtpm: Add dtpm devfreq with energy model support Daniel Lezcano
2022-01-28 16:35 ` [PATCH v8 5/5] rockchip/soc/drivers: Add DTPM description for rk3399 Daniel Lezcano
2022-01-28 16:35 ` Daniel Lezcano
2022-01-28 16:35 ` Daniel Lezcano
2022-01-30 19:10 ` [PATCH v8 0/6] powercap/drivers/dtpm: Create the dtpm hierarchy 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=20220128163537.212248-1-daniel.lezcano@linaro.org \
--to=daniel.lezcano@linaro.org \
--cc=arnd@linaro.org \
--cc=heiko@sntech.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lukasz.luba@arm.com \
--cc=rjw@rjwysocki.net \
--cc=robh@kernel.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 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.