The i915_request holds a reference to intel_context, which in turn holds a reference on the VM. But the dma-resv update for VM_BIND feature would require VM hold a reference to the i915_request through dma-resv fences of VM_PRIVATE objects (which share a per VM dma-resv object). Thus, we have a circular reference pattern causing the VM reference to never reach 0, hence VM is not destroyed. Break this by reverting the below patch which is making the i915_request to hold a reference on intel_context. "drm/i915: Hold reference to intel_context over life of i915_request" This means we can't access rq->engine in i915_fence_get_driver_name() as user do not hold a reference on rq->engine here. So, instead store required device private pointer in 'rq->i915' and use it. Niranjana Vishwanathapura (2): drm/i915: Do not access rq->engine without a reference Revert "drm/i915: Hold reference to intel_context over life of i915_request" Ramalingam C (1): drm/i915: Do not use reserved requests for virtual engines drivers/gpu/drm/i915/i915_request.c | 55 ++++++++++++++++++----------- drivers/gpu/drm/i915/i915_request.h | 2 ++ 2 files changed, 36 insertions(+), 21 deletions(-) -- 2.20.1