Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f5c29ace authored by Hareesh Gundu's avatar Hareesh Gundu Committed by Gerrit - the friendly Code Review server
Browse files

msm: kgsl: Get GPU snapshot if wait for global timestamp timeout



If the wait for global fails due to timeout then nothing after this
point is likely to work very well. Get GPU snapshot in addition to
BUG_ON(), to analyze the GPU fault.

CRs-Fixed: 1053780
Change-Id: I29930120a72a08533c859002f646af93e67c754f
Signed-off-by: default avatarHareesh Gundu <hareeshg@codeaurora.org>
parent e9a7b484
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -499,13 +499,20 @@ void adreno_drawctxt_detach(struct kgsl_context *context)

	/*
	 * If the wait for global fails due to timeout then nothing after this
	 * point is likely to work very well - BUG_ON() so we can take advantage
	 * of the debug tools to figure out what the h - e - double hockey
	 * sticks happened. If EAGAIN error is returned then recovery will kick
	 * in and there will be no more commands in the RB pipe from this
	 * context which is waht we are waiting for, so ignore -EAGAIN error
	 * point is likely to work very well - Get GPU snapshot and BUG_ON()
	 * so we can take advantage of the debug tools to figure out what the
	 * h - e - double hockey sticks happened. If EAGAIN error is returned
	 * then recovery will kick in and there will be no more commands in the
	 * RB pipe from this context which is waht we are waiting for, so ignore
	 * -EAGAIN error
	 */
	BUG_ON(ret && ret != -EAGAIN);
	if (ret && ret != -EAGAIN) {
		KGSL_DRV_ERR(device, "Wait for global ts=%d type=%d error=%d\n",
				drawctxt->internal_timestamp,
				drawctxt->type, ret);
		device->force_panic = 1;
		kgsl_device_snapshot(device, context);
	}

	kgsl_sharedmem_writel(device, &device->memstore,
			KGSL_MEMSTORE_OFFSET(context->id, soptimestamp),