On Fri, Feb 10, 2023 at 08:10:00AM -0800, Rob Clark wrote: > On Fri, Feb 3, 2023 at 10:12 AM Bjorn Andersson > <quic_bjorande@xxxxxxxxxxx> wrote: > > > > When any of the components in the mdss hierarchy fails to bind, > > previously bound components are being unbound again. > > > > One such case happens when the DP controller fails to find its bridge or > > panel, where adreno_unbind() will be invoked without adreno_load_gpu() > > being called to invoke pm_runtime_enable(). > > > > The result is that once everything is bound the pm_runtime_get_sync() > > call find the power-domain to have a positive disable_depth, fails > > with -EACCESS and prevents the GPU device to be powered up. > > > > Move the pm_runtime_enable() to adreno_bind(), in order to balance it > > with any calls to adreno_unbind(). > > I think instead we want to move where the pm_runtime_disable() is.. > since pm_runtime_enable() was moved because we can't actually enable > runpm until we have GMU firmware Here's a fix for this issue which does not move pm_runtime_enable() from first open(): https://lore.kernel.org/lkml/20230221101430.14546-1-johan+linaro@xxxxxxxxxx/ Johan