Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp4770367pxv; Tue, 20 Jul 2021 11:09:38 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx4TIaNOpq5M7fMq7XEWTvVb6Pg232GTyVOseImCYz6W7r1DkrBp/+ZB0eVjqPtS/SKBqgk X-Received: by 2002:aa7:dc55:: with SMTP id g21mr33547172edu.129.1626804578376; Tue, 20 Jul 2021 11:09:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626804578; cv=none; d=google.com; s=arc-20160816; b=s6QMMdzOMr3v2GT1UxDsYtaPbTMF8ps6TyOjDxschjLH2kWz16piOb3KiNogjECkG1 xmKJQaxWtBnkHxayRObhaVp2zIZl33A9Lrlc9px0Y0YNcjSdmFY/LYdbSXwNHiskvi1m cusSoTPUEEI/aDfWFmf45+eAEYECdi26uKQAu+R9Ja8EheBKtQx4PGeMLbohCgvwdR9d lWyJ1eIEZSr7PsTFGJcYjVuP3GB37Ec+oVxdZLaQSVByT5oTsGtowyyz/HZGOYdCldEB vk3jjcgQ0QJebzf5p0Qq1yb1Ga2V5/Yv7a4DKxaaDJRD3AUCWXy0IlzpXtyC6N5aB2sQ KnSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-language:content-transfer-encoding :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:dkim-signature; bh=gWH1mqA4+vapOJIXzh/ykRjP5f+XZ2ZAp8SGuGSrQSI=; b=kivPsolK5W0IicMQiuclkBLl2QST4HmAQK7D8BdiU6a1kv2sjxVLsGhrs2MR2rlQsN BUUz2vO9e74HhBB7lIQUSmOw9+UXjQ/vnrdgXidjTY/p13QduqYxtTOgW0Z5Qv8+ymM5 0EVM2fyXzZoQWH5+pWp3+2Sc2T229zv0qnQJnuBUnxqQexhS9apNwvD+3+p7A11ellWZ PgfO+tAsMxu1LzQuqmWpt79MC9dGdZO9FMHb4oBQc93tC8GAb60X8RVYKFpcRygfrJqI GXr65e2w7SZk/EjZUIynCvhnK+E1b+48t1JbWVtXpAY7CT/PrSA/SEHeZ0POtjiWdjiQ n33A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=fVfUKBzr; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id o5si25082883edq.76.2021.07.20.11.09.14; Tue, 20 Jul 2021 11:09:38 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=fVfUKBzr; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231245AbhGTRXe (ORCPT + 99 others); Tue, 20 Jul 2021 13:23:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35152 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231579AbhGTRWq (ORCPT ); Tue, 20 Jul 2021 13:22:46 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5044DC061574; Tue, 20 Jul 2021 11:03:23 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id o30-20020a05600c511eb029022e0571d1a0so54403wms.5; Tue, 20 Jul 2021 11:03:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:cc:references:from:message-id:date:user-agent :mime-version:in-reply-to:content-transfer-encoding:content-language; bh=gWH1mqA4+vapOJIXzh/ykRjP5f+XZ2ZAp8SGuGSrQSI=; b=fVfUKBzrPupAmTZp1bqSebRkyIgFdKXx9/pqIavRXBzhAn0V5x0o60tiKSvXoozN90 mIAYHPwb9Q9IfKUH/hJj87newNyhE7k5Xp3q+LIg1IpN+he1gaZJ8fLWQcFBRdKtWVR4 yyPzodXkeISl3ZE1KrbhPisNXHTOtaiBkRuUpjdmMajXlwR/U20GYkg1a28q6JmFu4WM 5uO0dAF0c8Qv5fwGSzC0ouWb/N4HaYGXjyyp9HvfxNAeM7pCTVnURWy1xBDDi7vEbgTC GoG4rL79j6Z9PcJvqUiHNPIpvVOh08rzub/xzFnogc9BPtNkZR1APlVlgVoIn+yXtcud AdKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=gWH1mqA4+vapOJIXzh/ykRjP5f+XZ2ZAp8SGuGSrQSI=; b=s/k4GS7LWgAb0qi4itIaDH+YwrBXIu5RdPpO2Wv1Utc79pZWfZ1GFRjmsdh9ficSWQ g/mn+/Px1M7mDVHnl9Y15Fb1GHJPapBgZCSTH36KOVenvb7QtdU+iHcll19bmcuBDFMo Cz7PGbhGpk1LBgYamo3doDE4tz4y30v8mGd/l4AorUncfOuXXwy4XgQCqH8CqwA8u7Rj JtJhoOY+RQhQsH1Frgf38O4alRhIjfki/6rk62GhzX9hUNjxDN93T4V4Cutd33vy+M+w dUA4UUwuYejHN1DYGnVJQAkyqN7/kBOLwDaml/lJs+4eVR4kWPUiXhcrnxG/GyBC3D8/ XzRg== X-Gm-Message-State: AOAM532hcVEk6EFtjxS9HsaTWr18ji3EPpOaB0FyJIHWpL8hpjvC2HXf aj2eJ7YuqHh/MIt2ud2rkQEXUW0ikto= X-Received: by 2002:a05:600c:a04:: with SMTP id z4mr32311002wmp.103.1626804201842; Tue, 20 Jul 2021 11:03:21 -0700 (PDT) Received: from ?IPv6:2a02:908:1252:fb60:2b66:b2d1:7649:7bbf? ([2a02:908:1252:fb60:2b66:b2d1:7649:7bbf]) by smtp.gmail.com with ESMTPSA id v11sm23924357wrs.4.2021.07.20.11.03.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 20 Jul 2021 11:03:21 -0700 (PDT) Subject: Re: [Linaro-mm-sig] [PATCH] drm/msm: Add fence->wait() op To: Rob Clark , dri-devel@lists.freedesktop.org Cc: Rob Clark , "open list:DRM DRIVER FOR MSM ADRENO GPU" , David Airlie , "open list:DRM DRIVER FOR MSM ADRENO GPU" , open list , =?UTF-8?Q?Christian_K=c3=b6nig?= , "moderated list:DMA BUFFER SHARING FRAMEWORK" , Daniel Vetter , Sean Paul , "open list:DMA BUFFER SHARING FRAMEWORK" References: <20210720150716.1213775-1-robdclark@gmail.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: <60ffb6f3-e932-d9af-3b90-81adf0c15250@gmail.com> Date: Tue, 20 Jul 2021 20:03:20 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 In-Reply-To: <20210720150716.1213775-1-robdclark@gmail.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Rob, Am 20.07.21 um 17:07 schrieb Rob Clark: > From: Rob Clark > > Somehow we had neither ->wait() nor dma_fence_signal() calls, and no > one noticed. Oops. I'm not sure if that is a good idea. The dma_fence->wait() callback is pretty much deprecated and should not be used any more. What exactly do you need that for? Regards, Christian. > > Note that this removes the !timeout case, which has not been used in > a long time. > > Signed-off-by: Rob Clark > --- > drivers/gpu/drm/msm/msm_fence.c | 59 +++++++++++++++++++-------------- > 1 file changed, 34 insertions(+), 25 deletions(-) > > diff --git a/drivers/gpu/drm/msm/msm_fence.c b/drivers/gpu/drm/msm/msm_fence.c > index cd59a5918038..8ee96b90ded6 100644 > --- a/drivers/gpu/drm/msm/msm_fence.c > +++ b/drivers/gpu/drm/msm/msm_fence.c > @@ -38,11 +38,10 @@ static inline bool fence_completed(struct msm_fence_context *fctx, uint32_t fenc > return (int32_t)(fctx->completed_fence - fence) >= 0; > } > > -/* legacy path for WAIT_FENCE ioctl: */ > -int msm_wait_fence(struct msm_fence_context *fctx, uint32_t fence, > - ktime_t *timeout, bool interruptible) > +static signed long wait_fence(struct msm_fence_context *fctx, uint32_t fence, > + signed long remaining_jiffies, bool interruptible) > { > - int ret; > + signed long ret; > > if (fence > fctx->last_fence) { > DRM_ERROR_RATELIMITED("%s: waiting on invalid fence: %u (of %u)\n", > @@ -50,33 +49,34 @@ int msm_wait_fence(struct msm_fence_context *fctx, uint32_t fence, > return -EINVAL; > } > > - if (!timeout) { > - /* no-wait: */ > - ret = fence_completed(fctx, fence) ? 0 : -EBUSY; > + if (interruptible) { > + ret = wait_event_interruptible_timeout(fctx->event, > + fence_completed(fctx, fence), > + remaining_jiffies); > } else { > - unsigned long remaining_jiffies = timeout_to_jiffies(timeout); > - > - if (interruptible) > - ret = wait_event_interruptible_timeout(fctx->event, > - fence_completed(fctx, fence), > - remaining_jiffies); > - else > - ret = wait_event_timeout(fctx->event, > - fence_completed(fctx, fence), > - remaining_jiffies); > - > - if (ret == 0) { > - DBG("timeout waiting for fence: %u (completed: %u)", > - fence, fctx->completed_fence); > - ret = -ETIMEDOUT; > - } else if (ret != -ERESTARTSYS) { > - ret = 0; > - } > + ret = wait_event_timeout(fctx->event, > + fence_completed(fctx, fence), > + remaining_jiffies); > + } > + > + if (ret == 0) { > + DBG("timeout waiting for fence: %u (completed: %u)", > + fence, fctx->completed_fence); > + ret = -ETIMEDOUT; > + } else if (ret != -ERESTARTSYS) { > + ret = 0; > } > > return ret; > } > > +/* legacy path for WAIT_FENCE ioctl: */ > +int msm_wait_fence(struct msm_fence_context *fctx, uint32_t fence, > + ktime_t *timeout, bool interruptible) > +{ > + return wait_fence(fctx, fence, timeout_to_jiffies(timeout), interruptible); > +} > + > /* called from workqueue */ > void msm_update_fence(struct msm_fence_context *fctx, uint32_t fence) > { > @@ -114,10 +114,19 @@ static bool msm_fence_signaled(struct dma_fence *fence) > return fence_completed(f->fctx, f->base.seqno); > } > > +static signed long msm_fence_wait(struct dma_fence *fence, bool intr, > + signed long timeout) > +{ > + struct msm_fence *f = to_msm_fence(fence); > + > + return wait_fence(f->fctx, fence->seqno, timeout, intr); > +} > + > static const struct dma_fence_ops msm_fence_ops = { > .get_driver_name = msm_fence_get_driver_name, > .get_timeline_name = msm_fence_get_timeline_name, > .signaled = msm_fence_signaled, > + .wait = msm_fence_wait, > }; > > struct dma_fence *