Skip to contentSkip to conversation

drm/i915: Fix context object leak for legacy contexts

PATCH In review Thomas Daniel 3 participants 3 messages Nov 25, 2014

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 drm/i915: Fix context object leak for legacy contexts

Dynamic context pinning for LRCs introduced a leak in legacy mode. Reinstate context unreference in i915_gem_free_request for legacy contexts.

Leak reported by i-g-t/drv_module_reload fixed by this patch.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86507

---
 drivers/gpu/drm/i915/i915_gem.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/i915_gem.c +6 -4
index 614bc2b..c630d49 100644
@@ -2574,11 +2574,13 @@ static void i915_gem_free_request(struct drm_i915_gem_request *request)
 	list_del(&request->list);
 	i915_gem_request_remove_from_client(request);
 
-	if (i915.enable_execlists && ctx) {
-		struct intel_engine_cs *ring = request->ring;
+	if (ctx) {
+		if (i915.enable_execlists) {
+			struct intel_engine_cs *ring = request->ring;
 
-		if (ctx != ring->default_context)
-			intel_lr_context_unpin(ring, ctx);
+			if (ctx != ring->default_context)
+				intel_lr_context_unpin(ring, ctx);
+		}
 		i915_gem_context_unreference(ctx);
 	}
 	kfree(request);
Signature · 6 lines
1.7.9.5

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
Reviewed-by on v1 1/1
#1 lore raw

Looks good to me.

Quoted 23 lines · Thomas Daniel

Dynamic context pinning for LRCs introduced a leak in legacy mode. Reinstate context unreference in i915_gem_free_request for legacy contexts.

Leak reported by i-g-t/drv_module_reload fixed by this patch.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=86507

---
  drivers/gpu/drm/i915/i915_gem.c |   10 ++++++----
  1 file changed, 6 insertions(+), 4 deletions(-)
drivers/gpu/drm/i915/i915_gem.c +2 -2
index 614bc2b..c630d49 100644
@@ -2574,11 +2574,13 @@ static void i915_gem_free_request(struct drm_i915_gem_request *request)
  	list_del(&request->list);
  	i915_gem_request_remove_from_client(request);
 
-	if (i915.enable_execlists && ctx) {
-		struct intel_engine_cs *ring = request->ring;
+	if (ctx) {
+		if (i915.enable_execlists) {

drivers/gpu/drm/i915/i915_gem.c static void i915_gem_free_request(struct drm_i915_gem_request *request) · line 2586

Quoted 10 lines
drivers/gpu/drm/i915/i915_gem.c +4 -2
+			struct intel_engine_cs *ring = request->ring;
 
-		if (ctx != ring->default_context)
-			intel_lr_context_unpin(ring, ctx);
+			if (ctx != ring->default_context)
+				intel_lr_context_unpin(ring, ctx);
+		}
  		i915_gem_context_unreference(ctx);
  	}
  	kfree(request);

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Tested-by on v1 1/1
#2 lore raw

Re: [PATCH] drm/i915: Fix context object leak for legacy

In reply to Thomas Daniel

-------------------------------------Summary-------------------------------------
Platform Delta drm-intel-nightly Series Applied

PNV                                  367/367              367/367
ILK                 -13              375/375              362/375
SNB                                  450/450              450/450

IVB -2 503/503 501/503
BYT 289/289 289/289
HSW -4 567/567 563/567
BDW 417/417 417/417
-------------------------------------Detailed-------------------------------------
Platform Test drm-intel-nightly Series Applied

 ILK  igt_gem_reset_stats_close-pending-fork-render      TIMEOUT(15, M37M26)PASS(1, M26)      TIMEOUT(1, M26)
 ILK  igt_kms_3d      DMESG_WARN(2, M26)PASS(3, M37M26)      DMESG_WARN(1, M26)
*ILK  igt_kms_flip_flip-vs-dpms-off-vs-modeset      DMESG_WARN(1, M26)PASS(2, M37M26)      NSPT(1, M26)
 ILK  igt_kms_flip_nonexisting-fb      DMESG_WARN(3, M26)PASS(3, M37M26)      DMESG_WARN(1, M26)
*ILK  igt_kms_pipe_crc_basic_bad-nb-words-1      PASS(2, M37M26)      DMESG_WARN(1, M26)
*ILK  igt_kms_pipe_crc_basic_bad-pipe      PASS(2, M37M26)      DMESG_WARN(1, M26)
 ILK  igt_kms_setmode_invalid-clone-exclusive-crtc      DMESG_WARN(1, M26)PASS(2, M37M26)      DMESG_WARN(1, M26)
*ILK  igt_kms_flip_rcs-flip-vs-panning-interruptible      DMESG_WARN(1, M26)PASS(2, M37M26)      NSPT(1, M26)
*ILK  igt_kms_flip_rcs-wf_vblank-vs-dpms-interruptible      DMESG_WARN(1, M26)PASS(1, M37)      NSPT(1, M26)
 ILK  igt_kms_flip_rcs-wf_vblank-vs-modeset      DMESG_WARN(1, M26)PASS(2, M37M26)      DMESG_WARN(1, M26)
*ILK  igt_kms_flip_bcs-flip-vs-modeset-interruptible      PASS(4, M37M26)      DMESG_WARN(1, M26)
*ILK  igt_kms_flip_rcs-flip-vs-modeset-interruptible      PASS(4, M37M26)      DMESG_WARN(1, M26)
 ILK  igt_kms_flip_vblank-vs-hang      TIMEOUT(14, M37M26)PASS(1, M26)      TIMEOUT(1, M26)
 IVB  igt_gem_bad_reloc_negative-reloc      NSPT(16, M34M21M4)PASS(1, M21)      NSPT(1, M21)
 IVB  igt_gem_bad_reloc_negative-reloc-lut      NSPT(3, M21M34M4)PASS(17, M21M34M4)      NSPT(1, M21)
 HSW  igt_gem_bad_reloc_negative-reloc-lut      NSPT(26, M40M20M19)PASS(1, M20)      NSPT(1, M19)
*HSW  igt_kms_fence_pin_leak      PASS(3, M20M19)      DMESG_WARN(1, M19)
*HSW  igt_kms_rotation_crc_primary-rotation      PASS(25, M20M40M19)      DMESG_WARN(1, M19)
*HSW  igt_pm_rc6_residency_rc6-accuracy      PASS(27, M20M40M19)      FAIL(1, M19)

Note: You need to pay more attention to line start with '*'
_______________________________________________
Intel-gfx mailing list [email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx