Received: by 2002:a05:6a10:6d25:0:0:0:0 with SMTP id gq37csp441697pxb; Sat, 11 Sep 2021 09:40:25 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzCkuMTDyACiYhnBO+Z8QW3qGl4lzgx7EC7K+8Om0jIhpU/uiYywJXGK+PoRluLbaM5VjbQ X-Received: by 2002:a05:6602:2219:: with SMTP id n25mr2483674ion.185.1631378424981; Sat, 11 Sep 2021 09:40:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1631378424; cv=none; d=google.com; s=arc-20160816; b=WxwP6JhhFIiIRdEC+fVYp7+k54Pwbg0CmFWIkABPmDahOKmM0zzC5Yktn8jowO7ceY weHU1hNgEuFk1CF+KwehCQZREqXwOaWMPp4ws1z0WHCgLM95Q2fsoscaAoCJMZTjZa02 /Hln58maGcjrm58WmI/h3TzouLO2Rj5wMvMrOCpE8h7E1vWHTVHw5/fduD2r0drPdjZZ HV8JwMiB/kkUdY2XRz3d9gpu6q8hisTClpXj6KpzWnw/b20r8FfTRgba+zROe0cSiIBq mMse5t6gpZpjShdPg/jiOEbMvey26Iq8sdzy0NgX/6A+voJsX7WPpGBL/KyfzP5NPzIt CqkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=JwqciZEjlBwZnH+zM1une81hQNGkqrEqPgQYcF6ioVs=; b=YFe5+JtzlEvm4W2bZOgeKvIAXFvQjUkg7nwSl+TWvt1oZAPZF81tLm8GxN1f4NDRNI 9ONXDUn8uShA++KpNT0CewMh8OHwuxPel7BjmVenEnvFawagarssoZFHKoMBVqkuOYgR 3FO1sSB0LR2v2PktO9qEZEkXLWb16tUNIIYnADWYJVHd/Y4sKtj0a65ZWKjJdV6fCCxf q9OdHFnZbLBNzjrG1IeKBFHj+pKGp2unbYmzecrXd6PsM4EStOORCMMgpQEOqAH5NMTk X+k5WetWdT8sEHX2eoqQ7cb8rMMMd2wc6dP1JU5mTN+PRru3Y3DUuRDsfcULPFJasFdU 4T3w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c5si1575492ile.129.2021.09.11.09.40.13; Sat, 11 Sep 2021 09:40:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231584AbhIKQkm (ORCPT + 99 others); Sat, 11 Sep 2021 12:40:42 -0400 Received: from m-r1.th.seeweb.it ([5.144.164.170]:45629 "EHLO m-r1.th.seeweb.it" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230281AbhIKQkf (ORCPT ); Sat, 11 Sep 2021 12:40:35 -0400 Received: from IcarusMOD.eternityproject.eu (unknown [2.237.20.237]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by m-r1.th.seeweb.it (Postfix) with ESMTPSA id 828391F511; Sat, 11 Sep 2021 18:39:21 +0200 (CEST) From: AngeloGioacchino Del Regno To: robdclark@gmail.com Cc: sean@poorly.run, airlied@linux.ie, daniel@ffwll.ch, dmitry.baryshkov@linaro.org, abhinavk@codeaurora.org, linux-arm-msm@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-kernel@vger.kernel.org, konrad.dybcio@somainline.org, marijn.suijten@somainline.org, martin.botka@somainline.org, ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, paul.bouchara@somainline.org, AngeloGioacchino Del Regno Subject: [PATCH v2 2/2] drm/msm/dpu: Fix timeout issues on command mode panels Date: Sat, 11 Sep 2021 18:39:19 +0200 Message-Id: <20210911163919.47173-2-angelogioacchino.delregno@somainline.org> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210911163919.47173-1-angelogioacchino.delregno@somainline.org> References: <20210911163919.47173-1-angelogioacchino.delregno@somainline.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In function dpu_encoder_phys_cmd_wait_for_commit_done we are always checking if the relative CTL is started by waiting for an interrupt to fire: it is fine to do that, but then sometimes we call this function while the CTL is up and has never been put down, but that interrupt gets raised only when the CTL gets a state change from 0 to 1 (disabled to enabled), so we're going to wait for something that will never happen on its own. Solving this while avoiding to restart the CTL is actually possible and can be done by just checking if it is already up and running when the wait_for_commit_done function is called: in this case, so, if the CTL was already running, we can say that the commit is done if the command transmission is complete (in other terms, if the interface has been flushed). Signed-off-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c index aa01698d6b25..aa5d3b3cef15 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder_phys_cmd.c @@ -682,6 +682,9 @@ static int dpu_encoder_phys_cmd_wait_for_commit_done( if (!dpu_encoder_phys_cmd_is_master(phys_enc)) return 0; + if (phys_enc->hw_ctl->ops.is_started(phys_enc->hw_ctl)) + return dpu_encoder_phys_cmd_wait_for_tx_complete(phys_enc); + return _dpu_encoder_phys_cmd_wait_for_ctl_start(phys_enc); } -- 2.32.0