All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ville Syrjälä" <ville.syrjala@linux.intel.com>
To: James Xiong <james.xiong@intel.com>
Cc: intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org,
	gustavo.sousa@intel.com, jani.nikula@linux.intel.com,
	imre.deak@intel.com
Subject: Re: [PATCH v4] drm/i915/dmc: fix assert_dmc_loaded WARN during async firmware load
Date: Fri, 29 May 2026 18:40:40 +0300	[thread overview]
Message-ID: <ahmzeOA79VxnmWD3@intel.com> (raw)
In-Reply-To: <20260511173101.723421-1-james.xiong@intel.com>

On Mon, May 11, 2026 at 10:31:01AM -0700, James Xiong wrote:
> During driver probe, DMC firmware is loaded asynchronously via a
> workqueue. There is a race between parse_dmc_fw() setting the payload
> pointer (making has_dmc_id_fw() return true) and intel_dmc_load_program()
> writing the firmware to hardware registers. If the probe thread calls
> intel_dmc_enable_pipe() -> assert_dmc_loaded() in this window via
> intel_modeset_setup_hw_state(), it sees parsed payload but stale HW
> registers, triggering a ~20% intermittent WARNING on ADL-N warm boot.
> 
> v2: Fix by calling intel_dmc_wait_fw_load() in
>     intel_modeset_setup_hw_state() before iterating the CRTCs (Gustavo
>     Sousa).
> 
> v3: Move intel_dmc_wait_fw_load() into intel_dmc_enable_pipe() itself
>     so the function is self-contained (Jani Nikula, Gustavo Sousa).
> 
> Fixes: 3af2ff0840be ("drm/i915: Enable a PIPEDMC whenever its corresponding pipe is enabled")
> Signed-off-by: James Xiong <james.xiong@intel.com>
> Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_dmc.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_dmc.c b/drivers/gpu/drm/i915/display/intel_dmc.c
> index 0df4f42ba3e3..4151eae92744 100644
> --- a/drivers/gpu/drm/i915/display/intel_dmc.c
> +++ b/drivers/gpu/drm/i915/display/intel_dmc.c
> @@ -786,7 +786,12 @@ void intel_dmc_enable_pipe(const struct intel_crtc_state *crtc_state)
>  	enum pipe pipe = crtc->pipe;
>  	enum intel_dmc_id dmc_id = PIPE_TO_DMC_ID(pipe);
>  
> -	if (!is_valid_dmc_id(dmc_id) || !has_dmc_id_fw(display, dmc_id))
> +	if (!is_valid_dmc_id(dmc_id))
> +		return;
> +
> +	intel_dmc_wait_fw_load(display);

I was going to say that intel_flipq_init() already did that, but
looks like that's called later not before.

I think what we probably want is an unconditional
intel_dmc_wait_fw_load() somewhere before this so that the whole
thing isn't so random.

> +
> +	if (!has_dmc_id_fw(display, dmc_id))
>  		return;
>  
>  	if (!can_enable_pipedmc(crtc_state)) {
> -- 
> 2.34.1

-- 
Ville Syrjälä
Intel

  parent reply	other threads:[~2026-05-29 15:40 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-11 17:31 [PATCH v4] drm/i915/dmc: fix assert_dmc_loaded WARN during async firmware load James Xiong
2026-05-11 20:48 ` ✓ i915.CI.BAT: success for drm/i915/dmc: fix assert_dmc_loaded WARN during async firmware load (rev3) Patchwork
2026-05-12  4:12 ` ✗ i915.CI.Full: failure " Patchwork
2026-05-12  5:59 ` ✓ CI.KUnit: success " Patchwork
2026-05-12  7:11 ` ✓ Xe.CI.BAT: " Patchwork
2026-05-12 14:27 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-05-29 15:40 ` Ville Syrjälä [this message]
2026-06-01 16:06   ` [PATCH v4] drm/i915/dmc: fix assert_dmc_loaded WARN during async firmware load Jani Nikula

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ahmzeOA79VxnmWD3@intel.com \
    --to=ville.syrjala@linux.intel.com \
    --cc=gustavo.sousa@intel.com \
    --cc=imre.deak@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=james.xiong@intel.com \
    --cc=jani.nikula@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.