Messages in this thread | | | Date | Wed, 16 Nov 2016 10:30:55 +0100 | From | Lukas Wunner <> | Subject | Re: [PATCH v5 7/7] iommu/exynos: Use device dependency links to control runtime pm |
| |
On Thu, Nov 10, 2016 at 12:56:14AM +0100, Rafael J. Wysocki wrote: > The idea, roughly, is that if there is a single on/off switch acting > on multiple devices, you can (a) set up a PM domain tracking all of > those device's runtime PM invocations and (b) maintaining a reference > counter of devices still not suspended. This way it would only turn > the switch off when all of the devices in question had been suspended. > Analogously, it would turn the switch on before resuming the first > device in the domain. Of course, that code isn't available as a > library, you would need to implement it (or use genpd, but chances are > it is too heavy weight for the job).
My understanding is that the hierarchy of struct generic_pm_domain is created by the platform on boot. For an embedded platform, this is encoded in the device tree, but what about ACPI which doesn't know anything about struct generic_pm_domain? I would have to lump devices into generic_pm_domains after the fact, after the platform has scanned the buses, but this seems to be forbidden according to this slide deck, which calls that a "layering violation":
https://events.linuxfoundation.org/images/stories/pdf/lcjp2012_wysocki.pdf
(Quote: "Adding and Removing Devices [...] Supposed to be called by the platform (calling one of them from a device driver is a layering violation).")
So it seems that using struct generic_pm_domain is never an option on ACPI, is that correct?
Thanks,
Lukas
| |