All of lore.kernel.org
 help / color / mirror / Atom feed
From: sashiko-bot@kernel.org
To: "Sebastian Reichel" <sebastian.reichel@collabora.com>
Cc: devicetree@vger.kernel.org, conor+dt@kernel.org, robh@kernel.org,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH v11 04/21] drm/bridge: synopsys: dw-dp: Document missing reset line deassert
Date: Thu, 06 Aug 2026 17:33:59 +0000	[thread overview]
Message-ID: <20260806173400.5CBB41F000E9@smtp.kernel.org> (raw)
In-Reply-To: <20260806-synopsys-dw-dp-improvements-v11-4-0d508505f383@collabora.com>

Thank you for your contribution! Sashiko AI review found 2 potential issue(s) to consider:

Pre-existing issues:
- [High] Missing completion reinitialization causes spurious AUX transfer successes
- [High] HPD event state overwrite race drops hotplug events
--

--- Patch [4]: [PATCH v11 04/21] drm/bridge: synopsys: dw-dp: Document missing reset line deassert ---
commit 34c619c6d4754597f7c81d207e5acfe482e8b36d
Author: Sebastian Reichel <sebastian.reichel@collabora.com>

drm/bridge: synopsys: dw-dp: Document missing reset line deassert

This patch adds a comment explaining why the driver avoids using automatically
deasserting reset controls. Unbinding the device with the reset line deasserted
can cause the SoC to hang if the shared power-domain is still active. The
current reset handling remains unchanged.

> diff --git a/drivers/gpu/drm/bridge/synopsys/dw-dp.c b/drivers/gpu/drm/bridge/synopsys/dw-dp.c
> index 21d60e89126f0..52e3b37259a69 100644
> --- a/drivers/gpu/drm/bridge/synopsys/dw-dp.c
> +++ b/drivers/gpu/drm/bridge/synopsys/dw-dp.c

[ ... ]

[Severity: High]
This isn't a bug introduced by this patch, but does dw_dp_aux_transfer()
miss a completion reinitialization?

drivers/gpu/drm/bridge/synopsys/dw-dp.c:dw_dp_aux_transfer() {
...
	regmap_write(dp->regmap, DW_DP_AUX_CMD, value);

	status = wait_for_completion_timeout(&dp->complete, timeout);
...
}

If a previous AUX transfer times out, wait_for_completion_timeout() returns 0
without decrementing the completion's done counter. If the hardware later
generates an interrupt, the IRQ handler calls complete(&dp->complete).

Will the next call to dw_dp_aux_transfer() immediately pass its
wait_for_completion_timeout() without actually waiting for the new command to
complete? 

This could lead to reading stale or invalid hardware status.

[Severity: High]
This is a pre-existing issue, but is there a hotplug event state overwrite race
between dw_dp_handle_hpd_event() and dw_dp_hpd_work()?

drivers/gpu/drm/bridge/synopsys/dw-dp.c:dw_dp_handle_hpd_event() {
...
	if (value & HPD_IRQ) {
		dev_dbg(dp->dev, "IRQ from the HPD\n");
		dp->hotplug.long_hpd = false;
		regmap_write(dp->regmap, DW_DP_HPD_STATUS, HPD_IRQ);
	}

	if (value & HPD_HOT_PLUG) {
		dev_dbg(dp->dev, "Hot plug detected\n");
		dp->hotplug.long_hpd = true;
		regmap_write(dp->regmap, DW_DP_HPD_STATUS, HPD_HOT_PLUG);
	}
...
}

If a long HPD event occurs, long_hpd is set to true and work is scheduled.
If a short HPD event occurs before the workqueue runs, the interrupt handler
overwrites long_hpd to false and calls schedule_work(), which coalesces with
the pending work.

drivers/gpu/drm/bridge/synopsys/dw-dp.c:dw_dp_hpd_work() {
...
	if (!long_hpd) {
		if (dw_dp_needs_link_retrain(dp)) {
			ret = dw_dp_link_retrain(dp);
			if (ret)
				dev_warn(dp->dev, "Retrain link failed\n");
		}
	} else {
		drm_helper_hpd_irq_event(dp->bridge.dev);
	}
...
}

