Re: [PATCH v2 0/9] driver core / pmdomain: Add support for fined grained sync_state

From: Ulf Hansson

Date: Fri Apr 17 2026 - 07:28:46 EST


+ Danilo (for the driver core changes)

On Fri, 10 Apr 2026 at 12:41, Ulf Hansson <ulf.hansson@xxxxxxxxxx> wrote:
>
> Since the introduction [1] of the common sync_state support for pmdomains
> (genpd), we have encountered a lot of various interesting problems. In most
> cases the new behaviour of genpd triggered some weird platform specific bugs.
>
> That said, in LPC in Tokyo me and Saravana hosted a session to walk through the
> remaining limitations that we have found for genpd's sync state support. In
> particular, we discussed the problems we have for the so-called onecell power
> domain providers, where a single provider typically provides multiple
> independent power domains, all with their own set of consumers.
>
> Note that, onecell power domain providers are very common. It's being used by
> many SoCs/platforms/technologies. To name a few:
> SCMI, Qualcomm, NXP, Mediatek, Renesas, TI, etc.
>
> Anyway, in these cases, the generic sync_state mechanism with fw_devlink isn't
> fine grained enough, as we end up waiting for all consumers for all power
> domains before the ->sync_callback gets called for the supplier/provider. In
> other words, we may end up keeping unused power domains powered-on, for no good
> reasons.
>
> The series intends to fix this problem. Please have a look at the commit
> messages for more details and help review/test!
>
> Kind regards
> Ulf Hansson
>
> [1]
> https://lore.kernel.org/all/20250701114733.636510-1-ulf.hansson@xxxxxxxxxx/
>
> Ulf Hansson (9):
> driver core: Enable suppliers to implement fine grained sync_state
> support
> driver core: Add dev_set_drv_queue_sync_state()
> pmdomain: core: Move genpd_get_from_provider()
> pmdomain: core: Add initial fine grained sync_state support
> pmdomain: core: Extend fine grained sync_state to more onecell
> providers
> pmdomain: core: Export a common function for ->queue_sync_state()
> pmdomain: renesas: rcar-gen4-sysc: Drop GENPD_FLAG_NO_STAY_ON
> pmdomain: renesas: rcar-sysc: Drop GENPD_FLAG_NO_STAY_ON
> pmdomain: renesas: rmobile-sysc: Drop GENPD_FLAG_NO_STAY_ON
>
> drivers/base/core.c | 7 +-
> drivers/pmdomain/core.c | 205 ++++++++++++++++++----
> drivers/pmdomain/renesas/rcar-gen4-sysc.c | 1 -
> drivers/pmdomain/renesas/rcar-sysc.c | 1 -
> drivers/pmdomain/renesas/rmobile-sysc.c | 3 +-
> include/linux/device.h | 12 ++
> include/linux/device/driver.h | 7 +
> include/linux/pm_domain.h | 3 +
> 8 files changed, 197 insertions(+), 42 deletions(-)
>
> --
> 2.43.0
>