[PATCH] drm/i915/dmc_wl: Do not check for DMC payload
Luca Coelho
luca at coelho.fi
Thu Jan 30 09:41:19 UTC 2025
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 at intel.com>
> ---
Reviewed-by: Luca Coelho <luciano.coelho at intel.com>
--
Cheers,
Luca.
More information about the Intel-xe
mailing list