|
@@ -274,6 +274,14 @@ void i915_gem_context_fini(struct drm_device *dev)
|
|
|
intel_gpu_reset(dev);
|
|
|
|
|
|
i915_gem_object_unpin(dctx->obj);
|
|
|
+
|
|
|
+ /* When default context is created and switched to, base object refcount
|
|
|
+ * will be 2 (+1 from object creation and +1 from do_switch()).
|
|
|
+ * i915_gem_context_fini() will be called after gpu_idle() has switched
|
|
|
+ * to default context. So we need to unreference the base object once
|
|
|
+ * to offset the do_switch part, so that i915_gem_context_unreference()
|
|
|
+ * can then free the base object correctly. */
|
|
|
+ drm_gem_object_unreference(&dctx->obj->base);
|
|
|
i915_gem_context_unreference(dctx);
|
|
|
}
|
|
|
|