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

Commit 9bd727e1 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Don't read CP_RB_RPTR register without clock"

parents eac48b32 465e0755
Loading
Loading
Loading
Loading
+29 −5
Original line number Diff line number Diff line
@@ -284,6 +284,7 @@ static void _retire_marker(struct kgsl_cmdbatch *cmdbatch)
	struct kgsl_context *context = cmdbatch->context;
	struct adreno_context *drawctxt = ADRENO_CONTEXT(cmdbatch->context);
	struct kgsl_device *device = context->device;
	struct adreno_device *adreno_dev = ADRENO_DEVICE(device);

	/*
	 * Write the start and end timestamp to the memstore to keep the
@@ -301,6 +302,15 @@ static void _retire_marker(struct kgsl_cmdbatch *cmdbatch)
	/* Retire pending GPU events for the object */
	kgsl_process_event_group(device, &context->events);

	/*
	 * For A3xx we still get the rptr from the CP_RB_RPTR instead of
	 * rptr scratch out address. At this point GPU clocks turned off.
	 * So avoid reading GPU register directly for A3xx.
	 */
	if (adreno_is_a3xx(adreno_dev))
		trace_adreno_cmdbatch_retired(cmdbatch, -1, 0, 0, drawctxt->rb,
				0);
	else
		trace_adreno_cmdbatch_retired(cmdbatch, -1, 0, 0, drawctxt->rb,
			adreno_get_rptr(drawctxt->rb));
	kgsl_cmdbatch_destroy(cmdbatch);
@@ -613,12 +623,13 @@ static int sendcmd(struct adreno_device *adreno_dev,
		}
	}

	mutex_unlock(&device->mutex);

	if (ret) {
		dispatcher->inflight--;
		dispatch_q->inflight--;

		mutex_unlock(&device->mutex);

		/*
		 * Don't log a message in case of:
		 * -ENOENT means that the context was detached before the
@@ -642,6 +653,8 @@ static int sendcmd(struct adreno_device *adreno_dev,
		time.ticks, (unsigned long) secs, nsecs / 1000, drawctxt->rb,
		adreno_get_rptr(drawctxt->rb));

	mutex_unlock(&device->mutex);

	cmdbatch->submit_ticks = time.ticks;

	dispatch_q->cmd_q[dispatch_q->tail] = cmdbatch;
@@ -1923,8 +1936,19 @@ static void retire_cmdbatch(struct adreno_device *adreno_dev,
	if (test_bit(CMDBATCH_FLAG_PROFILE, &cmdbatch->priv))
		cmdbatch_profile_ticks(adreno_dev, cmdbatch, &start, &end);

	trace_adreno_cmdbatch_retired(cmdbatch, (int) dispatcher->inflight,
		start, end, ADRENO_CMDBATCH_RB(cmdbatch),
	/*
	 * For A3xx we still get the rptr from the CP_RB_RPTR instead of
	 * rptr scratch out address. At this point GPU clocks turned off.
	 * So avoid reading GPU register directly for A3xx.
	 */
	if (adreno_is_a3xx(adreno_dev))
		trace_adreno_cmdbatch_retired(cmdbatch,
				(int) dispatcher->inflight, start, end,
				ADRENO_CMDBATCH_RB(cmdbatch), 0);
	else
		trace_adreno_cmdbatch_retired(cmdbatch,
				(int) dispatcher->inflight, start, end,
				ADRENO_CMDBATCH_RB(cmdbatch),
				adreno_get_rptr(drawctxt->rb));

	drawctxt->submit_retire_ticks[drawctxt->ticks_index] =