When the work finally executes, it sees long_hpd == false and fails to call
drm_helper_hpd_irq_event(). 

Can this drop hotplug events, leaving userspace unaware of display connections?

-- 
Sashiko AI review · https://sashiko.dev/#/patchset/20260806-synopsys-dw-dp-improvements-v11-0-0d508505f383@collabora.com?part=4

  reply	other threads:[~2026-08-06 17:34 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-06 17:02 [PATCH v11 00/21] Synopsys DisplayPort Controller improvements for Rockchip platforms Sebastian Reichel
2026-08-06 17:02 ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 01/21] drm/bridge: synopsys: dw-dp: Register DP AUX on bridge attach Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:37   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 02/21] drm/bridge: synopsys: dw-dp: Fix incorrect resource lifetimes in bind callback Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:36   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 03/21] drm/bridge: synopsys: dw-dp: Fix error handling for DP link enablement Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:29   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 04/21] drm/bridge: synopsys: dw-dp: Document missing reset line deassert Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:33   ` sashiko-bot [this message]
2026-08-06 17:02 ` [PATCH v11 05/21] drm/bridge: synopsys: dw-dp: Add missing mutex cleanups on module removal Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:30   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 06/21] drm/bridge: synopsys: dw-dp: Fix AUX transfer timeout race condition Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:32   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 07/21] drm/bridge: synopsys: dw-dp: Fix support for short I2C reads Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 08/21] drm/bridge: synopsys: dw-dp: Free output_fmts when none are valid Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 09/21] drm/bridge: synopsys: dw-dp: Support MEDIA_BUS_FMT_FIXED Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:33   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 10/21] drm/bridge: synopsys: dw-dp: Add follow-up bridge support Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-07  2:50   ` Chaoyi Chen
2026-08-07  2:50     ` Chaoyi Chen
2026-08-06 17:02 ` [PATCH v11 11/21] drm/bridge: Add out-of-band HPD notify handler Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 12/21] drm/bridge: synopsys: dw-dp: Support software triggered OOB HPD Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 13/21] drm/rockchip: dw_dp: Implement out-of-band HPD handling Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:27   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 14/21] drm/bridge: synopsys: dw-dp: Add Runtime PM support Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:41   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 15/21] drm/rockchip: dw_dp: Add runtime " Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:45   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 16/21] drm/bridge: synopsys: dw-dp: Protect sdp_reg_bank from concurrent access Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 17/21] drm/bridge: synopsys: dw-dp: Drop useless reservation of first slot Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:45   ` sashiko-bot
2026-08-06 17:02 ` [PATCH v11 18/21] drm/bridge: synopsys: dw-dp: Clear only enabled SDPs on atomic disable Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 19/21] drm/bridge: synopsys: dw-dp: Use regmap_set_bits in dw_dp_send_sdp Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 20/21] dt-bindings: display: rockchip: dw-dp: Fix sound DAI cells Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:39   ` sashiko-bot
2026-08-07 15:51     ` Rob Herring
2026-08-07 17:58       ` Sebastian Reichel
2026-08-06 17:02 ` [PATCH v11 21/21] drm/bridge: synopsys: dw-dp: Add audio support Sebastian Reichel
2026-08-06 17:02   ` Sebastian Reichel
2026-08-06 17:44   ` sashiko-bot
2026-08-08  9:41 ` [PATCH v11 00/21] Synopsys DisplayPort Controller improvements for Rockchip platforms Igor Paunovic
2026-08-08  9:41   ` Igor Paunovic
2026-08-08 20:19   ` Sebastian Reichel
2026-08-08 20:19     ` Sebastian Reichel

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=20260806173400.5CBB41F000E9@smtp.kernel.org \
    --to=sashiko-bot@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=robh@kernel.org \
    --cc=sashiko-reviews@lists.linux.dev \
    --cc=sebastian.reichel@collabora.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.