[Intel-gfx] [PATCH v2 1/2] drm/i915/display: ignore long HPDs based on a flag
Andrzej Hajda
andrzej.hajda at intel.com
Mon Oct 10 12:08:58 UTC 2022
On 10.10.2022 10:34, Vinod Govindapillai wrote:
> Some panels generate long HPD events even while connected to
> the port. This cause some unexpected CI execution issues. A
> new flag is added to track if such spurious long HPDs can be
> ignored and are not processed further if the flag is set.
>
> v2: Address patch styling comments (Jani Nikula)
>
> Signed-off-by: Vinod Govindapillai <vinod.govindapillai at intel.com>
Yeah, especially bat-rpls-2 is quite buggy[1] (500 long HPDs per log).
Do you plan to integrate it to CI? I guess i915 should be immune to such
misbehavior anyway.
[1]:
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12228/bat-rpls-2/dmesg0.txt
Reviewed-by: Andrzej Hajda <andrzej.hajda at intel.com>
Regards
Andrzej
> ---
> drivers/gpu/drm/i915/display/intel_display_core.h | 11 +++++++++++
> drivers/gpu/drm/i915/display/intel_dp.c | 7 +++++++
> 2 files changed, 18 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_core.h b/drivers/gpu/drm/i915/display/intel_display_core.h
> index 96cf994b0ad1..f84a2e760ef4 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_core.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_core.h
> @@ -170,6 +170,17 @@ struct intel_hotplug {
> * blocked behind the non-DP one.
> */
> struct workqueue_struct *dp_wq;
> +
> + /*
> + * Flag to track if long HPDs need not to be processed
> + *
> + * Some panels generate long HPDs while keep connected to the port.
> + * This can cause issues with CI tests results. In CI systems we
> + * don't expect to disconnect the panels and could ignore the long
> + * HPDs generated from the faulty panels. This flag can be used as
> + * cue to ignore the long HPDs and can be set / unset using debugfs.
> + */
> + bool ignore_long_hpd;
> };
>
> struct intel_vbt_data {
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c b/drivers/gpu/drm/i915/display/intel_dp.c
> index 70b06806ec0d..87a0d01d8003 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5092,6 +5092,13 @@ intel_dp_hpd_pulse(struct intel_digital_port *dig_port, bool long_hpd)
> return IRQ_HANDLED;
> }
>
> + if (i915->display.hotplug.ignore_long_hpd && long_hpd) {
> + drm_dbg_kms(&i915->drm, "[ENCODER:%d:%s] ignoring long hpd\n",
> + dig_port->base.base.base.id,
> + dig_port->base.base.name);
> + return IRQ_HANDLED;
> + }
> +
> drm_dbg_kms(&i915->drm, "got hpd irq on [ENCODER:%d:%s] - %s\n",
> dig_port->base.base.base.id,
> dig_port->base.base.name,
More information about the Intel-gfx
mailing list