| From 7e81a42e341a4f15d76624b7c02ffb21b085b56f Mon Sep 17 00:00:00 2001 |
| From: Chris Wilson <chris@chris-wilson.co.uk> |
| Date: Sat, 15 Sep 2012 09:41:57 +0100 |
| Subject: drm/i915: Reduce a pin-leak BUG into a WARN |
| |
| From: Chris Wilson <chris@chris-wilson.co.uk> |
| |
| commit 7e81a42e341a4f15d76624b7c02ffb21b085b56f upstream. |
| |
| Pin-leaks persist and we get the perennial bug reports of machine |
| lockups to the BUG_ON(pin_count==MAX). If we instead loudly report that |
| the object cannot be pinned at that time it should prevent the driver from |
| locking up, and hopefully restore a semblance of working whilst still |
| leaving us a OOPS to debug. |
| |
| Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> |
| Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/gpu/drm/i915/i915_gem.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/gpu/drm/i915/i915_gem.c |
| +++ b/drivers/gpu/drm/i915/i915_gem.c |
| @@ -3044,7 +3044,8 @@ i915_gem_object_pin(struct drm_i915_gem_ |
| { |
| int ret; |
| |
| - BUG_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT); |
| + if (WARN_ON(obj->pin_count == DRM_I915_GEM_OBJECT_MAX_PIN_COUNT)) |
| + return -EBUSY; |
| |
| if (obj->gtt_space != NULL) { |
| if ((alignment && obj->gtt_offset & (alignment - 1)) || |