diff mbox

drm/i915: avoid unclaimed registers when capturing the error state

Message ID 1387559381-1515-1-git-send-email-przanoni@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Paulo Zanoni Dec. 20, 2013, 5:09 p.m. UTC
From: Paulo Zanoni <paulo.r.zanoni@intel.com>

We're iterating over the CPU transcoders, so check for the correct
power domain.

This fixes many "unclaimed register" error messages.

This can be reproduced by the IGT test mentioned below, but we still
get a FAIL when we run it.

Testcase: igt/kms_lip/flip-vs-panning-vs-hang
Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
---
 drivers/gpu/drm/i915/intel_display.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)


I didn't bisect to check, but it really really looks like a regression from
"drm/i915: add intel_display_power_enabled_sw() for use in atomic ctx".

Comments

Imre Deak Jan. 7, 2014, 2:07 p.m. UTC | #1
On Fri, 2013-12-20 at 15:09 -0200, Paulo Zanoni wrote:
> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
> 
> We're iterating over the CPU transcoders, so check for the correct
> power domain.
> 
> This fixes many "unclaimed register" error messages.
> 
> This can be reproduced by the IGT test mentioned below, but we still
> get a FAIL when we run it.
> 
> Testcase: igt/kms_lip/flip-vs-panning-vs-hang
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_display.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> 
> I didn't bisect to check, but it really really looks like a regression from
> "drm/i915: add intel_display_power_enabled_sw() for use in atomic ctx".

Yep, that was an overlook on my part:/ The fix looks ok:
Reviewed-by: Imre Deak <imre.deak@intel.com>

> 
> 
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 4d1357a..4d4b4bc 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -11459,7 +11459,8 @@ intel_display_capture_error_state(struct drm_device *dev)
>  		enum transcoder cpu_transcoder = transcoders[i];
>  
>  		error->transcoder[i].power_domain_on =
> -			intel_display_power_enabled_sw(dev, POWER_DOMAIN_PIPE(i));
> +			intel_display_power_enabled_sw(dev,
> +				POWER_DOMAIN_TRANSCODER(cpu_transcoder));
>  		if (!error->transcoder[i].power_domain_on)
>  			continue;
>
Chris Wilson June 2, 2014, 1:35 p.m. UTC | #2
On Fri, Dec 20, 2013 at 03:09:41PM -0200, Paulo Zanoni wrote:
> From: Paulo Zanoni <paulo.r.zanoni@intel.com>
> 
> We're iterating over the CPU transcoders, so check for the correct
> power domain.
> 
> This fixes many "unclaimed register" error messages.
> 
> This can be reproduced by the IGT test mentioned below, but we still
> get a FAIL when we run it.
> 
> Testcase: igt/kms_lip/flip-vs-panning-vs-hang
> Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>

This of course breaks error capture on every platform that doesn't use
rpm, and even then is spectacularly useless on those that do.
-Chris
Imre Deak June 2, 2014, 2:02 p.m. UTC | #3
On Mon, 2014-06-02 at 14:35 +0100, Chris Wilson wrote:
> On Fri, Dec 20, 2013 at 03:09:41PM -0200, Paulo Zanoni wrote:
> > From: Paulo Zanoni <paulo.r.zanoni@intel.com>
> > 
> > We're iterating over the CPU transcoders, so check for the correct
> > power domain.
> > 
> > This fixes many "unclaimed register" error messages.
> > 
> > This can be reproduced by the IGT test mentioned below, but we still
> > get a FAIL when we run it.
> > 
> > Testcase: igt/kms_lip/flip-vs-panning-vs-hang
> > Signed-off-by: Paulo Zanoni <paulo.r.zanoni@intel.com>
> 
> This of course breaks error capture on every platform that doesn't use
> rpm, and even then is spectacularly useless on those that do.

It is broken atm, because of the bug in
intel_display_power_enabled_sw(). With that fixed these checks should
work everywhere, since POWER_DOMAIN_INIT is always held on platforms w/o
RPM.

--Imre
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 4d1357a..4d4b4bc 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -11459,7 +11459,8 @@  intel_display_capture_error_state(struct drm_device *dev)
 		enum transcoder cpu_transcoder = transcoders[i];
 
 		error->transcoder[i].power_domain_on =
-			intel_display_power_enabled_sw(dev, POWER_DOMAIN_PIPE(i));
+			intel_display_power_enabled_sw(dev,
+				POWER_DOMAIN_TRANSCODER(cpu_transcoder));
 		if (!error->transcoder[i].power_domain_on)
 			continue;