mbox series

[v5,0/6] powercap/drivers/dtpm: Create the dtpm hierarchy

Message ID 20211218130014.4037640-1-daniel.lezcano@linaro.org
Headers show
Series powercap/drivers/dtpm: Create the dtpm hierarchy | expand

Message

Daniel Lezcano Dec. 18, 2021, 1 p.m. UTC
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 fifth 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.

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:
   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 (6):
  powercap/drivers/dtpm: Move dtpm table from init to data section
  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
  qcom/soc/drivers: Add DTPM description for sdm845

 drivers/powercap/Kconfig          |   8 ++
 drivers/powercap/Makefile         |   1 +
 drivers/powercap/dtpm.c           | 155 ++++++++++++++++++++++-
 drivers/powercap/dtpm_cpu.c       |  37 ++++--
 drivers/powercap/dtpm_devfreq.c   | 201 ++++++++++++++++++++++++++++++
 drivers/soc/qcom/Kconfig          |   9 ++
 drivers/soc/qcom/Makefile         |   1 +
 drivers/soc/qcom/dtpm.c           |  65 ++++++++++
 drivers/soc/rockchip/Kconfig      |   8 ++
 drivers/soc/rockchip/Makefile     |   1 +
 drivers/soc/rockchip/dtpm.c       |  56 +++++++++
 include/asm-generic/vmlinux.lds.h |   4 +-
 include/linux/dtpm.h              |  21 +++-
 13 files changed, 551 insertions(+), 16 deletions(-)
 create mode 100644 drivers/powercap/dtpm_devfreq.c
 create mode 100644 drivers/soc/qcom/dtpm.c
 create mode 100644 drivers/soc/rockchip/dtpm.c

Comments

Daniel Lezcano Dec. 23, 2021, 1:20 p.m. UTC | #1
Hi all,

any comments on this series. Is it fine if I merge it without patch 6/6?

Heiko, is the description fine for you in the SoC specific code?

Thanks
  -- Daniel

On 18/12/2021 14:00, Daniel Lezcano wrote:
> 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 fifth 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.
> 
> 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:
>    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 (6):
>   powercap/drivers/dtpm: Move dtpm table from init to data section
>   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
>   qcom/soc/drivers: Add DTPM description for sdm845
> 
>  drivers/powercap/Kconfig          |   8 ++
>  drivers/powercap/Makefile         |   1 +
>  drivers/powercap/dtpm.c           | 155 ++++++++++++++++++++++-
>  drivers/powercap/dtpm_cpu.c       |  37 ++++--
>  drivers/powercap/dtpm_devfreq.c   | 201 ++++++++++++++++++++++++++++++
>  drivers/soc/qcom/Kconfig          |   9 ++
>  drivers/soc/qcom/Makefile         |   1 +
>  drivers/soc/qcom/dtpm.c           |  65 ++++++++++
>  drivers/soc/rockchip/Kconfig      |   8 ++
>  drivers/soc/rockchip/Makefile     |   1 +
>  drivers/soc/rockchip/dtpm.c       |  56 +++++++++
>  include/asm-generic/vmlinux.lds.h |   4 +-
>  include/linux/dtpm.h              |  21 +++-
>  13 files changed, 551 insertions(+), 16 deletions(-)
>  create mode 100644 drivers/powercap/dtpm_devfreq.c
>  create mode 100644 drivers/soc/qcom/dtpm.c
>  create mode 100644 drivers/soc/rockchip/dtpm.c
>
Ulf Hansson Dec. 23, 2021, 1:32 p.m. UTC | #2
On Thu, 23 Dec 2021 at 14:20, Daniel Lezcano <daniel.lezcano@linaro.org> wrote:
>
> Hi all,
>
> any comments on this series. Is it fine if I merge it without patch 6/6?
>
> Heiko, is the description fine for you in the SoC specific code?

FYI, I intend to have a closer look at the series next week. Happy holidays!

Kind regards
Uffe

