mbox series

[v3,0/6] drm/panfrost: Turn off clocks and regulators in PM

Message ID 20231109102543.42971-1-angelogioacchino.delregno@collabora.com (mailing list archive)
Headers show
Series drm/panfrost: Turn off clocks and regulators in PM | expand

Message

AngeloGioacchino Del Regno Nov. 9, 2023, 10:25 a.m. UTC
Changes in v3:
 - Fixed the order of set_opp/opp_put in patch [5/6]
 - Clearly specified MediaTek SoC models in patches [4/6], [6/6]
 - Reordered clk_disable() for suspend in patch [3/6]
 - Fixed blank line removal and alignment in patch [1/6]

Changes in v2:
 - Added hard reset GPU recovery
 - Tightened polling time for soft reset and power on
 - New execution time measurements after poweroff fix (see [1])

[1]: https://lore.kernel.org/all/20231102141507.73481-1-angelogioacchino.delregno@collabora.com/

At least MediaTek platforms are able to get the GPU clocks and regulators
completely off during system suspend, allowing to save a bit of power.

Panfrost is used on more than just MediaTek SoCs and the benefits of this
can be variable across different SoC models and/or different SoCs from
different manufacturers: this means that just adding this ability for all
could result in unexpected issues and breakages on untested SoCs.

For the aforemenetioned reasons, turning off the clocks and/or regulators
was implemented inside of a capabilities barrier that shall be enabled on
a per-SoC basis (in the panfrost_compatible platform data) after testing
of both benefits and feasibility.

In this series, I am adding the ability to switch on/off clocks and
regulators and enabling that on all MediaTek platforms, as I was able
to successfully test that on multiple Chromebooks featuring different
MediaTek SoCs; specifically, I've manually tested on MT8186, MT8192 and
MT8195, while MT8183 got tested only by KernelCI.

Cheers!

AngeloGioacchino Del Regno (6):
  drm/panfrost: Perform hard reset to recover GPU if soft reset fails
  drm/panfrost: Tighten polling for soft reset and power on
  drm/panfrost: Implement ability to turn on/off GPU clocks in suspend
  drm/panfrost: Set clocks on/off during system sleep on MediaTek SoCs
  drm/panfrost: Implement ability to turn on/off regulators in suspend
  drm/panfrost: Set regulators on/off during system sleep on MediaTek
    SoCs

 drivers/gpu/drm/panfrost/panfrost_device.c | 78 ++++++++++++++++++++--
 drivers/gpu/drm/panfrost/panfrost_device.h | 13 ++++
 drivers/gpu/drm/panfrost/panfrost_drv.c    |  3 +
 drivers/gpu/drm/panfrost/panfrost_gpu.c    | 21 ++++--
 drivers/gpu/drm/panfrost/panfrost_regs.h   |  1 +
 5 files changed, 105 insertions(+), 11 deletions(-)

Comments

Steven Price Nov. 10, 2023, 2:31 p.m. UTC | #1
On 09/11/2023 10:25, AngeloGioacchino Del Regno wrote:
> Changes in v3:
>  - Fixed the order of set_opp/opp_put in patch [5/6]
>  - Clearly specified MediaTek SoC models in patches [4/6], [6/6]
>  - Reordered clk_disable() for suspend in patch [3/6]
>  - Fixed blank line removal and alignment in patch [1/6]
> 
> Changes in v2:
>  - Added hard reset GPU recovery
>  - Tightened polling time for soft reset and power on
>  - New execution time measurements after poweroff fix (see [1])
> 
> [1]: https://lore.kernel.org/all/20231102141507.73481-1-angelogioacchino.delregno@collabora.com/
> 
> At least MediaTek platforms are able to get the GPU clocks and regulators
> completely off during system suspend, allowing to save a bit of power.
> 
> Panfrost is used on more than just MediaTek SoCs and the benefits of this
> can be variable across different SoC models and/or different SoCs from
> different manufacturers: this means that just adding this ability for all
> could result in unexpected issues and breakages on untested SoCs.
> 
> For the aforemenetioned reasons, turning off the clocks and/or regulators
> was implemented inside of a capabilities barrier that shall be enabled on
> a per-SoC basis (in the panfrost_compatible platform data) after testing
> of both benefits and feasibility.
> 
> In this series, I am adding the ability to switch on/off clocks and
> regulators and enabling that on all MediaTek platforms, as I was able
> to successfully test that on multiple Chromebooks featuring different
> MediaTek SoCs; specifically, I've manually tested on MT8186, MT8192 and
> MT8195, while MT8183 got tested only by KernelCI.
> 
> Cheers!
> 
> AngeloGioacchino Del Regno (6):
>   drm/panfrost: Perform hard reset to recover GPU if soft reset fails
>   drm/panfrost: Tighten polling for soft reset and power on
>   drm/panfrost: Implement ability to turn on/off GPU clocks in suspend
>   drm/panfrost: Set clocks on/off during system sleep on MediaTek SoCs
>   drm/panfrost: Implement ability to turn on/off regulators in suspend
>   drm/panfrost: Set regulators on/off during system sleep on MediaTek
>     SoCs

Thanks for your work on this! I've pushed these patches (and 'Really
power off GPU cores') to drm-misc-next.

Steve

> 
>  drivers/gpu/drm/panfrost/panfrost_device.c | 78 ++++++++++++++++++++--
>  drivers/gpu/drm/panfrost/panfrost_device.h | 13 ++++
>  drivers/gpu/drm/panfrost/panfrost_drv.c    |  3 +
>  drivers/gpu/drm/panfrost/panfrost_gpu.c    | 21 ++++--
>  drivers/gpu/drm/panfrost/panfrost_regs.h   |  1 +
>  5 files changed, 105 insertions(+), 11 deletions(-)
>