mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-12 07:36:43 +07:00
drm/i915: Unpin last_context at reset
We're forgetting to unpin the last_context from the ggtt at GPU reset
time. This leads to the vma pin_count leaking at every reset if the
last context wasn't the ring default context. Further use of the same
context will trigger the pin_count check in i915_gem_object_pin() and
userspace will be faced with EBUSY as a result.
This plaques kms_flip rather badly since it performs lots of resets,
and every fd has its own default context these days.
Fix the problem by properly unpinning the last context at reset.
This regression seems to back to
commit acce9ffa48
Author: Ben Widawsky <ben@bwidawsk.net>
Date: Fri Dec 6 14:11:03 2013 -0800
drm/i915: Better reset handling for contexts
Testcase: igt/gem_ctx_exec/reset-pin-leak
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
13cf550448
commit
4bfad3ddc8
@ -382,6 +382,9 @@ void i915_gem_context_reset(struct drm_device *dev)
|
||||
dctx->obj->active = 0;
|
||||
}
|
||||
|
||||
if (ring->last_context->obj && i == RCS)
|
||||
i915_gem_object_ggtt_unpin(ring->last_context->obj);
|
||||
|
||||
i915_gem_context_unreference(ring->last_context);
|
||||
i915_gem_context_reference(dctx);
|
||||
ring->last_context = dctx;
|
||||
|
Loading…
Reference in New Issue
Block a user