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

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

Merge "drm/msm/sde: Fix race condition between enable/disable hist irq"

parents 1a334e4e 6204ea6d
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -6189,6 +6189,7 @@ static int _sde_crtc_event_enable(struct sde_kms *kms,
	unsigned long flags;
	bool found = false;
	int ret, i = 0;
	bool add_event = false;

	crtc = to_sde_crtc(crtc_drm);
	spin_lock_irqsave(&crtc->spin_lock, flags);
@@ -6238,11 +6239,24 @@ static int _sde_crtc_event_enable(struct sde_kms *kms,
		}

		INIT_LIST_HEAD(&node->irq.list);

		mutex_lock(&crtc->crtc_lock);
		ret = node->func(crtc_drm, true, &node->irq);
		if (!ret) {
			spin_lock_irqsave(&crtc->spin_lock, flags);
			list_add_tail(&node->list, &crtc->user_event_list);
			add_event = true;
			spin_unlock_irqrestore(&crtc->spin_lock, flags);
		}
		mutex_unlock(&crtc->crtc_lock);

		sde_power_resource_enable(&priv->phandle, kms->core_client,
				false);
	}

	if (add_event)
		return 0;

	if (!ret) {
		spin_lock_irqsave(&crtc->spin_lock, flags);
		list_add_tail(&node->list, &crtc->user_event_list);