On Fri, 2025-01-24 at 16:12 -0300, Gustavo Sousa wrote: > Enabling and disabling of DMC wakelock is already coupled with enabling > and disabling of dynamic DC states, which already depend on the DMC > being properly loaded. As such, we do not need to check if we already > have a DMC payload parsed in __intel_dmc_wl_supported(). > > Furthermore, the presence of such a check causes inconsistencies in the > refcount if the following sequence of events happen: > > 1. A call to one of the register accessors from intel_de.h is done > before the DMC payload is parsed. That causes intel_dmc_wl_get() to > be called. Suppose the register offset qualifies as needing the > wakelock. > > In normal circumstances, the refcount would be incremented, but, > because __intel_dmc_wl_supported() returns false, the refcount is > untouched. > > 2. In a separate worker thread, the DMC firmware is parsed. Parsing of > the DMC payload is finished before the corresponding > intel_dmc_wl_put() from (1) is called. > > 3. When in the context of (1), intel_dmc_wl_put() gets called, now we > have __intel_dmc_wl_supported() returning true and we hit the > warning, because the code doesn't expect a zero refcount. > > Let's remove that check, since it is unnecessary and causes the > inconsistency illustrated above. > > Signed-off-by: Gustavo Sousa <gustavo.sousa@xxxxxxxxx> > --- Reviewed-by: Luca Coelho <luciano.coelho@xxxxxxxxx> -- Cheers, Luca.