Thread (35 messages) 35 messages, 7 authors, 2023-12-12

Re: [PATCH 3/6] usb: cdns3-ti: add suspend/resume procedures for J7200

From: Alan Stern <stern@rowland.harvard.edu>
Date: 2023-12-12 19:31:38
Also in: linux-devicetree, linux-usb, lkml

On Tue, Dec 12, 2023 at 10:26:05AM -0800, Kevin Hilman wrote:
Théo Lebrun [off-list ref] writes:
quoted
Hello,

On Sun Nov 26, 2023 at 11:36 PM CET, Kevin Hilman wrote:
quoted
Théo Lebrun [off-list ref] writes:
quoted
On Wed Nov 22, 2023 at 11:23 PM CET, Kevin Hilman wrote:
quoted
Théo Lebrun [off-list ref] writes:
The point is to signal to the power domain the device is in that it can
power on/off.  These IP blocks are (re)used on many different SoCs, so
the driver should not make any assumptions about what power domain it is
in (if any.)
On my platform, when the device is attached to the PD it gets turned on.
That feels logical to me: if a driver is not RPM aware it "just works".
It "just works"... until the domain gets turned off.
quoted
Are there platforms where RPM must get enabled for the attached
power-domains to be turned on?
Yes, but but more importantly, there are platforms where RPM must get
enabled for the power domain to *stay* on.  For example, the power
domain might get turned on due to devices probing etc, but as soon as
all the RPM-enabled drivers drop their refcount, the domain will turn
off.  If there is a device in that domain with a non-RPM enabled driver,
that device will be powered off anc cause a crash.
OK, that makes sense, thanks for taking the time to explain. This topic
makes me see two things that I feel are close to being bugs. I'd be
curious to get your view on both.
TL;DR; they are features, not bugs.  ;)
quoted
 - If a device does not use RPM but its children do, it might get its
   associated power-domain turned off. That forces every single driver
   that want to stay alive to enable & increment RPM.

   What I naively expect: a genpd with a device attached to it that is
   not using RPM should mean that it should not be powered off at
   runtime_suspend. Benefit: no RPM calls in drivers that do not use
   it, and the behavior is that the genpd associated stays alive "as
   expected".
Your expectation makes sense, but unfortunately, that's not how RPM was
designed.
I'm not sure how runtime PM is meant to work with power domains.  

However, from the very beginning of runtime PM the intention was that 
device drivers and subsystems could safely ignore it.  Their devices 
would have a permanently nonzero disable_depth (permanent because the 
driver/subsystem would not know to change it) and therefore would always 
remain in the active state (see rpm_check_suspend_allowed()).

It would be very surprising if runtime PM for power domains was written 
in a way that would subvert this intention.

Alan Stern

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help