dri-devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Adrián Larumbe" <adrian.larumbe@collabora.com>
Cc: dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v12 05/15] drm/panfrost: Consolidate device clock management and reset
Date: Tue, 29 Sep 2026 03:56:34 +0000	[thread overview]
Message-ID: <20260929035635.0BF231F000FF@smtp.kernel.org> (raw)
In-Reply-To: <20260929-claude-fixes-v12-5-62beb08de207@collabora.com>

Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
- [Medium] clk: slow clk_prepare on runtime resume due to unprepare in suspend
--

commit 9d5414aa4af3f7dd6f34ed2bea83b5c9b25db769
Author: Adrián Larumbe <adrian.larumbe@collabora.com>
Subject: drm/panfrost: Consolidate device clock management and reset

This commit gathers clock enables and disables into a single function to
avoid repetition between driver init/fini and device resume/suspend. It
also combines prepare/unprepare with enable/disable, under the assumption
that clock preparation can simply increase the reference count of an already
prepared clock.

> diff --git a/drivers/gpu/drm/panfrost/panfrost_device.c b/drivers/gpu/drm/panfrost/panfrost_device.c
> index b3a53504bd016..9f2b1967a3984 100644
> --- a/drivers/gpu/drm/panfrost/panfrost_device.c
> +++ b/drivers/gpu/drm/panfrost/panfrost_device.c
[ ... ]
> @@ -436,34 +450,17 @@ static int panfrost_device_runtime_resume(struct device *dev)
>  		if (ret)
>  			return ret;
>  
> -		ret = clk_enable(pfdev->clock);
> -		if (ret)
> -			goto err_clk;
> -
> -		ret = clk_enable(pfdev->bus_clock);
> -		if (ret)
> -			goto err_bus_clk;
> -
> -		ret = clk_enable(pfdev->bus_ace_clock);
> -		if (ret)
> -			goto err_bus_ace_clk;
> +		ret = panfrost_clks_enable(pfdev, true);
> +		if (ret) {
> +			reset_control_assert(pfdev->rstc);
> +			return ret;
> +		}
>  	}
>  
>  	panfrost_device_reset(pfdev, true);
[ ... ]
> @@ -480,9 +477,7 @@ static int panfrost_device_runtime_suspend(struct device *dev)
>  	panfrost_gpu_power_off(pfdev);
>  
>  	if (pfdev->comp->pm_features & BIT(GPU_PM_RT)) {
> -		clk_disable(pfdev->bus_ace_clock);
> -		clk_disable(pfdev->bus_clock);
> -		clk_disable(pfdev->clock);
> +		panfrost_clks_disable(pfdev, true);
>  		reset_control_assert(pfdev->rstc);
>  	}

[Severity: Medium]
Does this introduce a performance regression by fully unpreparing the clocks
on every idle state?

Previously, this code only called clk_disable() during runtime suspend,
leaving the clock prepared. Now panfrost_clks_disable() uses
clk_disable_unprepare(), reducing the prepare refcount to 0.

When the device wakes up, panfrost_device_runtime_resume() calls
panfrost_clks_enable() which uses clk_prepare_enable(). Because the clock
was unprepared here in suspend, the resume path will pay the penalty of
executing the full sleep-capable prepare sequence from a cold state instead
of just a fast atomic-safe enable.

The commit message notes that "the clk_prepare_* family of functions can
simply increase the refcnt of an already prepared clock". However, since the
clocks are fully unprepared in this runtime suspend path, they won't be
already prepared on resume.

Was it intended to fully unprepare the clocks on every runtime suspend?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260929-claude-fixes-v12-0-62beb08de207@collabora.com?part=5

  reply	other threads:[~2026-09-29  3:56 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-29  3:44 [PATCH v12 00/15] Collection of fixes for Panfrost: Perfcnt, RPM, refactorings Adrián Larumbe
2026-09-29  3:44 ` [PATCH v12 01/15] drm/panfrost: Move shrinker initialization and unplug one level down Adrián Larumbe
2026-10-02 13:58   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 02/15] drm/panfrost: Move lock and modparam initialisations into their subsystems Adrián Larumbe
2026-10-02 14:06   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 03/15] drm/panfrost: Move debugfs initialisation to relevant subsystems Adrián Larumbe
2026-10-02 14:10   ` Steven Price
2026-10-06  0:50     ` Adrián Larumbe
2026-09-29  3:44 ` [PATCH v12 04/15] drm/panfrost: Skip NULL checks for clock enable/disabling Adrián Larumbe
2026-10-02 14:14   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 05/15] drm/panfrost: Consolidate device clock management and reset Adrián Larumbe
2026-09-29  3:56   ` sashiko-bot [this message]
2026-10-02 14:20   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 06/15] drm/panfrost: Fix PM refcnt and autosuspend issues at device probe/remove Adrián Larumbe
2026-10-02 14:21   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 07/15] drm/panfrost: Explicitly enable MMU interrupts at device init Adrián Larumbe
2026-10-02 14:26   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 08/15] drm/panfrost: Move all DRM device initialisation into device_init() Adrián Larumbe
2026-10-02 14:37   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 09/15] drm/panfrost: Add warning messages to fatal error conditions Adrián Larumbe
2026-10-02 14:59   ` Steven Price
2026-10-06 15:09     ` Adrián Larumbe
2026-10-07 12:51       ` Steven Price
2026-09-29  3:44 ` [PATCH v12 10/15] drm/panfrost: Add debugfs knob for manually triggering a GPU reset Adrián Larumbe
2026-10-02 15:10   ` Steven Price
2026-10-06 13:38     ` Adrián Larumbe
2026-10-07 12:54       ` Steven Price
2026-09-29  3:44 ` [PATCH v12 11/15] drm/panfrost: Move perfcnt GPU disable sequence into a helper Adrián Larumbe
2026-09-29  3:54   ` sashiko-bot
2026-09-29  3:44 ` [PATCH v12 12/15] drm/panfrost: Skip cache flush/invalidate when enabling perfcnt Adrián Larumbe
2026-10-02 15:14   ` Steven Price
2026-10-05  8:38     ` Boris Brezillon
2026-10-05 15:06       ` Steven Price
2026-10-05 15:37         ` Boris Brezillon
2026-10-05 16:05           ` Steven Price
2026-10-05 16:57             ` Boris Brezillon
2026-10-06 17:42               ` Adrián Larumbe
2026-10-06 17:35             ` Adrián Larumbe
2026-10-07 13:28               ` Steven Price
2026-10-06 17:18         ` Adrián Larumbe
2026-10-07 13:21           ` Steven Price
2026-10-06 16:45     ` Adrián Larumbe
2026-10-07 13:09       ` Steven Price
2026-09-29  3:44 ` [PATCH v12 13/15] drm/panfrost: Avoid cache flush after perfcnt sample in fully coherent systems Adrián Larumbe
2026-10-02 15:28   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 14/15] drm/panfrost: Introduce a reset lock Adrián Larumbe
2026-10-02 15:34   ` Steven Price
2026-09-29  3:44 ` [PATCH v12 15/15] drm/panfrost: Fix races between perfcnt and reset sequence Adrián Larumbe
2026-09-29  4:00   ` sashiko-bot
2026-10-02 15:44   ` Steven Price
2026-10-06 14:14     ` Adrián Larumbe

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=20260929035635.0BF231F000FF@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=adrian.larumbe@collabora.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=sashiko-reviews@lists.linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox