Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751437AbdIAHH2 (ORCPT ); Fri, 1 Sep 2017 03:07:28 -0400 Received: from mailout1.samsung.com ([203.254.224.24]:35753 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751237AbdIAHH1 (ORCPT ); Fri, 1 Sep 2017 03:07:27 -0400 X-AuditID: b6c32a36-f79196d0000051db-bb-59a9072d003a From: Hoegeun Kwon To: daniel.vetter@intel.com, jani.nikula@linux.intel.com, seanpaul@chromium.org, airlied@linux.ie Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Hoegeun Kwon Subject: [PATCH] drm/vblank: Fix delta_ns to an absolute value Date: Fri, 01 Sep 2017 16:07:16 +0900 Message-id: <1504249636-11681-1-git-send-email-hoegeun.kwon@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrPKsWRmVeSWpSXmKPExsWy7bCmvq4u+8pIg8YvAha9504yWSw/s47Z 4srX92wW75d3sVksv7ye0eLyrjlsFnc3nGV0YPeY3XCRxWPxnpdMHtu/PWD1mHcy0ON+93Em j74tqxg9Pm+SC2CPSrXJSE1MSS1SSM1Lzk/JzEu3VfIOjneONzUzMNQ1tLQwV1LIS8xNtVVy 8QnQdcvMAbpHSaEsMacUKBSQWFyspG9nU5RfWpKqkJFfXGKrFG1oaKRnaGCuZ2RkpGdiHGtl ZApUkpCasXbCe/aCF1wVTdOOMzUwvuXoYuTkkBAwkTj5+xsrhC0mceHeerYuRi4OIYEdjBIn F3eyQDjfGSXOn7nFDNPxvAWmajejxIYb3ewgCbCqR78kQWw2AV2Jrz3XmUBsEYFkiRv9q4Fq ODiYBXIkfm7mBQkLC9hJnP4/nwXEZhFQlXi15AcbiM0r4CHxd/8yJohdchInj01mBdklIfCX VeL39e3sEAkXieM3tkIVCUu8Or4FbL6EgLTEpaO2EOF6ics7TjJC9DYwSvRPnA3VayxxqqsR rJdZgE/i3dceVoheXomONiGIEg+JN1fvQv3rKNH+4DAbxIuxEk9utTNNYJRawMiwilEstaA4 Nz212LDASK84Mbe4NC9dLzk/dxMjOLFome1gXHTO5xCjAAejEg/vCq4VkUKsiWXFlbmHGCU4 mJVEeMPYVkYK8aYkVlalFuXHF5XmpBYfYjQFBsdEZinR5Hxg0ssriTc0sTQwMTMCpgRLQ0Ml cV7R9dcihATSE0tSs1NTC1KLYPqYODilGhiNmE4fXbr+qi+DY/FhbctlL7cwzDs38+mSKkeD cx3r2W7M629WlDr+6UNtSoBB3vJtlwxeM/CLK6zjNp08XbGYPevUQ7ajF3fNDvnXVLlHu/TM U+PUJ1xR3o4VAk5LSrQ4+T35997Z0i3vmnPhXffn4iN7nwY/mPVl6+Qc1Ty547rvtJtuf7mr xFKckWioxVxUnAgAqFh/VkIDAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrLJMWRmVeSWpSXmKPExsVy+t9jAV1d9pWRBl9/s1j0njvJZLH8zDpm iytf37NZvF/exWax/PJ6RovLu+awWdzdcJbRgd1jdsNFFo/Fe14yeWz/9oDVY97JQI/73ceZ PPq2rGL0+LxJLoA9issmJTUnsyy1SN8ugStj7YT37AUvuCqaph1namB8y9HFyMkhIWAi8bxl PVsXIxeHkMBORonHSxYwQjjfGSWWz7zJClLFJqAr8bXnOhOILSKQLPFmdgsjiM0skCMx8183 mC0sYCdx+v98FhCbRUBV4tWSH2wgNq+Ah8Tf/cuYILbJSZw8Npl1AiPXAkaGVYySqQXFuem5 xUYFhnmp5XrFibnFpXnpesn5uZsYgYGy7bBW3w7G+0viDzEKcDAq8fCu4FoRKcSaWFZcmXuI UYKDWUmEN4xtZaQQb0piZVVqUX58UWlOavEhRmkOFiVx3sy+GZFCAumJJanZqakFqUUwWSYO TqkGRt09xy+enp8sHcLwaU3THMZJHea6Nl5q2wSmy3KbWa7/VmR0fumk2tB9DiLp33f4Ms47 m39wuezFvPurJPsn5G+/NfPKhoodXJYVP0OqbD83dOwO7H6dtPaBrH36xtfKe3de2tKk7Sf5 sM7W76JULE9Y1GLBiUL7qvKvyT9+u3uLggn7g//iGUosxRmJhlrMRcWJAKKSHesQAgAA X-CMS-MailID: 20170901070725epcas1p288a5be80c3a3edb02433d24f5beed338 X-Msg-Generator: CA X-Sender-IP: 182.195.42.142 X-Local-Sender: =?UTF-8?B?6raM7ZqM6re8G1RpemVuIFBsYXRmb3JtIExhYihTL1fshLw=?= =?UTF-8?B?7YSwKRvsgrzshLHsoITsnpAbRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?SG9lZ2V1biBLd29uG1RpemVuIFBsYXRmb3JtIExhYi4bU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtFbmdpbmVlcg==?= X-Sender-Code: =?UTF-8?B?QzEwG1RFTEUbQzEwVjgxMTE=?= CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20170901070725epcas1p288a5be80c3a3edb02433d24f5beed338 X-RootMTR: 20170901070725epcas1p288a5be80c3a3edb02433d24f5beed338 References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1343 Lines: 39 If scanout started, we should reduce etime by delta_ns. But delta_ns is negative if scanout has not started. If delta_ns is negative, subtraction of delta_ns from etime increases etime. This is wrong, the etime should not be increased, so you have to make delta_ns an absolute value. Signed-off-by: Hoegeun Kwon --- Hello all, I think that the etime should not be increased. In cases where delta_ns is negative, if you get time again after an interrupt call, there is a problem that the time obtained from the interrupt becomes the future time instead of the past time. Please let me know if this patch is wrong. Best regards, Hoegeun drivers/gpu/drm/drm_vblank.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_vblank.c b/drivers/gpu/drm/drm_vblank.c index 70f2b95..a3e0176 100644 --- a/drivers/gpu/drm/drm_vblank.c +++ b/drivers/gpu/drm/drm_vblank.c @@ -684,7 +684,7 @@ bool drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev, /* Subtract time delta from raw timestamp to get final * vblank_time timestamp for end of vblank. */ - etime = ktime_sub_ns(etime, delta_ns); + etime = ktime_sub_ns(etime, abs(delta_ns)); *vblank_time = ktime_to_timeval(etime); DRM_DEBUG_VBL("crtc %u : v p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d rep]\n", -- 1.9.1