diff mbox

[Intel-gfx] linux-next: Tree for Jul 25 [ call-trace: drm | drm-intel related? ]

Message ID 20130725172616.GA11514@cantiga.alporthouse.com (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson July 25, 2013, 5:26 p.m. UTC
On Thu, Jul 25, 2013 at 07:15:03PM +0200, Sedat Dilek wrote:
> On Thu, Jul 25, 2013 at 7:01 PM, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> > Basically boils down to either an object allocation failure or mmaping
> > failure. I think dmesg with drm.debug=7 is the next step.
> 
> Attached! Thanks for taking care.

Hmm, looks like i915_gem_map_gtt fails, but no reason given, so can you
please apply this for more debug:

Comments

Chris Wilson July 25, 2013, 6:03 p.m. UTC | #1
On Thu, Jul 25, 2013 at 07:52:22PM +0200, Sedat Dilek wrote:
> On Thu, Jul 25, 2013 at 7:26 PM, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> > On Thu, Jul 25, 2013 at 07:15:03PM +0200, Sedat Dilek wrote:
> >> On Thu, Jul 25, 2013 at 7:01 PM, Chris Wilson <chris@chris-wilson.co.uk> wrote:
> >> > Basically boils down to either an object allocation failure or mmaping
> >> > failure. I think dmesg with drm.debug=7 is the next step.
> >>
> >> Attached! Thanks for taking care.
> >
> > Hmm, looks like i915_gem_map_gtt fails, but no reason given, so can you
> > please apply this for more debug:
> >
> > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> > index 0563661..34e09bf 100644
> > --- a/drivers/gpu/drm/i915/i915_gem.c
> > +++ b/drivers/gpu/drm/i915/i915_gem.c
> > @@ -1630,24 +1630,29 @@ i915_gem_mmap_gtt(struct drm_file *file,
> >
> >         obj = to_intel_bo(drm_gem_object_lookup(dev, file, handle));
> >         if (&obj->base == NULL) {
> > +               DRM_DRIVER_DEBUG("Unknown object handle %d\n", handle);
> >                 ret = -ENOENT;
> >                 goto unlock;
> >         }
> >
> >         if (obj->base.size > dev_priv->gtt.mappable_end) {
> > +               DRM_DRIVER_DEBUG("Object (%d) larger than mappable aperture (%d) > %d\n",
> > +                               (int)obj->base.size, (int)dev_priv->gtt.mappable_end);
> >                 ret = -E2BIG;
> >                 goto out;
> >         }
> >
> >         if (obj->madv != I915_MADV_WILLNEED) {
> > -               DRM_ERROR("Attempting to mmap a purgeable buffer\n");
> > +               DRM_DRIVER_DEBUG("Attempting to mmap a purgeable buffer\n");
> >                 ret = -EINVAL;
> >                 goto out;
> >         }
> >
> >         ret = i915_gem_object_create_mmap_offset(obj);
> > -       if (ret)
> > +       if (ret) {
> > +               DRM_DRIVER_DEBUG("Failed to allocate mmap offset (ret=%d)\n", ret);
> >                 goto out;
> > +       }
> >
> >         *offset = (u64)obj->base.map_list.hash.key << PAGE_SHIFT;
> >
> > --
> 
> This does not apply... After refreshing and some cleanups... does not build:
> 
> $ LANG=C LC_ALL=C make M=drivers/gpu/drm/i915
>   LD      drivers/gpu/drm/i915/built-in.o
>   CC [M]  drivers/gpu/drm/i915/i915_drv.o
>   CC [M]  drivers/gpu/drm/i915/i915_dma.o
>   CC [M]  drivers/gpu/drm/i915/i915_irq.o
>   CC [M]  drivers/gpu/drm/i915/i915_debugfs.o
>   CC [M]  drivers/gpu/drm/i915/i915_gpu_error.o
>   CC [M]  drivers/gpu/drm/i915/i915_suspend.o
>   CC [M]  drivers/gpu/drm/i915/i915_gem.o
> drivers/gpu/drm/i915/i915_gem.c: In function 'i915_gem_mmap_gtt':
> drivers/gpu/drm/i915/i915_gem.c:1538:3: error: implicit declaration of
> function 'DRM_DRIVER_DEBUG' [-Werror=implicit-function-declaration]
> cc1: some warnings being treated as errors
> make[1]: *** [drivers/gpu/drm/i915/i915_gem.o] Error 1
> make: *** [_module_drivers/gpu/drm/i915] Error 2

Bah, try DRM_DEBUG_DRIVER instead.
-Chris
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 0563661..34e09bf 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -1630,24 +1630,29 @@  i915_gem_mmap_gtt(struct drm_file *file,
 
 	obj = to_intel_bo(drm_gem_object_lookup(dev, file, handle));
 	if (&obj->base == NULL) {
+		DRM_DRIVER_DEBUG("Unknown object handle %d\n", handle);
 		ret = -ENOENT;
 		goto unlock;
 	}
 
 	if (obj->base.size > dev_priv->gtt.mappable_end) {
+		DRM_DRIVER_DEBUG("Object (%d) larger than mappable aperture (%d) > %d\n",
+				(int)obj->base.size, (int)dev_priv->gtt.mappable_end);
 		ret = -E2BIG;
 		goto out;
 	}
 
 	if (obj->madv != I915_MADV_WILLNEED) {
-		DRM_ERROR("Attempting to mmap a purgeable buffer\n");
+		DRM_DRIVER_DEBUG("Attempting to mmap a purgeable buffer\n");
 		ret = -EINVAL;
 		goto out;
 	}
 
 	ret = i915_gem_object_create_mmap_offset(obj);
-	if (ret)
+	if (ret) {
+		DRM_DRIVER_DEBUG("Failed to allocate mmap offset (ret=%d)\n", ret);
 		goto out;
+	}
 
 	*offset = (u64)obj->base.map_list.hash.key << PAGE_SHIFT;