From patchwork Thu Jul 17 09:01:17 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: YoungJun Cho X-Patchwork-Id: 4573951 Return-Path: X-Original-To: patchwork-dri-devel@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 0AD05C0514 for ; Thu, 17 Jul 2014 09:12:07 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 36A4C20109 for ; Thu, 17 Jul 2014 09:12:06 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id E7C3A20107 for ; Thu, 17 Jul 2014 09:12:04 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E91C96E2BC; Thu, 17 Jul 2014 02:12:03 -0700 (PDT) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mailout4.samsung.com (mailout4.samsung.com [203.254.224.34]) by gabe.freedesktop.org (Postfix) with ESMTP id 3AC276E2BC for ; Thu, 17 Jul 2014 02:12:02 -0700 (PDT) Received: from epcpsbgr2.samsung.com (u142.gpu120.samsung.co.kr [203.254.230.142]) by mailout4.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N8U008PNMEKLJ80@mailout4.samsung.com> for dri-devel@lists.freedesktop.org; Thu, 17 Jul 2014 18:01:32 +0900 (KST) Received: from epcpsbgm1.samsung.com ( [203.254.230.42]) by epcpsbgr2.samsung.com (EPCPMTA) with SMTP id 8A.EC.19452.CE097C35; Thu, 17 Jul 2014 18:01:32 +0900 (KST) X-AuditID: cbfee68e-b7fb96d000004bfc-30-53c790ec6dce Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm1.samsung.com (EPCPMTA) with SMTP id 17.8D.04943.CE097C35; Thu, 17 Jul 2014 18:01:32 +0900 (KST) Received: from localhost.localdomain ([10.252.75.90]) by mmp1.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTPA id <0N8U00LFFMEI4B80@mmp1.samsung.com>; Thu, 17 Jul 2014 18:01:32 +0900 (KST) From: YoungJun Cho To: airlied@linux.ie, dri-devel@lists.freedesktop.org Subject: [PATCH v6 02/14] drm/exynos: use wait_event_timeout() for safety usage Date: Thu, 17 Jul 2014 18:01:17 +0900 Message-id: <1405587689-1466-3-git-send-email-yj44.cho@samsung.com> X-Mailer: git-send-email 1.9.0 In-reply-to: <1405587689-1466-1-git-send-email-yj44.cho@samsung.com> References: <1405587689-1466-1-git-send-email-yj44.cho@samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrOIsWRmVeSWpSXmKPExsVy+t8zLd03E44HG/xea2Bxa905VovecyeZ LOYfAbKufH3PZtH/ZiGrxblXKxktJt2fwGLx4t5FFoveBVfZLM42vWG3mHF+H5PF0usXmSwm TF/LYtG69whQbPJLNoufu+axOAh4rJm3htHjcl8vk8fOWXfZPVYu/8LmsWlVJ5vH9m8PWD3u dx9n8ujbsorR4/MmuQDOKC6blNSczLLUIn27BK6M8917WQr28FY82dzG1MB4mLuLkYNDQsBE 4sPq4i5GTiBTTOLCvfVsXYxcHEICyxglVr8/zQqRMJGYuv0bK0RiEaPEtzXbmCCcViaJ9r4n LCBVbAKaEs8/7gDrEBEwleiYtJQFpIhZ4AmTxKnN+8GKhAX8JZbeWM8IYrMIqErcX7yGGcTm FXCWaOo7zw6xTk5iyu8F7CDncQq4SJxpyAEJCwGV9OxeA7ZYQuAnu8SG03eZIeYISHybfIgF 4h1ZiU0HmCHGSEocXHGDZQKj8AJGhlWMoqkFyQXFSelFRnrFibnFpXnpesn5uZsYIZHWt4Px 5gHrQ4zJQOMmMkuJJucDIzWvJN7Q2MzIwtTE1NjI3NKMNGElcd5FD5OChATSE0tSs1NTC1KL 4otKc1KLDzEycXBKNTB2fn2t4XFL+JzQ14XmS5u3CSqeVDeaJv1a+ZS1l9TWad3+Bb7zDsun zvq532NmZu2+djYfv0cTpx+ccDlMe+X87JKUz7/73t3sWSfcc1Bn5WfrTf2eRvdnn75WEnLm ffuSAma1H3vsHTfWt9VdbD3K0Pwn4LTmE2HN7C12/As2Xnqam3StzvmtEktxRqKhFnNRcSIA DnBBYMoCAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrOIsWRmVeSWpSXmKPExsVy+t9jAd03E44HG1y/qG1xa905VovecyeZ LOYfAbKufH3PZtH/ZiGrxblXKxktJt2fwGLx4t5FFoveBVfZLM42vWG3mHF+H5PF0usXmSwm TF/LYtG69whQbPJLNoufu+axOAh4rJm3htHjcl8vk8fOWXfZPVYu/8LmsWlVJ5vH9m8PWD3u dx9n8ujbsorR4/MmuQDOqAZGm4zUxJTUIoXUvOT8lMy8dFsl7+B453hTMwNDXUNLC3MlhbzE 3FRbJRefAF23zBygR5QUyhJzSoFCAYnFxUr6dpgmhIa46VrANEbo+oYEwfUYGaCBhHWMGee7 97IU7OGteLK5jamB8TB3FyMnh4SAicTU7d9YIWwxiQv31rN1MXJxCAksYpT4tmYbE4TTyiTR 3veEBaSKTUBT4vnHHWAdIgKmEh2TlrKAFDELPGGSOLV5P1iRsIC/xNIb6xlBbBYBVYn7i9cw g9i8As4STX3n2SHWyUlM+b0AyObg4BRwkTjTkAMSFgIq6dm9hmkCI+8CRoZVjKKpBckFxUnp uYZ6xYm5xaV56XrJ+bmbGMGR/ExqB+PKBotDjAIcjEo8vAmtx4KFWBPLiitzDzFKcDArifBu 6zoeLMSbklhZlVqUH19UmpNafIjRFOioicxSosn5wCSTVxJvaGxiZmRpZGZsYm5srCTOe6DV OlBIID2xJDU7NbUgtQimj4mDU6qBceW0/Cfn//YyVVSsvLn0ST3HvKanu0zLlplqXrrGtPkS k9Ce/S+WX1hhcuf7F/PCg4rJv2PU+PW57MSP8z2R+aDoxtnK0d09I9778vGX86vEdu/mD8xa LpMhOi1oXq74hHJpzok8IgfY/1S1vn/AZ1EcvpdHcbHEnOLZ7isWTvA6pyWmfq+yQomlOCPR UIu5qDgRAHhiAHL6AgAA DLP-Filter: Pass X-MTR: 20000000000000000@CPGS X-CFilter-Loop: Reflected Cc: mark.rutland@arm.com, devicetree@vger.kernel.org, linux-samsung-soc@vger.kernel.org, pawel.moll@arm.com, ijc+devicetree@hellion.org.uk, sw0312.kim@samsung.com, a.hajda@samsung.com, kyungmin.park@samsung.com, robh+dt@kernel.org, galak@codeaurora.org, kgene.kim@samsung.com X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP There could be the case that the page flip operation isn't finished correctly with some abnormal condition such as panel reset. So this patch replaces wait_event() with wait_event_timeout() to avoid waiting for page flip completion infinitely. And clears exynos_crtc->pending_flip in exynos_drm_crtc_page_flip() when exynos_drm_crtc_mode_set_commit() is failed. Signed-off-by: YoungJun Cho Acked-by: Inki Dae Acked-by: Kyungmin Park Reviewed-by: Andrzej Hajda --- drivers/gpu/drm/exynos/exynos_drm_crtc.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos_drm_crtc.c b/drivers/gpu/drm/exynos/exynos_drm_crtc.c index 95c9435..3bf091d 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_crtc.c +++ b/drivers/gpu/drm/exynos/exynos_drm_crtc.c @@ -69,8 +69,10 @@ static void exynos_drm_crtc_dpms(struct drm_crtc *crtc, int mode) if (mode > DRM_MODE_DPMS_ON) { /* wait for the completion of page flip. */ - wait_event(exynos_crtc->pending_flip_queue, - atomic_read(&exynos_crtc->pending_flip) == 0); + if (!wait_event_timeout(exynos_crtc->pending_flip_queue, + !atomic_read(&exynos_crtc->pending_flip), + HZ/20)) + atomic_set(&exynos_crtc->pending_flip, 0); drm_vblank_off(crtc->dev, exynos_crtc->pipe); } @@ -259,6 +261,7 @@ static int exynos_drm_crtc_page_flip(struct drm_crtc *crtc, spin_lock_irq(&dev->event_lock); drm_vblank_put(dev, exynos_crtc->pipe); list_del(&event->base.link); + atomic_set(&exynos_crtc->pending_flip, 0); spin_unlock_irq(&dev->event_lock); goto out;