devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Bartosz Golaszewski <brgl@bgdev.pl>
To: Michal Wilczynski <m.wilczynski@samsung.com>
Cc: Krzysztof Kozlowski <krzk@kernel.org>,
	Drew Fustini <drew@pdp7.com>, Guo Ren <guoren@kernel.org>,
	 Fu Wei <wefu@redhat.com>, Rob Herring <robh@kernel.org>,
	 Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	 Philipp Zabel <p.zabel@pengutronix.de>,
	Frank Binns <frank.binns@imgtec.com>,
	 Matt Coster <matt.coster@imgtec.com>,
	 Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	 Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	 Paul Walmsley <paul.walmsley@sifive.com>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	 Albert Ou <aou@eecs.berkeley.edu>,
	Alexandre Ghiti <alex@ghiti.fr>,
	 Ulf Hansson <ulf.hansson@linaro.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	 linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
	 linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org,
	 dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v3 3/8] drm/imagination: Use pwrseq for TH1520 GPU power management
Date: Thu, 5 Jun 2025 10:10:12 +0200	[thread overview]
Message-ID: <CAMRc=Mexq9ThfG6jZUbs3wYDA9UZN-+pHnX_Y-7WO4ubXvEuCw@mail.gmail.com> (raw)
In-Reply-To: <c7774790-07c3-469d-a994-9e84108ad21d@samsung.com>

On Thu, Jun 5, 2025 at 9:47 AM Michal Wilczynski
<m.wilczynski@samsung.com> wrote:
>
>
>
> On 6/4/25 14:07, Krzysztof Kozlowski wrote:
> > On 04/06/2025 13:53, Michal Wilczynski wrote:
> >>>>
> >>>> The GPU node will depend on the AON node, which will be the sole
> >>>> provider for the 'gpu-power' sequencer (based on the discussion in patch
> >>>> 1).
> >>>>
> >>>> Therefore, if the AON/pwrseq driver has already completed its probe, and
> >>>> devm_pwrseq_get() in the GPU driver subsequently returns -EPROBE_DEFER
> >>>> (because pwrseq_get found 'no match' on the bus for 'gpu-power'), the
> >>>> interpretation is that the AON driver did not register this optional
> >>>> sequencer. Since AON is the only anticipated source, it implies the
> >>>> sequencer won't become available later from its designated provider.
> >>>
> >>> I don't understand why you made this assumption. AON could be a module
> >>> and this driver built-in. AON will likely probe later.
> >>
> >> You're absolutely right that AON could be a module and would generally
> >> probe later in that scenario. However, the GPU device also has a
> >> 'power-domains = <&aon TH1520_GPU_PD>' dependency. If the AON driver (as
> >> the PM domain provider) were a late probing module, the GPU driver's
> >> probe would hit -EPROBE_DEFER when its power domain is requested
> >> which happens before attempting to get other resources like a power
> >> sequencer.
> >
> > Huh, so basically you imply certain hardware design and certain DTS
> > description in your driver code. Well, that's clearly fragile design to
> > me, because you should not rely how hardware properties are presented in
> > DTS. Will work here on th1520 with this DTS, won't work with something else.
> >
> > Especially that this looks like generic Imagination GPU code, common to
> > multiple devices, not TH1520 only specific.
> >
> >>
> >> So, if the GPU driver's code does reach the devm_pwrseq_get(dev,
> >> "gpu-power") call, it strongly implies the AON driver has already
> >> successfully probed.
> >>
> >> This leads to the core challenge with the optional 'gpu-power'
> >> sequencer: Even if the AON driver has already probed, if it then chooses
> >> not to register the "gpu-power" sequence (because it's an optional
> >> feature), pwrseq_get() will still find "no device matched" on the
> >> pwrseq_bus and return EPROBE_DEFER.
> >>
> >> If the GPU driver defers here, as it normally should for -EPROBE_DEFER,
> >> it could wait indefinitely for an optional sequence that its
> >> already probed AON provider will not supply.
> >>
> >> Anyway I think you're right, that this is probably confusing and we
> >> shouldn't rely on this behavior.
> >>
> >> To solve this, and to allow the GPU driver to correctly handle
> >> -EPROBE_DEFER when a sequencer is genuinely expected, I propose using a
> >> boolean property on the GPU's DT node, e.g.
> >> img,gpu-expects-power-sequencer. If the GPU node provides this property
> >> it means the pwrseq 'gpu-power' is required.
> >
> > No, that would be driver design in DTS.
> >
> > I think the main problem is the pwrseq API: you should get via phandle,
> > not name of the pwrseq controller. That's how all producer-consumer
> > relationships are done in OF platforms.
>
> Bart,
> Given Krzysztof's valid concerns about the current name based
> lookup in pwrseq_get() and the benefits of phandle based resource
> linking in OF platforms: Would you be open to a proposal for extending
> the pwrseq API to allow consumers to obtain a sequencer (or a specific
> target sequence) via a phandle defined in their Device Tree node? For
> instance, a consumer device could specify power-sequencer =
> <&aon> and a new API variant could resolve this.
>

