drm/i915: Handle i915_ppgtt_put correctly
authorMichel Thierry <michel.thierry@intel.com>
Tue, 19 Aug 2014 14:49:41 +0000 (15:49 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 3 Sep 2014 09:04:10 +0000 (11:04 +0200)
commite07f0552c6adc9f36c8d07cac24adf2c87ddfd69
treeeeb9d7fa541695af410e37f07588f7ec701ffaac
parentc695b6b689b9c12611ae7ba849858b631322e11e
drm/i915: Handle i915_ppgtt_put correctly

Unfortunately, the gem_obj/vma relationship is not symmetrical; a gem_obj
can look up for the same vma more than once (where the ppgtt refcount is
incremented), but will free the vma only once (i915_gem_free_object).

This difference in refcount get/put means that the ppgtt is not removed
after the context and vma are destroyed, because sometimes the refcount
will never go back to zero.

v2: Just move the ppgtt refcount into vma_create.

OTC-Jira: VIZ-3719
Signed-off-by: Michel Thierry <michel.thierry@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
drivers/gpu/drm/i915/i915_gem_gtt.c