intel-gfx.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] drm/i915: provide more error output when mode sets fail
@ 2011-07-19 22:38 Jesse Barnes
  2011-07-20  0:14 ` Chris Wilson
  0 siblings, 1 reply; 3+ messages in thread
From: Jesse Barnes @ 2011-07-19 22:38 UTC (permalink / raw)
  To: intel-gfx

If a mode set fails we may get a message from drm_crtc_helper if we're lucky,
but it won't tell us anything about *why* we failed to set a mode.  So
add a few DRM_ERRORs for the cases that shouldn't happen so we can debug
things more easily.

Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
---
 drivers/gpu/drm/i915/intel_display.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index 0f1c799..2434441 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -1934,7 +1934,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 
 	/* no fb bound */
 	if (!crtc->fb) {
-		DRM_DEBUG_KMS("No FB bound\n");
+		DRM_ERROR("No FB bound\n");
 		return 0;
 	}
 
@@ -1943,6 +1943,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 	case 1:
 		break;
 	default:
+		DRM_ERROR("no plane for crtc\n");
 		return -EINVAL;
 	}
 
@@ -1952,6 +1953,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 					 NULL);
 	if (ret != 0) {
 		mutex_unlock(&dev->struct_mutex);
+		DRM_ERROR("pin & fence failed\n");
 		return ret;
 	}
 
@@ -1980,6 +1982,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
 	if (ret) {
 		i915_gem_object_unpin(to_intel_framebuffer(crtc->fb)->obj);
 		mutex_unlock(&dev->struct_mutex);
+		DRM_ERROR("failed to update base address\n");
 		return ret;
 	}
 
-- 
1.7.1

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/i915: provide more error output when mode sets fail
  2011-07-19 22:38 [PATCH] drm/i915: provide more error output when mode sets fail Jesse Barnes
@ 2011-07-20  0:14 ` Chris Wilson
  2011-07-20  0:22   ` Jesse Barnes
  0 siblings, 1 reply; 3+ messages in thread
From: Chris Wilson @ 2011-07-20  0:14 UTC (permalink / raw)
  To: Jesse Barnes, intel-gfx

On Tue, 19 Jul 2011 15:38:56 -0700, Jesse Barnes <jbarnes@virtuousgeek.org> wrote:
> If a mode set fails we may get a message from drm_crtc_helper if we're lucky,
> but it won't tell us anything about *why* we failed to set a mode.  So
> add a few DRM_ERRORs for the cases that shouldn't happen so we can debug
> things more easily.

Also fix drm not to simply ignore the error codes would also be useful.
But how does logging the error without logging the state help? Presumably
you are targeting the unreproducible cases?

> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
> ---
>  drivers/gpu/drm/i915/intel_display.c |    5 ++++-
>  1 files changed, 4 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
> index 0f1c799..2434441 100644
> --- a/drivers/gpu/drm/i915/intel_display.c
> +++ b/drivers/gpu/drm/i915/intel_display.c
> @@ -1934,7 +1934,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
>  
>  	/* no fb bound */
>  	if (!crtc->fb) {
> -		DRM_DEBUG_KMS("No FB bound\n");
> +		DRM_ERROR("No FB bound\n");
>  		return 0;
>  	}

Should this be flagged as en error then?

>  
> @@ -1943,6 +1943,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
>  	case 1:
>  		break;
>  	default:
> +		DRM_ERROR("no plane for crtc\n");
>  		return -EINVAL;
>  	}
>  
> @@ -1952,6 +1953,7 @@ intel_pipe_set_base(struct drm_crtc *crtc, int x, int y,
>  					 NULL);
>  	if (ret != 0) {
>  		mutex_unlock(&dev->struct_mutex);
> +		DRM_ERROR("pin & fence failed\n");

In this and the following, report the reason/error code for the failure.
-Chris

-- 
Chris Wilson, Intel Open Source Technology Centre

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] drm/i915: provide more error output when mode sets fail
  2011-07-20  0:14 ` Chris Wilson
@ 2011-07-20  0:22   ` Jesse Barnes
  0 siblings, 0 replies; 3+ messages in thread
From: Jesse Barnes @ 2011-07-20  0:22 UTC (permalink / raw)
  To: Chris Wilson; +Cc: intel-gfx

On Wed, 20 Jul 2011 01:14:47 +0100
Chris Wilson <chris@chris-wilson.co.uk> wrote:

> On Tue, 19 Jul 2011 15:38:56 -0700, Jesse Barnes
> <jbarnes@virtuousgeek.org> wrote:
> > If a mode set fails we may get a message from drm_crtc_helper if
> > we're lucky, but it won't tell us anything about *why* we failed to
> > set a mode.  So add a few DRM_ERRORs for the cases that shouldn't
> > happen so we can debug things more easily.
> 
> Also fix drm not to simply ignore the error codes would also be
> useful. But how does logging the error without logging the state
> help? Presumably you are targeting the unreproducible cases?

I added these to catch a mode setting failure Keith was seeing
following a GPU hang.  The simple debug info was enough to track things
down.  But I agree, really the DRM hooks should return ints and give us
more info about what happened, and try to roll back the config.

> >  	if (!crtc->fb) {
> > -		DRM_DEBUG_KMS("No FB bound\n");
> > +		DRM_ERROR("No FB bound\n");
> >  		return 0;
> >  	}
> 
> Should this be flagged as en error then?

Possibly, unless we shut off displays this way??

> > @@ -1952,6 +1953,7 @@ intel_pipe_set_base(struct drm_crtc *crtc,
> > int x, int y, NULL);
> >  	if (ret != 0) {
> >  		mutex_unlock(&dev->struct_mutex);
> > +		DRM_ERROR("pin & fence failed\n");
> 
> In this and the following, report the reason/error code for the
> failure. -Chris

Sure.

Jesse

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-07-20  0:22 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-19 22:38 [PATCH] drm/i915: provide more error output when mode sets fail Jesse Barnes
2011-07-20  0:14 ` Chris Wilson
2011-07-20  0:22   ` Jesse Barnes

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).