Quoting Imre Deak (2019-04-07 11:25:37) > On Sat, Apr 06, 2019 at 05:05:53PM +0100, Chris Wilson wrote: > > Quoting Imre Deak (2019-04-05 16:36:56) > > > Push getting the reference for the encoders' power domains into the > > > encoder get_power_domain() hook instead of doing this from the caller. > > > This way the encoder can store away the corresponding wakerefs. > > > > > > This fixes the DSI encoder disabling, which didn't release these > > > power references it acquired during HW state readout. > > > > The io_wakeref is for the paired io_enable/io_disable. > > > > get_encoder_power_domains() is the owner of these wakerefs, and they > > then belong to the atomic state from preparation through use to final > > release. > > Yes, we have two cases: > > 1. HW readout > > encoder->get_power_domains() -> io_enable() -> takes wakerefs > encoder->disable() -> io_disable() -> releases wakerefs However, get_power_domains is used for the atomic state wakerefs (as well?) and they have different much longer lifetimes. Clear io_wakerefs, and put a WARN_ON(io_wakeref[]) prior to filling it to convince me that it is being used to track a temporary wakeref. get_power_domains() and atomic needs to take responsibility for the overlapping set of powerwells imo. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx