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

Commit 57ff0136 authored by Pranav Patel's avatar Pranav Patel
Browse files

msm: kgsl: clear fault to avoid race between timeout and hard fault



Observed race between timeout fault (long IB detection) and
MISC hang (hard fault). MISC hang can be set while in recovery from
timeout fault. If fault flag is set in start path CP init fails.
Clear gpu fault to avoid such race.

Change-Id: Id99dcefd0ef3438bc95c6c3c84e2eadce214cf77
Signed-off-by: default avatarPranav Patel <pranavp@codeaurora.org>
parent 657a9dbb
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -2009,9 +2009,6 @@ static int _adreno_start(struct adreno_device *adreno_dev)

	regulator_left_on = regulators_left_on(device);

	/* Clear any GPU faults that might have been left over */
	adreno_clear_gpu_fault(adreno_dev);

	/*
	 * Keep high bus vote to reduce AHB latency
	 * during FW loading and wakeup.
@@ -2047,6 +2044,14 @@ static int _adreno_start(struct adreno_device *adreno_dev)
	 */
	adreno_deassert_gbif_halt(adreno_dev);

	/*
	 * Observed race between timeout fault (long IB detection) and
	 * MISC hang (hard fault). MISC hang can be set while in recovery from
	 * timeout fault. If fault flag is set in start path CP init fails.
	 * Clear gpu fault to avoid such race.
	 */
	adreno_clear_gpu_fault(adreno_dev);

	adreno_ringbuffer_set_global(adreno_dev, 0);

	status = kgsl_mmu_start(device);