I can be open to it all I want, but I bet Krzysztof won't be open to
introducing anything like a power-sequencer device property in DT
bindings. Simply because there's no such thing in the physical world.
The concept behind the power sequencing framework was to bind
providers to consumers based on existing links modelling real device
properties (which a "power-sequencer" is not). I commented on it under
another email saying that you already have a link here - the
power-domains property taking the aon phandle. In your pwrseq
provider's match() callback you can parse and resolve it back to the
aon node thus making sure you're matching the consumer with the
correct provider.

Please take a look at the existing wcn pwrseq driver which does a
similar thing but parses the regulator properties of the power
management unit (in the pwrseq_qcom_wcn_match() function).

We've tried to do something like what you're proposing for years and
it always got stuck on the fact that DT must not make up bogus
properties only to satisfy the driver implementation. We've done it in
the past, that's true, but just because we didn't know any better and
DT maintainers are currently much stricter as to what kind of
properties to allow.

Bartosz

  reply	other threads:[~2025-06-05  8:10 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20250529222402eucas1p1c9e0ddd3efd62e078e5de2cf71655f58@eucas1p1.samsung.com>
2025-05-29 22:23 ` [PATCH v3 0/8] Add TH1520 GPU support with power sequencing Michal Wilczynski
     [not found]   ` <CGME20250529222403eucas1p1923fe09240be34e3bbadf16822574d75@eucas1p1.samsung.com>
2025-05-29 22:23     ` [PATCH v3 1/8] dt-bindings: power: Add T-HEAD TH1520 GPU power sequencer Michal Wilczynski
2025-06-02 14:46       ` Bartosz Golaszewski
2025-06-02 20:29         ` Michal Wilczynski
2025-06-03 13:19           ` Krzysztof Kozlowski
2025-06-03 13:35             ` Bartosz Golaszewski
2025-06-03 14:49               ` Bartosz Golaszewski
2025-06-03 20:07                 ` Michal Wilczynski
2025-06-03 18:24               ` Michal Wilczynski
2025-06-04  6:36                 ` Bartosz Golaszewski
     [not found]   ` <CGME20250529222404eucas1p2856b44ad410171edfc2190127dafee0c@eucas1p2.samsung.com>
2025-05-29 22:23     ` [PATCH v3 2/8] power: sequencing: Add T-HEAD TH1520 GPU power sequencer driver Michal Wilczynski
     [not found]   ` <CGME20250529222405eucas1p18ed1254bf1b2d78468734656fec537e1@eucas1p1.samsung.com>
2025-05-29 22:23     ` [PATCH v3 3/8] drm/imagination: Use pwrseq for TH1520 GPU power management Michal Wilczynski
2025-06-03 13:28       ` Krzysztof Kozlowski
2025-06-03 19:43         ` Michal Wilczynski
2025-06-04  6:36           ` Krzysztof Kozlowski
2025-06-04 11:53             ` Michal Wilczynski
2025-06-04 12:07               ` Krzysztof Kozlowski
2025-06-05  7:47                 ` Michal Wilczynski
2025-06-05  8:10                   ` Bartosz Golaszewski [this message]
2025-06-05  9:07                     ` Krzysztof Kozlowski
2025-06-11 12:01                     ` Michal Wilczynski
2025-06-11 12:32                       ` Bartosz Golaszewski
2025-06-13  6:47                         ` Krzysztof Kozlowski
2025-06-13  6:44                       ` Krzysztof Kozlowski
2025-06-13  8:25                         ` Michal Wilczynski
2025-06-13  9:49                           ` Michal Wilczynski
2025-06-13 10:01                             ` Krzysztof Kozlowski
2025-06-13 10:41                           ` Bartosz Golaszewski
     [not found]   ` <CGME20250529222406eucas1p117082ce4f06921f71bbc442c47e58574@eucas1p1.samsung.com>
2025-05-29 22:23     ` [PATCH v3 4/8] dt-bindings: gpu: Add TH1520 GPU compatible to Imagination bindings Michal Wilczynski
2025-06-03 13:16       ` Krzysztof Kozlowski
     [not found]   ` <CGME20250529222407eucas1p233be883d7e84e5a000e4d44b37cf7265@eucas1p2.samsung.com>
2025-05-29 22:23     ` [PATCH v3 5/8] riscv: dts: thead: th1520: Add missing reset controller header include Michal Wilczynski
2025-06-01 17:40       ` Drew Fustini
2025-06-03 13:20       ` Krzysztof Kozlowski
2025-06-03 18:26         ` Michal Wilczynski
2025-06-03 18:49           ` Krzysztof Kozlowski
     [not found]   ` <CGME20250529222408eucas1p20f62cea4c9c64bb5dda6db1fd38fb333@eucas1p2.samsung.com>
2025-05-29 22:23     ` [PATCH v3 6/8] riscv: dts: thead: Add GPU power sequencer node Michal Wilczynski
2025-06-03 13:22       ` Krzysztof Kozlowski
2025-06-03 18:45         ` Michal Wilczynski
2025-06-04 12:33           ` Bartosz Golaszewski
     [not found]   ` <CGME20250529222410eucas1p2e1d41a2fc717caef1aed51367a7db944@eucas1p2.samsung.com>
2025-05-29 22:23     ` [PATCH v3 7/8] riscv: dts: thead: th1520: Add IMG BXM-4-64 GPU node Michal Wilczynski
2025-06-03 12:27       ` Ulf Hansson
2025-06-04 12:40         ` Michal Wilczynski
2025-06-04 13:57           ` Ulf Hansson
2025-06-04 16:47         ` Matt Coster
2025-06-05  9:57           ` Ulf Hansson
2025-06-05 10:34             ` Matt Coster
     [not found]   ` <CGME20250529222411eucas1p27e4b662d6f120c4e83d808cb03e4bb1e@eucas1p2.samsung.com>
2025-05-29 22:23     ` [PATCH v3 8/8] drm/imagination: Enable PowerVR driver for RISC-V Michal Wilczynski
2025-06-01 23:05   ` [PATCH v3 0/8] Add TH1520 GPU support with power sequencing Drew Fustini
2025-06-02  8:03     ` Michal Wilczynski
2025-06-02 17:33       ` Drew Fustini
2025-06-02 21:39         ` Drew Fustini
2025-06-03 12:25   ` Ulf Hansson
2025-06-03 18:29     ` Michal Wilczynski

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='CAMRc=Mexq9ThfG6jZUbs3wYDA9UZN-+pHnX_Y-7WO4ubXvEuCw@mail.gmail.com' \
    --to=brgl@bgdev.pl \
    --cc=airlied@gmail.com \
    --cc=alex@ghiti.fr \
    --cc=aou@eecs.berkeley.edu \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=drew@pdp7.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=frank.binns@imgtec.com \
    --cc=guoren@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=krzk@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=m.szyprowski@samsung.com \
    --cc=m.wilczynski@samsung.com \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=matt.coster@imgtec.com \
    --cc=mripard@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=palmer@dabbelt.com \
    --cc=paul.walmsley@sifive.com \
    --cc=robh@kernel.org \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    --cc=ulf.hansson@linaro.org \
    --cc=wefu@redhat.com \
    /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;
as well as URLs for NNTP newsgroup(s).