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=-13.6 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, 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 885A9C43387 for ; Tue, 8 Jan 2019 19:27:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 590D0217D9 for ; Tue, 8 Jan 2019 19:27:38 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1546975658; bh=OGaIugmgZ3J/K8vadnwfwUTqckxLGgZ8rpLqOd726cI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=Gedr/rGeQLHgvdWVEr8RvW0fLOcqF5njvoB2D2ueeM9zdtB4LYHVnsx1vNWAvOuhW ioSKcs84Sj7NLNdcxPD6wAUdF54ooXs2IqnwZg6EhhLDhFrfJ6KZSetZYRrbXUVvCH ROcqMRxOv67n1X8Yif9wD5cA2bCJ6Z4xTg1tTdig= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729732AbfAHT1h (ORCPT ); Tue, 8 Jan 2019 14:27:37 -0500 Received: from mail.kernel.org ([198.145.29.99]:33794 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729711AbfAHT1c (ORCPT ); Tue, 8 Jan 2019 14:27:32 -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 5220A2173C; Tue, 8 Jan 2019 19:27:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1546975652; bh=OGaIugmgZ3J/K8vadnwfwUTqckxLGgZ8rpLqOd726cI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=p6+I9folW+7FobtM6bhGkirIq/QNS27dSbY8eZGZccPb202CJVCsLRqj0q3Jsjjr6 kpGcjij1tdiZ7lv0dEMbnf/wu7FPUYrt3J6bCsbKRHjGwH2S3hAFyjQ980BiiU6LSb bFMPE7Qeh/EEuyHV9KojNZ02RWq1d+e9yJg8pw1A= From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Nicholas Kazlauskas , Alex Deucher , Sasha Levin , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Subject: [PATCH AUTOSEL 4.20 034/117] drm/amdgpu: Correct get_crtc_scanoutpos behavior when vpos >= vtotal Date: Tue, 8 Jan 2019 14:25:02 -0500 Message-Id: <20190108192628.121270-34-sashal@kernel.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190108192628.121270-1-sashal@kernel.org> References: <20190108192628.121270-1-sashal@kernel.org> MIME-Version: 1.0 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: Nicholas Kazlauskas [ Upstream commit 520f08df45fbe300ed650da786a74093d658b7e1 ] When variable refresh rate is active the hardware counter can return a position >= vtotal. This results in a vpos being returned from amdgpu_display_get_crtc_scanoutpos that's a positive value. The positive value indicates to the caller that the display is currently in scanout when the display is actually still in vblank. This is because the vfront porch duration is unknown with variable refresh active and will end when either a page flip occurs or the timeout specified by the driver/display is reached. The behavior of the amdgpu_display_get_crtc_scanoutpos remains the same when the position is below vtotal. When the position is above vtotal the function will return a value that is effectively -vbl_end, the size of the vback porch. The only caller affected by this change is the DRM helper for calculating vblank timestamps. This change corrects behavior for calculating the page flip timestamp from being the previous timestamp to the calculation to the next timestamp when position >= vtotal. Signed-off-by: Nicholas Kazlauskas Reviewed-by: Harry Wentland Signed-off-by: Alex Deucher Signed-off-by: Sasha Levin --- drivers/gpu/drm/amd/amdgpu/amdgpu_display.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c index 686a26de50f9..9c940bbed608 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_display.c @@ -857,7 +857,12 @@ int amdgpu_display_get_crtc_scanoutpos(struct drm_device *dev, /* Inside "upper part" of vblank area? Apply corrective offset if so: */ if (in_vbl && (*vpos >= vbl_start)) { vtotal = mode->crtc_vtotal; - *vpos = *vpos - vtotal; + + /* With variable refresh rate displays the vpos can exceed + * the vtotal value. Clamp to 0 to return -vbl_end instead + * of guessing the remaining number of lines until scanout. + */ + *vpos = (*vpos < vtotal) ? (*vpos - vtotal) : 0; } /* Correct for shifted end of vbl at vbl_end. */ -- 2.19.1 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sasha Levin Subject: [PATCH AUTOSEL 4.20 034/117] drm/amdgpu: Correct get_crtc_scanoutpos behavior when vpos >= vtotal Date: Tue, 8 Jan 2019 14:25:02 -0500 Message-ID: <20190108192628.121270-34-sashal@kernel.org> References: <20190108192628.121270-1-sashal@kernel.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190108192628.121270-1-sashal-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, stable-u79uwXL29TY76Z2rM5mHXA@public.gmane.org Cc: Alex Deucher , Sasha Levin , dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, Nicholas Kazlauskas , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9sYXMua2F6bGF1c2thc0BhbWQuY29tPgoK WyBVcHN0cmVhbSBjb21taXQgNTIwZjA4ZGY0NWZiZTMwMGVkNjUwZGE3ODZhNzQwOTNkNjU4Yjdl MSBdCgpXaGVuIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSBpcyBhY3RpdmUgdGhlIGhhcmR3YXJlIGNv dW50ZXIgY2FuIHJldHVybgphIHBvc2l0aW9uID49IHZ0b3RhbC4gVGhpcyByZXN1bHRzIGluIGEg dnBvcyBiZWluZyByZXR1cm5lZCBmcm9tCmFtZGdwdV9kaXNwbGF5X2dldF9jcnRjX3NjYW5vdXRw b3MgdGhhdCdzIGEgcG9zaXRpdmUgdmFsdWUuIFRoZQpwb3NpdGl2ZSB2YWx1ZSBpbmRpY2F0ZXMg dG8gdGhlIGNhbGxlciB0aGF0IHRoZSBkaXNwbGF5IGlzCmN1cnJlbnRseSBpbiBzY2Fub3V0IHdo ZW4gdGhlIGRpc3BsYXkgaXMgYWN0dWFsbHkgc3RpbGwgaW4gdmJsYW5rLgoKVGhpcyBpcyBiZWNh dXNlIHRoZSB2ZnJvbnQgcG9yY2ggZHVyYXRpb24gaXMgdW5rbm93biB3aXRoIHZhcmlhYmxlCnJl ZnJlc2ggYWN0aXZlIGFuZCB3aWxsIGVuZCB3aGVuIGVpdGhlciBhIHBhZ2UgZmxpcCBvY2N1cnMg b3IgdGhlCnRpbWVvdXQgc3BlY2lmaWVkIGJ5IHRoZSBkcml2ZXIvZGlzcGxheSBpcyByZWFjaGVk LgoKVGhlIGJlaGF2aW9yIG9mIHRoZSBhbWRncHVfZGlzcGxheV9nZXRfY3J0Y19zY2Fub3V0cG9z IHJlbWFpbnMgdGhlCnNhbWUgd2hlbiB0aGUgcG9zaXRpb24gaXMgYmVsb3cgdnRvdGFsLiBXaGVu IHRoZSBwb3NpdGlvbiBpcyBhYm92ZQp2dG90YWwgdGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGEg dmFsdWUgdGhhdCBpcyBlZmZlY3RpdmVseSAtdmJsX2VuZCwKdGhlIHNpemUgb2YgdGhlIHZiYWNr IHBvcmNoLgoKVGhlIG9ubHkgY2FsbGVyIGFmZmVjdGVkIGJ5IHRoaXMgY2hhbmdlIGlzIHRoZSBE Uk0gaGVscGVyIGZvcgpjYWxjdWxhdGluZyB2YmxhbmsgdGltZXN0YW1wcy4gVGhpcyBjaGFuZ2Ug Y29ycmVjdHMgYmVoYXZpb3IgZm9yCmNhbGN1bGF0aW5nIHRoZSBwYWdlIGZsaXAgdGltZXN0YW1w IGZyb20gYmVpbmcgdGhlIHByZXZpb3VzIHRpbWVzdGFtcAp0byB0aGUgY2FsY3VsYXRpb24gdG8g dGhlIG5leHQgdGltZXN0YW1wIHdoZW4gcG9zaXRpb24gPj0gdnRvdGFsLgoKU2lnbmVkLW9mZi1i eTogTmljaG9sYXMgS2F6bGF1c2thcyA8bmljaG9sYXMua2F6bGF1c2thc0BhbWQuY29tPgpSZXZp ZXdlZC1ieTogSGFycnkgV2VudGxhbmQgPGhhcnJ5LndlbnRsYW5kQGFtZC5jb20+ClNpZ25lZC1v ZmYtYnk6IEFsZXggRGV1Y2hlciA8YWxleGFuZGVyLmRldWNoZXJAYW1kLmNvbT4KU2lnbmVkLW9m Zi1ieTogU2FzaGEgTGV2aW4gPHNhc2hhbEBrZXJuZWwub3JnPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kaXNwbGF5LmMgfCA3ICsrKysrKy0KIDEgZmlsZSBjaGFuZ2Vk LCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwppbmRleCA2ODZhMjZkZTUwZjkuLjljOTQwYmJlZDYwOCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2Rpc3BsYXkuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZGlzcGxheS5jCkBAIC04NTcs NyArODU3LDEyIEBAIGludCBhbWRncHVfZGlzcGxheV9nZXRfY3J0Y19zY2Fub3V0cG9zKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJLyogSW5zaWRlICJ1cHBlciBwYXJ0IiBvZiB2YmxhbmsgYXJl YT8gQXBwbHkgY29ycmVjdGl2ZSBvZmZzZXQgaWYgc286ICovCiAJaWYgKGluX3ZibCAmJiAoKnZw b3MgPj0gdmJsX3N0YXJ0KSkgewogCQl2dG90YWwgPSBtb2RlLT5jcnRjX3Z0b3RhbDsKLQkJKnZw b3MgPSAqdnBvcyAtIHZ0b3RhbDsKKworCQkvKiBXaXRoIHZhcmlhYmxlIHJlZnJlc2ggcmF0ZSBk aXNwbGF5cyB0aGUgdnBvcyBjYW4gZXhjZWVkCisJCSAqIHRoZSB2dG90YWwgdmFsdWUuIENsYW1w IHRvIDAgdG8gcmV0dXJuIC12YmxfZW5kIGluc3RlYWQKKwkJICogb2YgZ3Vlc3NpbmcgdGhlIHJl bWFpbmluZyBudW1iZXIgb2YgbGluZXMgdW50aWwgc2Nhbm91dC4KKwkJICovCisJCSp2cG9zID0g KCp2cG9zIDwgdnRvdGFsKSA/ICgqdnBvcyAtIHZ0b3RhbCkgOiAwOwogCX0KIAogCS8qIENvcnJl Y3QgZm9yIHNoaWZ0ZWQgZW5kIG9mIHZibCBhdCB2YmxfZW5kLiAqLwotLSAKMi4xOS4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwphbWQtZ2Z4IG1haWxp bmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK