OSDN Git Service

drm/i915/gtt: Convert WARN_ON to GEM debugging
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 15 Feb 2018 11:07:59 +0000 (11:07 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 15 Feb 2018 16:22:21 +0000 (16:22 +0000)
As we presume that we have sufficient coverage of CI for new machines
and new code paths, we do not need to have user impacting WARN_ON for
programming errors inside i915_gem_gtt.c, so convert those over to
GEM_BUG_ON. This leaves the memory debugging WARN_ON in place as they
are not so easy to exercise with CI.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20180215110759.28603-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_gem_gtt.c

index a44eccd..cd59842 100644 (file)
@@ -710,7 +710,7 @@ alloc_pdp(struct i915_address_space *vm)
        struct i915_page_directory_pointer *pdp;
        int ret = -ENOMEM;
 
-       WARN_ON(!use_4lvl(vm));
+       GEM_BUG_ON(!use_4lvl(vm));
 
        pdp = kzalloc(sizeof(*pdp), GFP_KERNEL);
        if (!pdp)
@@ -2249,9 +2249,9 @@ void i915_ppgtt_release(struct kref *kref)
        trace_i915_ppgtt_release(&ppgtt->base);
 
        /* vmas should already be unbound and destroyed */
-       WARN_ON(!list_empty(&ppgtt->base.active_list));
-       WARN_ON(!list_empty(&ppgtt->base.inactive_list));
-       WARN_ON(!list_empty(&ppgtt->base.unbound_list));
+       GEM_BUG_ON(!list_empty(&ppgtt->base.active_list));
+       GEM_BUG_ON(!list_empty(&ppgtt->base.inactive_list));
+       GEM_BUG_ON(!list_empty(&ppgtt->base.unbound_list));
 
        ppgtt->base.cleanup(&ppgtt->base);
        i915_address_space_fini(&ppgtt->base);
@@ -2814,10 +2814,10 @@ int i915_gem_init_aliasing_ppgtt(struct drm_i915_private *i915)
 
        i915->mm.aliasing_ppgtt = ppgtt;
 
-       WARN_ON(ggtt->base.bind_vma != ggtt_bind_vma);
+       GEM_BUG_ON(ggtt->base.bind_vma != ggtt_bind_vma);
        ggtt->base.bind_vma = aliasing_gtt_bind_vma;
 
-       WARN_ON(ggtt->base.unbind_vma != ggtt_unbind_vma);
+       GEM_BUG_ON(ggtt->base.unbind_vma != ggtt_unbind_vma);
        ggtt->base.unbind_vma = aliasing_gtt_unbind_vma;
 
        return 0;
@@ -2908,7 +2908,7 @@ void i915_ggtt_cleanup_hw(struct drm_i915_private *dev_priv)
        ggtt->base.closed = true;
 
        mutex_lock(&dev_priv->drm.struct_mutex);
-       WARN_ON(!list_empty(&ggtt->base.active_list));
+       GEM_BUG_ON(!list_empty(&ggtt->base.active_list));
        list_for_each_entry_safe(vma, vn, &ggtt->base.inactive_list, vm_link)
                WARN_ON(i915_vma_unbind(vma));
        mutex_unlock(&dev_priv->drm.struct_mutex);
@@ -3801,6 +3801,9 @@ i915_get_ggtt_vma_pages(struct i915_vma *vma)
        GEM_BUG_ON(!i915_gem_object_has_pinned_pages(vma->obj));
 
        switch (vma->ggtt_view.type) {
+       default:
+               GEM_BUG_ON(vma->ggtt_view.type);
+               /* fall through */
        case I915_GGTT_VIEW_NORMAL:
                vma->pages = vma->obj->mm.pages;
                return 0;
@@ -3813,11 +3816,6 @@ i915_get_ggtt_vma_pages(struct i915_vma *vma)
        case I915_GGTT_VIEW_PARTIAL:
                vma->pages = intel_partial_pages(&vma->ggtt_view, vma->obj);
                break;
-
-       default:
-               WARN_ONCE(1, "GGTT view %u not implemented!\n",
-                         vma->ggtt_view.type);
-               return -EINVAL;
        }
 
        ret = 0;