All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Hogander, Jouni" <jouni.hogander@intel.com>
To: "intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>,
	"Manna,  Animesh" <animesh.manna@intel.com>,
	"intel-gfx@lists.freedesktop.org"
	<intel-gfx@lists.freedesktop.org>
Cc: "Nikula, Jani" <jani.nikula@intel.com>, "B, Jeevan" <jeevan.b@intel.com>
Subject: Re: [PATCH v6 6/8] drm/i915/lobf: Check for sink error and disable LOBF
Date: Mon, 24 Mar 2025 07:53:09 +0000	[thread overview]
Message-ID: <c4b90eadc54b9ccbd99cb86ccc3fe92cdc1a20cd.camel@intel.com> (raw)
In-Reply-To: <20250319191508.2751216-7-animesh.manna@intel.com>

On Thu, 2025-03-20 at 00:45 +0530, Animesh Manna wrote:
> Disable LOBF/ALPM for any erroneous condition from sink side.
> 
> v1: Initial version.
> v2: Add centralized alpm error handling. [Jouni]
> v3: Improve debug print. [Jouni]
> 
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>
> ---
>  drivers/gpu/drm/i915/display/intel_alpm.c | 27
> +++++++++++++++++++++++
>  drivers/gpu/drm/i915/display/intel_alpm.h |  1 +
>  drivers/gpu/drm/i915/display/intel_dp.c   |  3 +++
>  drivers/gpu/drm/i915/display/intel_psr.c  | 18 ++-------------
>  4 files changed, 33 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> b/drivers/gpu/drm/i915/display/intel_alpm.c
> index dc24772743b8..562f7269a583 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> @@ -496,4 +496,31 @@ void intel_alpm_disable(struct intel_dp
> *intel_dp)
>  	intel_de_rmw(display,
>  		     PORT_ALPM_CTL(cpu_transcoder),
>  		     PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE, 0);
> +
> +	drm_dbg_kms(display->drm, "Disabling ALPM\n");
> +}
> +
> +bool intel_alpm_get_error(struct intel_dp *intel_dp)
> +{
> +	struct intel_display *display = to_intel_display(intel_dp);
> +	struct drm_dp_aux *aux = &intel_dp->aux;
> +	u8 val;
> +	int r;
> +
> +	r = drm_dp_dpcd_readb(aux, DP_RECEIVER_ALPM_STATUS, &val);
> +	if (r != 1) {
> +		drm_err(display->drm, "Error reading ALPM
> status\n");
> +		return true;
> +	}
> +
> +	if (val & DP_ALPM_LOCK_TIMEOUT_ERROR) {
> +		drm_dbg_kms(display->drm,
> +			    "ALPM lock timeout error\n");
> +
> +		/* Clearing error */
> +		drm_dp_dpcd_writeb(aux, DP_RECEIVER_ALPM_STATUS,
> val);
> +		return true;
> +	}
> +
> +	return false;
>  }
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.h
> b/drivers/gpu/drm/i915/display/intel_alpm.h
> index 91f51fb24f98..2f1fb82c0aac 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.h
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.h
> @@ -29,4 +29,5 @@ void intel_alpm_lobf_debugfs_add(struct
> intel_connector *connector);
>  bool intel_alpm_aux_wake_supported(struct intel_dp *intel_dp);
>  bool intel_alpm_aux_less_wake_supported(struct intel_dp *intel_dp);
>  void intel_alpm_disable(struct intel_dp *intel_dp);
> +bool intel_alpm_get_error(struct intel_dp *intel_dp);
>  #endif
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index a236b5fc7a3d..3f0fa2238afa 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5358,6 +5358,9 @@ intel_dp_short_pulse(struct intel_dp *intel_dp)

>  	intel_psr_short_pulse(intel_dp);
>  
> +	if (intel_alpm_get_error(intel_dp))
> +		intel_alpm_disable(intel_dp);
> +

Maybe you want that error to have more permanent impact? This way LOBF
gets re-enabled?

BR,
Jouni Högander

>  	if (intel_dp_test_short_pulse(intel_dp))
>  		reprobe_needed = true;
>  
> diff --git a/drivers/gpu/drm/i915/display/intel_psr.c
> b/drivers/gpu/drm/i915/display/intel_psr.c
> index 1d202f2eb356..09d440084671 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -3405,29 +3405,15 @@ static int
> psr_get_status_and_error_status(struct intel_dp *intel_dp,
>  
>  static void psr_alpm_check(struct intel_dp *intel_dp)
>  {
> -	struct intel_display *display = to_intel_display(intel_dp);
> -	struct drm_dp_aux *aux = &intel_dp->aux;
>  	struct intel_psr *psr = &intel_dp->psr;
> -	u8 val;
> -	int r;
>  
>  	if (!psr->sel_update_enabled)
>  		return;
>  
> -	r = drm_dp_dpcd_readb(aux, DP_RECEIVER_ALPM_STATUS, &val);
> -	if (r != 1) {
> -		drm_err(display->drm, "Error reading ALPM
> status\n");
> -		return;
> -	}
> -
> -	if (val & DP_ALPM_LOCK_TIMEOUT_ERROR) {
> +	if (intel_alpm_get_error(intel_dp)) {
>  		intel_psr_disable_locked(intel_dp);
>  		psr->sink_not_reliable = true;
> -		drm_dbg_kms(display->drm,
> -			    "ALPM lock timeout error, disabling
> PSR\n");
> -
> -		/* Clearing error */
> -		drm_dp_dpcd_writeb(aux, DP_RECEIVER_ALPM_STATUS,
> val);
> +		intel_alpm_disable(intel_dp);
>  	}
>  }
>  


  reply	other threads:[~2025-03-24  7:53 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-19 19:15 [PATCH v6 0/8] LOBF enablement fix Animesh Manna
2025-03-19 19:15 ` [PATCH v6 1/8] drm/i915/lobf: Add lobf enablement in post plane update Animesh Manna
2025-03-24  7:59   ` Hogander, Jouni
2025-03-19 19:15 ` [PATCH v6 2/8] drm/i915/lobf: Disintegrate alpm_disable from psr_disable Animesh Manna
2025-03-19 19:15 ` [PATCH v6 3/8] drm/i915/lobf: Add fixed refresh rate check in compute_config() Animesh Manna
2025-03-24  8:00   ` Hogander, Jouni
2025-03-19 19:15 ` [PATCH v6 4/8] drm/i915/lobf: Update lobf if any change in dependent parameters Animesh Manna
2025-03-24  8:05   ` Hogander, Jouni
2025-03-27 10:43     ` Manna, Animesh
2025-03-27 11:00       ` Hogander, Jouni
2025-03-19 19:15 ` [PATCH v6 5/8] drm/i915/lobf: Add debug interface for lobf Animesh Manna
2025-03-24  8:07   ` Hogander, Jouni
2025-03-27 10:44     ` Manna, Animesh
2025-03-24  8:35   ` Jani Nikula
2025-03-19 19:15 ` [PATCH v6 6/8] drm/i915/lobf: Check for sink error and disable LOBF Animesh Manna
2025-03-24  7:53   ` Hogander, Jouni [this message]
2025-03-27 10:54     ` Manna, Animesh
2025-03-19 19:15 ` [PATCH v6 7/8] drm/i915/lobf: Add mutex for alpm update Animesh Manna
2025-03-24  7:56   ` Hogander, Jouni
2025-03-19 19:15 ` [PATCH v6 8/8] drm/i915/lobf: Add debug print for LOBF Animesh Manna
2025-03-24  7:59   ` Hogander, Jouni
2025-03-27 10:55     ` Manna, Animesh
2025-03-19 19:42 ` ✓ CI.Patch_applied: success for LOBF enablement fix (rev5) Patchwork
2025-03-19 19:42 ` ✗ CI.checkpatch: warning " Patchwork
2025-03-19 19:43 ` ✓ CI.KUnit: success " Patchwork
2025-03-19 20:00 ` ✓ CI.Build: " Patchwork
2025-03-19 20:02 ` ✗ Fi.CI.CHECKPATCH: warning for LOBF enablement fix (rev6) Patchwork
2025-03-19 20:02 ` ✗ Fi.CI.SPARSE: " Patchwork
2025-03-19 20:02 ` ✓ CI.Hooks: success for LOBF enablement fix (rev5) Patchwork
2025-03-19 20:03 ` ✗ CI.checksparse: warning " Patchwork
2025-03-19 20:20 ` ✓ i915.CI.BAT: success for LOBF enablement fix (rev6) Patchwork
2025-03-19 20:25 ` ✓ Xe.CI.BAT: success for LOBF enablement fix (rev5) Patchwork
2025-03-19 21:21 ` ✗ Xe.CI.Full: failure " Patchwork
2025-03-19 23:01 ` ✓ i915.CI.Full: success for LOBF enablement fix (rev6) Patchwork

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=c4b90eadc54b9ccbd99cb86ccc3fe92cdc1a20cd.camel@intel.com \
    --to=jouni.hogander@intel.com \
    --cc=animesh.manna@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=jeevan.b@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.