From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 4.19 176/219] gpu: ipu-v3: pre: don't trigger update if buffer address doesn't change Date: Fri, 22 Nov 2019 00:48:28 -0500 Message-ID: <20191122054911.1750-169-sashal@kernel.org> References: <20191122054911.1750-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4869C6E16B for ; Fri, 22 Nov 2019 05:52:34 +0000 (UTC) In-Reply-To: <20191122054911.1750-1-sashal@kernel.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Sasha Levin , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9uaXguZGU+CgpbIFVwc3RyZWFtIGNv bW1pdCBlYjAyMDBhNDM1N2RhMTAwMDY0OTcxNjg5ZDNhMGU5ZTNjZjU3ZjMzIF0KCk9uIGEgTk9Q IGRvdWJsZSBidWZmZXIgdXBkYXRlIHdoZXJlIGN1cnJlbnQgYnVmZmVyIGFkZHJlc3MgaXMgdGhl IHNhbWUKYXMgdGhlIG5leHQgYnVmZmVyIGFkZHJlc3MsIHRoZSBTRFdfVVBEQVRFIGJpdCBjbGVh cnMgdG9vIGxhdGUuIEFzIHdlCmFyZSBub3cgdXNpbmcgdGhpcyBiaXQgdG8gZGV0ZXJtaW5lIHdo ZW4gaXQgaXMgc2FmZSB0byBzaWduYWwgZmxpcApjb21wbGV0aW9uIHRvIHVzZXJzcGFjZSB0aGlz IHdpbGwgZGVsYXkgY29tcGxldGlvbiBvZiBhdG9taWMgY29tbWl0cwp3aGVyZSBvbmUgcGxhbmUg ZG9lc24ndCBjaGFuZ2UgdGhlIGJ1ZmZlciBieSBhIHdob2xlIGZyYW1lIHBlcmlvZC4KCkZpeCB0 aGlzIGJ5IHJlbWVtYmVyaW5nIHRoZSBsYXN0IGJ1ZmZlciBhZGRyZXNzIGFuZCBqdXN0IHNraXAg dGhlCmRvdWJsZSBidWZmZXIgdXBkYXRlIGlmIGl0IHdvdWxkIG5vdCBjaGFuZ2UgdGhlIGJ1ZmZl ciBhZGRyZXNzLgoKU2lnbmVkLW9mZi1ieTogTHVjYXMgU3RhY2ggPGwuc3RhY2hAcGVuZ3V0cm9u aXguZGU+CltwLnphYmVsQHBlbmd1dHJvbml4LmRlOiBpbml0aWFsaXplIGxhc3RfYnVmYWRkciBp biBpcHVfcHJlX2NvbmZpZ3VyZV0KU2lnbmVkLW9mZi1ieTogUGhpbGlwcCBaYWJlbCA8cC56YWJl bEBwZW5ndXRyb25peC5kZT4KU2lnbmVkLW9mZi1ieTogU2FzaGEgTGV2aW4gPHNhc2hhbEBrZXJu ZWwub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2lwdS12My9pcHUtcHJlLmMgfCA2ICsrKysrKwogMSBm aWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2lw dS12My9pcHUtcHJlLmMgYi9kcml2ZXJzL2dwdS9pcHUtdjMvaXB1LXByZS5jCmluZGV4IDJmOGRi OWQ2MjU1MTQuLjRhMjhmM2ZiYjBhMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2lwdS12My9p cHUtcHJlLmMKKysrIGIvZHJpdmVycy9ncHUvaXB1LXYzL2lwdS1wcmUuYwpAQCAtMTA2LDYgKzEw Niw3IEBAIHN0cnVjdCBpcHVfcHJlIHsKIAl2b2lkCQkJKmJ1ZmZlcl92aXJ0OwogCWJvb2wJCQlp bl91c2U7CiAJdW5zaWduZWQgaW50CQlzYWZlX3dpbmRvd19lbmQ7CisJdW5zaWduZWQgaW50CQls YXN0X2J1ZmFkZHI7CiB9OwogCiBzdGF0aWMgREVGSU5FX01VVEVYKGlwdV9wcmVfbGlzdF9tdXRl eCk7CkBAIC0xODUsNiArMTg2LDcgQEAgdm9pZCBpcHVfcHJlX2NvbmZpZ3VyZShzdHJ1Y3QgaXB1 X3ByZSAqcHJlLCB1bnNpZ25lZCBpbnQgd2lkdGgsCiAKIAl3cml0ZWwoYnVmYWRkciwgcHJlLT5y ZWdzICsgSVBVX1BSRV9DVVJfQlVGKTsKIAl3cml0ZWwoYnVmYWRkciwgcHJlLT5yZWdzICsgSVBV X1BSRV9ORVhUX0JVRik7CisJcHJlLT5sYXN0X2J1ZmFkZHIgPSBidWZhZGRyOwogCiAJdmFsID0g SVBVX1BSRV9QUkVGX0VOR19DVFJMX0lOUFVUX1BJWEVMX0ZPUk1BVCgwKSB8CiAJICAgICAgSVBV X1BSRV9QUkVGX0VOR19DVFJMX0lOUFVUX0FDVElWRV9CUFAoYWN0aXZlX2JwcCkgfApAQCAtMjQy LDcgKzI0NCwxMSBAQCB2b2lkIGlwdV9wcmVfdXBkYXRlKHN0cnVjdCBpcHVfcHJlICpwcmUsIHVu c2lnbmVkIGludCBidWZhZGRyKQogCXVuc2lnbmVkIHNob3J0IGN1cnJlbnRfeWJsb2NrOwogCXUz MiB2YWw7CiAKKwlpZiAoYnVmYWRkciA9PSBwcmUtPmxhc3RfYnVmYWRkcikKKwkJcmV0dXJuOwor CiAJd3JpdGVsKGJ1ZmFkZHIsIHByZS0+cmVncyArIElQVV9QUkVfTkVYVF9CVUYpOworCXByZS0+ bGFzdF9idWZhZGRyID0gYnVmYWRkcjsKIAogCWRvIHsKIAkJaWYgKHRpbWVfYWZ0ZXIoamlmZmll cywgdGltZW91dCkpIHsKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vZHJpLWRldmVs From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81D78C432C0 for ; Fri, 22 Nov 2019 06:20:47 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 53F0620637 for ; Fri, 22 Nov 2019 06:20:47 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574403647; bh=DVaKPiUmHGKWMJgDHNMiWfSzaP1Ywwb9Top1BdaLCeo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=tMX4rJkKQnpUIY7bdxN/0TLz49hMGyxgtbWuu+mv/tAKbDEGg2dJTzbPTQYBj1B1L tRVhY7Y56cF1OG5yi6eqQRUE3/it+IeQhRsrcQcRpRrm6D3x2GhKB4k1kTyOvkwdp1 /JyFEyUfmpGUmj5AWxh+n+kbbLKYBWvbo/34/mQ0= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728952AbfKVGUp (ORCPT ); Fri, 22 Nov 2019 01:20:45 -0500 Received: from mail.kernel.org ([198.145.29.99]:58324 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728576AbfKVFwe (ORCPT ); Fri, 22 Nov 2019 00:52:34 -0500 Received: from sasha-vm.mshome.net (c-73-47-72-35.hsd1.nh.comcast.net [73.47.72.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 143672073B; Fri, 22 Nov 2019 05:52:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1574401953; bh=DVaKPiUmHGKWMJgDHNMiWfSzaP1Ywwb9Top1BdaLCeo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=fxuUXIo/dVhzdK+qgDJHdYtJXTqnHMjp2yum9t9gl3dcES2MmpIJBovzDmD9vmaUU dhpVrOlUtb12lNWrQ3AB5yf9gyHCMNHkapll/MegtW2QVQGI9JrDx7l48jsK3XDd88 IMuDBFTMbTz9N7rsWUlUrDf5IAFAEqdJdw6svvhI= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Lucas Stach , Philipp Zabel , Sasha Levin , dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 4.19 176/219] gpu: ipu-v3: pre: don't trigger update if buffer address doesn't change Date: Fri, 22 Nov 2019 00:48:28 -0500 Message-Id: <20191122054911.1750-169-sashal@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20191122054911.1750-1-sashal@kernel.org> References: <20191122054911.1750-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Lucas Stach [ Upstream commit eb0200a4357da100064971689d3a0e9e3cf57f33 ] On a NOP double buffer update where current buffer address is the same as the next buffer address, the SDW_UPDATE bit clears too late. As we are now using this bit to determine when it is safe to signal flip completion to userspace this will delay completion of atomic commits where one plane doesn't change the buffer by a whole frame period. Fix this by remembering the last buffer address and just skip the double buffer update if it would not change the buffer address. Signed-off-by: Lucas Stach [p.zabel@pengutronix.de: initialize last_bufaddr in ipu_pre_configure] Signed-off-by: Philipp Zabel Signed-off-by: Sasha Levin --- drivers/gpu/ipu-v3/ipu-pre.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/gpu/ipu-v3/ipu-pre.c b/drivers/gpu/ipu-v3/ipu-pre.c index 2f8db9d625514..4a28f3fbb0a28 100644 --- a/drivers/gpu/ipu-v3/ipu-pre.c +++ b/drivers/gpu/ipu-v3/ipu-pre.c @@ -106,6 +106,7 @@ struct ipu_pre { void *buffer_virt; bool in_use; unsigned int safe_window_end; + unsigned int last_bufaddr; }; static DEFINE_MUTEX(ipu_pre_list_mutex); @@ -185,6 +186,7 @@ void ipu_pre_configure(struct ipu_pre *pre, unsigned int width, writel(bufaddr, pre->regs + IPU_PRE_CUR_BUF); writel(bufaddr, pre->regs + IPU_PRE_NEXT_BUF); + pre->last_bufaddr = bufaddr; val = IPU_PRE_PREF_ENG_CTRL_INPUT_PIXEL_FORMAT(0) | IPU_PRE_PREF_ENG_CTRL_INPUT_ACTIVE_BPP(active_bpp) | @@ -242,7 +244,11 @@ void ipu_pre_update(struct ipu_pre *pre, unsigned int bufaddr) unsigned short current_yblock; u32 val; + if (bufaddr == pre->last_bufaddr) + return; + writel(bufaddr, pre->regs + IPU_PRE_NEXT_BUF); + pre->last_bufaddr = bufaddr; do { if (time_after(jiffies, timeout)) { -- 2.20.1