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 v7 8/8] drm/i915/lobf: Check for sink error and disable LOBF
Date: Tue, 8 Apr 2025 08:14:10 +0000	[thread overview]
Message-ID: <49f8b2f1c50a8d2ee75a3b8e93a9070b2f1cd157.camel@intel.com> (raw)
In-Reply-To: <20250403092825.484347-9-animesh.manna@intel.com>

On Thu, 2025-04-03 at 14:58 +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]
> v4: Disable alpm permanently for sink error. [Jouni]
> 
> Signed-off-by: Animesh Manna <animesh.manna@intel.com>

Reviewed-by: Jouni Högander <jouni.hogander@intel.com>

> ---
>  drivers/gpu/drm/i915/display/intel_alpm.c     | 29
> +++++++++++++++++++
>  drivers/gpu/drm/i915/display/intel_alpm.h     |  1 +
>  .../drm/i915/display/intel_display_types.h    |  1 +
>  drivers/gpu/drm/i915/display/intel_dp.c       |  5 ++++
>  drivers/gpu/drm/i915/display/intel_psr.c      | 18 ++----------
>  5 files changed, 38 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_alpm.c
> b/drivers/gpu/drm/i915/display/intel_alpm.c
> index 55eaf2ba996c..22a06753a760 100644
> --- a/drivers/gpu/drm/i915/display/intel_alpm.c
> +++ b/drivers/gpu/drm/i915/display/intel_alpm.c
> @@ -5,6 +5,7 @@
>  
>  #include <linux/debugfs.h>
>  
> +#include <drm/drm_print.h>
>  #include "intel_alpm.h"
>  #include "intel_crtc.h"
>  #include "intel_de.h"
> @@ -280,6 +281,9 @@ void intel_alpm_lobf_compute_config(struct
> intel_dp *intel_dp,
>  	if (intel_dp->alpm_parameters.lobf_disable_debug)
>  		return;
>  
> +	if (intel_dp->alpm_parameters.sink_alpm_error)
> +		return;
> +
>  	if (!intel_dp_is_edp(intel_dp))
>  		return;
>  
> @@ -506,5 +510,30 @@ void intel_alpm_disable(struct intel_dp
> *intel_dp)
>  		     PORT_ALPM_CTL(cpu_transcoder),
>  		     PORT_ALPM_CTL_ALPM_AUX_LESS_ENABLE, 0);
>  
> +	drm_dbg_kms(display->drm, "Disabling ALPM\n");
>  	mutex_unlock(&intel_dp->alpm_parameters.lock);
>  }
> +
> +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 012b0b1d17ff..4f86322a9995 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_display_types.h
> b/drivers/gpu/drm/i915/display/intel_display_types.h
> index f7500fd1ee8c..617dcd3c2656 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_types.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_types.h
> @@ -1814,6 +1814,7 @@ struct intel_dp {
>  		u8 silence_period_sym_clocks;
>  		u8 lfps_half_cycle_num_of_syms;
>  		bool lobf_disable_debug;
> +		bool sink_alpm_error;
>  	} alpm_parameters;
>  
>  	u8 alpm_dpcd;
> diff --git a/drivers/gpu/drm/i915/display/intel_dp.c
> b/drivers/gpu/drm/i915/display/intel_dp.c
> index 0d986d624d8c..9e8cdb699248 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp.c
> @@ -5393,6 +5393,11 @@ 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);
> +		intel_dp->alpm_parameters.sink_alpm_error = true;
> +	}
> +
>  	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 1bd2fcd0fa4b..43ed166007eb 100644
> --- a/drivers/gpu/drm/i915/display/intel_psr.c
> +++ b/drivers/gpu/drm/i915/display/intel_psr.c
> @@ -3384,29 +3384,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-04-08  8:14 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-03  9:28 [PATCH v7 0/8] LOBF enablement fix Animesh Manna
2025-04-03  9:28 ` [PATCH v7 1/8] drm/i915/lobf: Add lobf enablement in post plane update Animesh Manna
2025-04-03  9:28 ` [PATCH v7 2/8] drm/i915/lobf: Add debug print for LOBF Animesh Manna
2025-04-08  7:49   ` Hogander, Jouni
2025-04-08  7:57     ` Manna, Animesh
2025-04-08  7:58       ` Hogander, Jouni
2025-04-03  9:28 ` [PATCH v7 3/8] drm/i915/lobf: Disintegrate alpm_disable from psr_disable Animesh Manna
2025-04-08  7:51   ` Hogander, Jouni
2025-04-03  9:28 ` [PATCH v7 4/8] drm/i915/lobf: Add fixed refresh rate check in compute_config() Animesh Manna
2025-04-03  9:28 ` [PATCH v7 5/8] drm/i915/lobf: Update lobf if any change in dependent parameters Animesh Manna
2025-04-08  7:54   ` Hogander, Jouni
2025-04-08  8:01     ` Manna, Animesh
2025-04-03  9:28 ` [PATCH v7 6/8] drm/i915/lobf: Add debug interface for lobf Animesh Manna
2025-04-08  8:01   ` Hogander, Jouni
2025-04-03  9:28 ` [PATCH v7 7/8] drm/i915/lobf: Add mutex for alpm update Animesh Manna
2025-04-03  9:28 ` [PATCH v7 8/8] drm/i915/lobf: Check for sink error and disable LOBF Animesh Manna
2025-04-08  8:14   ` Hogander, Jouni [this message]
2025-04-03  9:56 ` ✓ CI.Patch_applied: success for LOBF enablement fix (rev6) Patchwork
2025-04-03  9:57 ` ✗ CI.checkpatch: warning " Patchwork
2025-04-03  9:58 ` ✓ CI.KUnit: success " Patchwork
2025-04-03 10:14 ` ✓ CI.Build: " Patchwork
2025-04-03 10:17 ` ✓ CI.Hooks: " Patchwork
2025-04-03 10:18 ` ✗ CI.checksparse: warning " Patchwork
2025-04-03 10:21 ` ✗ Fi.CI.CHECKPATCH: warning for LOBF enablement fix (rev7) Patchwork
2025-04-03 10:38 ` ✓ Xe.CI.BAT: success for LOBF enablement fix (rev6) Patchwork
2025-04-03 10:41 ` ✓ i915.CI.BAT: success for LOBF enablement fix (rev7) Patchwork
2025-04-03 12:51 ` ✓ i915.CI.Full: " Patchwork
2025-04-03 13:32 ` ✗ Xe.CI.Full: failure 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=49f8b2f1c50a8d2ee75a3b8e93a9070b2f1cd157.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.