>
> Thanks
>   -- Daniel
>
> On 18/12/2021 14:00, Daniel Lezcano wrote:
> > 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 fifth 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.
> >
> > 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:
> >    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 (6):
> >   powercap/drivers/dtpm: Move dtpm table from init to data section
> >   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
> >   qcom/soc/drivers: Add DTPM description for sdm845
> >
> >  drivers/powercap/Kconfig          |   8 ++
> >  drivers/powercap/Makefile         |   1 +
> >  drivers/powercap/dtpm.c           | 155 ++++++++++++++++++++++-
> >  drivers/powercap/dtpm_cpu.c       |  37 ++++--
> >  drivers/powercap/dtpm_devfreq.c   | 201 ++++++++++++++++++++++++++++++
> >  drivers/soc/qcom/Kconfig          |   9 ++
> >  drivers/soc/qcom/Makefile         |   1 +
> >  drivers/soc/qcom/dtpm.c           |  65 ++++++++++
> >  drivers/soc/rockchip/Kconfig      |   8 ++
> >  drivers/soc/rockchip/Makefile     |   1 +
> >  drivers/soc/rockchip/dtpm.c       |  56 +++++++++
> >  include/asm-generic/vmlinux.lds.h |   4 +-
> >  include/linux/dtpm.h              |  21 +++-
> >  13 files changed, 551 insertions(+), 16 deletions(-)
> >  create mode 100644 drivers/powercap/dtpm_devfreq.c
> >  create mode 100644 drivers/soc/qcom/dtpm.c
> >  create mode 100644 drivers/soc/rockchip/dtpm.c
> >
>
>
> --
> <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
Daniel Lezcano Dec. 23, 2021, 1:42 p.m. UTC | #3
Hi Ulf,

On 23/12/2021 14:32, Ulf Hansson wrote:
> On Thu, 23 Dec 2021 at 14:20, Daniel Lezcano <daniel.lezcano@linaro.org> wrote:
>>
>> Hi all,
>>
>> any comments on this series. Is it fine if I merge it without patch 6/6?
>>
>> Heiko, is the description fine for you in the SoC specific code?
> 
> FYI, I intend to have a closer look at the series next week. Happy holidays!

Ah, ok. Thank you for letting me know.

I'll wait for your feedback then

Thanks

  -- Daniel


>>
>> On 18/12/2021 14:00, Daniel Lezcano wrote:
>>> 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 fifth 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.
>>>
>>> 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:
>>>    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 (6):
>>>   powercap/drivers/dtpm: Move dtpm table from init to data section
>>>   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
>>>   qcom/soc/drivers: Add DTPM description for sdm845
>>>
>>>  drivers/powercap/Kconfig          |   8 ++
>>>  drivers/powercap/Makefile         |   1 +
>>>  drivers/powercap/dtpm.c           | 155 ++++++++++++++++++++++-
>>>  drivers/powercap/dtpm_cpu.c       |  37 ++++--
>>>  drivers/powercap/dtpm_devfreq.c   | 201 ++++++++++++++++++++++++++++++
>>>  drivers/soc/qcom/Kconfig          |   9 ++
>>>  drivers/soc/qcom/Makefile         |   1 +
>>>  drivers/soc/qcom/dtpm.c           |  65 ++++++++++
>>>  drivers/soc/rockchip/Kconfig      |   8 ++
>>>  drivers/soc/rockchip/Makefile     |   1 +
>>>  drivers/soc/rockchip/dtpm.c       |  56 +++++++++
>>>  include/asm-generic/vmlinux.lds.h |   4 +-
>>>  include/linux/dtpm.h              |  21 +++-
>>>  13 files changed, 551 insertions(+), 16 deletions(-)
>>>  create mode 100644 drivers/powercap/dtpm_devfreq.c
>>>  create mode 100644 drivers/soc/qcom/dtpm.c
>>>  create mode 100644 drivers/soc/rockchip/dtpm.c
>>>
>>
>>
>> --
>> <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