03.12.2019 19:27, Thierry Reding пишет: > From: Thierry Reding <treding@xxxxxxxxxx> > > The Tegra DRM driver heavily relies on the implementations for runtime > suspend/resume to be called at specific times. Unfortunately, there are > some cases where that doesn't work. One example is if the user disables > runtime PM for a given subdevice. Another example is that the PM core > acquires a reference to runtime PM during system sleep, effectively > preventing devices from going into low power modes. This is intentional > to avoid nasty race conditions, but it also causes system sleep to not > function properly on all Tegra systems. > > Fix this by not implementing runtime PM at all. Instead, a minimal, > reference-counted suspend/resume infrastructure is added to the host1x > bus. This has the benefit that it can be used regardless of the system > power state (or any transitions we might be in), or whether or not the > user allows runtime PM. > > Atomic modesetting guarantees that these functions will end up being > called at the right point in time, so the pitfalls for the more generic > runtime PM do not apply here. > > Signed-off-by: Thierry Reding <treding@xxxxxxxxxx> > --- Couldn't we just use pm_runtime_force_suspend/resume whenever it is necessary to enforce the suspend/resume? I briefly looked through the previous discussion and don't see why the forced suspend/resume isn't suitable. Please excuse me if I'm missing the point. Why planes/outputs need to care about resuming DC controller at all? Doesn't DRM core take care of enabling DC for us by enabling CRTC before planes/outputs are enabled?