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

Commit 3f06319b authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: kgsl: Avoid race of fault handler and recovery"

parents d7bfd382 8a46f594
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -757,6 +757,7 @@ static int kgsl_iommu_fault_handler(struct iommu_domain *domain,
	unsigned int no_page_fault_log = 0;
	char *fault_type = "unknown";
	char *comm = "unknown";
	bool fault_ret_flag = false;
	struct kgsl_process_private *private;

	static DEFINE_RATELIMIT_STATE(_rs,
@@ -800,9 +801,11 @@ static int kgsl_iommu_fault_handler(struct iommu_domain *domain,
		 * Turn off GPU IRQ so we don't get faults from it too.
		 * The device mutex must be held to change power state
		 */
		mutex_lock(&device->mutex);
		if (mutex_trylock(&device->mutex)) {
			kgsl_pwrctrl_change_state(device, KGSL_STATE_AWARE);
			mutex_unlock(&device->mutex);
		} else
			fault_ret_flag = true;
	}

	contextidr = KGSL_IOMMU_GET_CTX_REG(ctx, CONTEXTIDR);
@@ -861,6 +864,8 @@ static int kgsl_iommu_fault_handler(struct iommu_domain *domain,
				dev_err(ctx->kgsldev->dev, "*EMPTY*\n");
		}
	}
	if (fault_ret_flag)
		return ret;


	/*