From patchwork Wed Nov 9 19:09:35 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Janusz Krzysztofik X-Patchwork-Id: 17767 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp513915wru; Wed, 9 Nov 2022 11:11:54 -0800 (PST) X-Google-Smtp-Source: AMsMyM5m6oN173kd2A8VSucczQwfaTwgRVhFY9g15i+y4g0IE1tCxHj3v7yuEmvIS09byv9q/mBf X-Received: by 2002:a17:907:a808:b0:7ad:caf4:9e92 with SMTP id vo8-20020a170907a80800b007adcaf49e92mr1557749ejc.510.1668021114386; Wed, 09 Nov 2022 11:11:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668021114; cv=none; d=google.com; s=arc-20160816; b=XvNRkmW4nLR4WpXhFQl8lyvMaIe5FcQRxf44XIkgA/WmIQLf358Ygxu3XF6iZ4pZzO ZXhZxw964Kjcx66Gl1bCQySKOCOJ3h36hjsuQZIoGdx1yU+/kC24KNfcQOsiEhZBBahY iF0sBUvvF7AjnLmti5bB3YJ/AbpPasV4xZVwHul0O2M60O13IFW4akg5BWZ2g7NtHxtx SC6UuvNY6/7pXTOQcc07JSIGJLkI8Zbv++CqKimxNqGZS2xzpYhYzRlEuVH8jAbCHNQ6 tXswKyZNiIEM7N9VeRsRXQCuOU4BZbAI5MIWArrCvrk/XfX3jdjK1e5fo5a6yceq4pqw DX1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=RNfDq9r/I5/CejdahrCZIvUvcV+/QqlRpV7No6EP2So=; b=Ab7dCu5/KOuH1m36VSBJP4ExGCjRrWWkhw3rKn6bglvsWF0Cl1+IWvhNWtTwaDwl7r Bek0t+a/1CiWRaD1SWZDc/++Zt5rlFQu8PIZaAPCjLnRSQzvu8IBjfnXQQ7s6OcuYVkx 9E5/K6RLl/Puz4Bv8weU2GnIhAGWDhH+VbhprdN34L1FwRRCb0MkUFgg/WCCWeT9ImFm HHtO1MGIh2SkyRlFbFOdFzLn/j99GyTkW1yAWzMdUrPzNdWLoQUsM3xcwYb9UHYGyQ5l PR6yTM9MQdgAG98f/fUxfl9mqBg4t1hLGXEpUXmTpeJjkfkZTtBnzifqfoe+AewUVKns wCSg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="lQXr/GQG"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id gn1-20020a1709070d0100b00791a41d1b39si16324061ejc.656.2022.11.09.11.11.29; Wed, 09 Nov 2022 11:11:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b="lQXr/GQG"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231272AbiKITKb (ORCPT + 99 others); Wed, 9 Nov 2022 14:10:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52172 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229872AbiKITK3 (ORCPT ); Wed, 9 Nov 2022 14:10:29 -0500 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id AF22E272C for ; Wed, 9 Nov 2022 11:10:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668021028; x=1699557028; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=DsqDFyDE3Xf+Eud5zTFYaL4RaK2z0k0BfhahtubW9bI=; b=lQXr/GQG25ERBKZ2yqqrNKLVWY/vkbNNENKNoMB5vdzBGJ9bPKNUXVlk pF3eCi8X7NT0TMr15gHgeOGDmOH1So4aSso2A4Fx8tcnrutfpJK4It5IS hCI2UNUAbMcQU4uHlXK2FHHGZf1Othrk9cY4oXo3pP7xkghbY+GCvKtDm 5Uelki0ID7mYgab1aW40bssQlnwARXFmTV6Y3RWNoItSGIWIIBCe8+zJ/ l3JtX04AUX1J13uSdujIVQ7V3UNN+SqcprVDdo6dZ8JN9EJvGGRQGlrR2 NPm9nedTuf4ohMXGZvWJ/gZ0toxVzh0VIdplhEdc3l709XBkV0zGCBk7d w==; X-IronPort-AV: E=McAfee;i="6500,9779,10526"; a="311072244" X-IronPort-AV: E=Sophos;i="5.96,151,1665471600"; d="scan'208";a="311072244" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2022 11:10:25 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10526"; a="668105815" X-IronPort-AV: E=Sophos;i="5.96,151,1665471600"; d="scan'208";a="668105815" Received: from jkrzyszt-mobl1.ger.corp.intel.com ([10.213.6.201]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2022 11:10:22 -0800 From: Janusz Krzysztofik To: Joonas Lahtinen Cc: Jani Nikula , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Daniel Vetter , Chris Wilson , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] drm/i915: Fix timeout handling when retiring requests Date: Wed, 9 Nov 2022 20:09:35 +0100 Message-Id: <20221109190937.64155-2-janusz.krzysztofik@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221109190937.64155-1-janusz.krzysztofik@linux.intel.com> References: <20221109190937.64155-1-janusz.krzysztofik@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-7.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_HI,SPF_HELO_NONE, SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749046908489893828?= X-GMAIL-MSGID: =?utf-8?q?1749046908489893828?= I believe that intel_gt_retire_requests_timeout() should return either -ETIME if all time designated by timeout argument has been consumed while waiting for fences being signaled, or remaining time if there are requests still not retired, or 0 otherwise. In the latter case, remaining time should be passed back via remaining_timeout argument. Remaining time is updated with return value of each consecutive call to dma_fence_wait_timeout(). If an error code is returned instead of remaining time, a few potentially unexpected side effects occur: - we no longer wait for consecutive timelines' last request fences being signaled before we try to retire requests from those timelines -- while expected in case of -ETIME, that's probably not intended in case of other errors that dma_fence_wait_timeout() can return, - the error code (a negative value) is passed back as remaining time and if no more requests happen to be left pending despite the error, a user may pass that value forward as a remaining timeout -- that can potentially trigger a WARN or BUG, - potentially unexpected error code is returned to user when a non-critical error that probably shouldn't stop the user from retrying occurs while active requests are still pending. Moreover, should dma_fence_wait_timeout() ever return 0 (which should mean timeout expiration) while we are processing requests and there are still pending requests when we are about to return, that 0 value is returned to user like if all requests were successfully retired. Ignore error codes from dma_fence_wait_timeout() other than -ETIME and don't overwrite remaining time with those error codes. Also, convert 0 value returned by dma_fence_wait_timeout() to -ETIME. Fixes: f33a8a51602c ("drm/i915: Merge wait_for_timelines with retire_request") Signed-off-by: Janusz Krzysztofik Cc: stable@vger.kernel.org # v5.5+ --- drivers/gpu/drm/i915/gt/intel_gt_requests.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.c b/drivers/gpu/drm/i915/gt/intel_gt_requests.c index edb881d756309..6c3b8ac3055c3 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_requests.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.c @@ -156,11 +156,22 @@ long intel_gt_retire_requests_timeout(struct intel_gt *gt, long timeout, fence = i915_active_fence_get(&tl->last_request); if (fence) { + signed long time_left; + mutex_unlock(&tl->mutex); - timeout = dma_fence_wait_timeout(fence, - true, - timeout); + time_left = dma_fence_wait_timeout(fence, + true, + timeout); + /* + * 0 or -ETIME: timeout expired + * other errors: ignore, assume no time consumed + */ + if (time_left == -ETIME || time_left == 0) + timeout = -ETIME; + else if (time_left > 0) + timeout = time_left; + dma_fence_put(fence); /* Retirement is best effort */ From patchwork Wed Nov 9 19:09:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Janusz Krzysztofik X-Patchwork-Id: 17769 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp514449wru; Wed, 9 Nov 2022 11:13:06 -0800 (PST) X-Google-Smtp-Source: AMsMyM7F0/vDQi8ftlOuFrVE7ANTxJJpECzwEX/Sd7Ap3ZniRD9nRiMahJQNpGOi8U0TvfTzMg/d X-Received: by 2002:a17:907:2bcd:b0:7ad:86f9:14c7 with SMTP id gv13-20020a1709072bcd00b007ad86f914c7mr1585521ejc.300.1668021186062; Wed, 09 Nov 2022 11:13:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668021186; cv=none; d=google.com; s=arc-20160816; b=I8d+21Xmi1kcno66k4qFQceA+ssB7W+/BcAA7RvICFamvjcP5/zpr6EBbNfig2m0Oh qkPZTeqQ95uCVM3T0zqJQKiGM1x7+UdbB5OnUViQtv43fzqm5TsyVFKcLGgWnawHRCuU usMfBjjxhWcdPBR2DX+tO/YDoodsnYPIUCpB6z8Ta33wJsbLDO0ayxK9ehN9xOuJ5wla BIqEVHbNpOWsuJ2zT5pVZqmrAOE+OcP83JOFBFWhBGIHtPl8ckosqopvsqDzJeew/nXd G8bKKcq9wukZ649R2OV0RFC+RyU9IZZeZUUu2xbecZ2GH5MTnvidjfXajkfWblDjb8nA I4vA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=otCxyHkeQiNGgHxH79E0q1fOib+sGVkSLOCGGEZ86FM=; b=pE1md5Pr4mmndAUzpkgYHjsRqSl6mLX0emP+YkmpIOPcjhGIjqFmyZA6WSK37LSYOw M+vc05QMYieQ5soEr5f54g1iSohPG16LPjGE9BvYDwusUm2ZbYVNvmeZkmc7fzM9hWAX gfpTtjKN+jfDp5L3yO2qPcAyigWUXVnim48zu91eGGWnc8yqQlV5GmF6BUxKd8QKR6HY QcTvOOlGvlJqIeYiX3lReW2mOYhLYjqHBlc5b4iJg2k6KjQvpQqfLoY460bdwrV0kHYn VRAvciDPd+kh2DTauiVKahKxpal9R89hXlZN52tXyAXTJpLacR2DukQZP/BNsN+vwFSN WOEw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BxWlv4WL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id qw36-20020a1709066a2400b0078ddd8656d9si16229977ejc.9.2022.11.09.11.12.40; Wed, 09 Nov 2022 11:13:06 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=BxWlv4WL; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229949AbiKITLD (ORCPT + 99 others); Wed, 9 Nov 2022 14:11:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52754 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229872AbiKITK6 (ORCPT ); Wed, 9 Nov 2022 14:10:58 -0500 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4AC0B272C for ; Wed, 9 Nov 2022 11:10:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668021057; x=1699557057; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=e6o2iw5GGxg52ODYXfhWmxxEkXpHYpZprWDIoibYlmQ=; b=BxWlv4WLTVeE3xsYNExGriUguSGZR1qbwR0ZLj5k4SStbCdQz13niJnI hEfyIlciDELI9CsfZolx/KSkzt1qmemryTgFpBD110qAX2LkFn1+lH+hW b+5eTZqbhd5cWMXkA36qit0z3FfNPpOpDXJXna3hDD7qAOMXGYEDQJBE9 Bia3n5lUN4EoLFWVm9NaQ1dEOkP4KweOGlJwg7AOTXH6hc5ZX16klzYQ/ ozqNk4Cg7Fk2xBZCd9Dkp0W1PnRR10vmcWt5vGKwRIhitEipsZ0Z5Aiu1 5CkCTwULdn2oxdcIfrlru+0Ur0Jg0FDLEUQOzj+BCcf8c413dqz/Un6mt A==; X-IronPort-AV: E=McAfee;i="6500,9779,10526"; a="312234713" X-IronPort-AV: E=Sophos;i="5.96,151,1665471600"; d="scan'208";a="312234713" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2022 11:10:53 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10526"; a="668105834" X-IronPort-AV: E=Sophos;i="5.96,151,1665471600"; d="scan'208";a="668105834" Received: from jkrzyszt-mobl1.ger.corp.intel.com ([10.213.6.201]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2022 11:10:25 -0800 From: Janusz Krzysztofik To: Joonas Lahtinen Cc: Jani Nikula , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Daniel Vetter , Chris Wilson , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 2/3] drm/i915: Fix unintended submission flush after retire times out Date: Wed, 9 Nov 2022 20:09:36 +0100 Message-Id: <20221109190937.64155-3-janusz.krzysztofik@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221109190937.64155-1-janusz.krzysztofik@linux.intel.com> References: <20221109190937.64155-1-janusz.krzysztofik@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749046983272441347?= X-GMAIL-MSGID: =?utf-8?q?1749046983272441347?= If wait on request DMA fence times out while we are retiring requests, -ETIME is stored as remaining time. Then, flush_submission() called thereafter proceeds with its work instead of returning immediately due to the value of timeout passed to it not equal 0. That's probably not what was intended. Fix it by replacing -ETIME value of the argument with 0. Fixes: 09137e945437 ("drm/i915/gem: Unpin idle contexts from kswapd reclaim") Signed-off-by: Janusz Krzysztofik --- drivers/gpu/drm/i915/gt/intel_gt_requests.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gt/intel_gt_requests.c b/drivers/gpu/drm/i915/gt/intel_gt_requests.c index 6c3b8ac3055c3..309d5937d6910 100644 --- a/drivers/gpu/drm/i915/gt/intel_gt_requests.c +++ b/drivers/gpu/drm/i915/gt/intel_gt_requests.c @@ -204,7 +204,7 @@ out_active: spin_lock(&timelines->lock); list_for_each_entry_safe(tl, tn, &free, link) __intel_timeline_free(&tl->kref); - if (flush_submission(gt, timeout)) /* Wait, there's more! */ + if (flush_submission(gt, timeout > 0)) /* Wait, there's more! */ active_count++; if (remaining_timeout) From patchwork Wed Nov 9 19:09:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Janusz Krzysztofik X-Patchwork-Id: 17768 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:6687:0:0:0:0:0 with SMTP id l7csp514267wru; Wed, 9 Nov 2022 11:12:41 -0800 (PST) X-Google-Smtp-Source: AMsMyM67OW/p97mMAsjfp96Iy9LZZxJQMN6z3sTMomIQKTMh92Ckj5n4ODJNT2aYsIPud/ZyVGTC X-Received: by 2002:a05:6402:847:b0:453:944a:ba8e with SMTP id b7-20020a056402084700b00453944aba8emr60178785edz.326.1668021161800; Wed, 09 Nov 2022 11:12:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1668021161; cv=none; d=google.com; s=arc-20160816; b=lXcSesE8h1/a7IUiF3WltD1u34gCi/JBGq3v27sGCZh9PqRk/6/d1jBPP/N/oCx3mI HXZbldtEIqaX7jaRqImfBaTmKblY4DJMTm4EaA/y9gkCN+1tRmf+5cotl3ncRY7ZGrz3 Uu5lp/Zpb4gzjrzHH6msFPVdZgOyX49F3x23WxfY1e7nIzoSS0TmLLpaLViGVM+Z1haB fZsUral4QixAknPV/5d7O3kGLfe48jGvBhHwCZL7gyPppvP+AG/NI+cdu8tRs85XtJIM XxNUDhuSVnE+e/0RFgFjgukJSL/ptdzxxkMdfZ93rs77CL2lAMeCAsp9wbgzB14cF9z7 YJDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=usHXXQzAxjv86jFgd79YpGBPc136eS58Mj78h556ISE=; b=IKUWtenfgy6FDQpTsCw4HIt5E2Sxp/OZGhp9qgEooe/1n4ttWZ21SJvETZPy8iE1nA LIsxIO6ZPtPFl2axfk9NjSocnxtJwCdkIURwJnAvYb6vxS30A8KRkzaVU/Xdyqt6EWcb rBD9guMER6MR8GwnkLp0xXf7FUrY+Qqn9bKVHgU2UgleOrfRpfEoFyNvlrK4okFst+1t O2fkvcGCiDAZEazKBl9WNdZIPkiP+7G37NPud6ujz/AxpBfG8PYS7EYAwj1VoqpSOlno qlOonGO+uVWzMhLw6qN+cCEX+DP2Y4Zw89QwLW+gCT8N9ZdxTX7JFeOuaH1uYVyUxneO Iv2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=JRI19WQr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s10-20020a170906960a00b00777581091d9si12200820ejx.634.2022.11.09.11.12.15; Wed, 09 Nov 2022 11:12:41 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=JRI19WQr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231283AbiKITK7 (ORCPT + 99 others); Wed, 9 Nov 2022 14:10:59 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52734 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230386AbiKITK5 (ORCPT ); Wed, 9 Nov 2022 14:10:57 -0500 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4736A22B0F for ; Wed, 9 Nov 2022 11:10:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1668021055; x=1699557055; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=6LAVoH57Z67SFgpBICBCC2rV+kEpQgeJZ63fSc0PrTQ=; b=JRI19WQrFJqMSWfbmc1zS75DfsR8UcWaUM4uhbvQMy7YTy4xXgS3hGag wJBCTTOKjD1GYPHsJP88xXA4uWD0tVN3f17NPrDJjmpvaguETY+lD9g8B CMOoJMDLt2IAUsycjlFdCcgy9WkxamQjxXCP6Fh3oZQaMIaTlH28ZDeM8 4btzWkgtHGtKX12sInVdvMCTFzRDTcsdKEmlrX/NLroaesLFZrhKEEBeP IW7IAUhl/0goHo/CkAyan/TZToLt8IZxzQgq8efEB40tmfwocpzVXAcMi dsKf3etMSVfRBG9ilMtUNmVfK9ZHaI3eT64Z2QOo0Ygo6fLAFwVX64PJ6 Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10526"; a="312234715" X-IronPort-AV: E=Sophos;i="5.96,151,1665471600"; d="scan'208";a="312234715" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2022 11:10:53 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10526"; a="668105979" X-IronPort-AV: E=Sophos;i="5.96,151,1665471600"; d="scan'208";a="668105979" Received: from jkrzyszt-mobl1.ger.corp.intel.com ([10.213.6.201]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Nov 2022 11:10:30 -0800 From: Janusz Krzysztofik To: Joonas Lahtinen Cc: Jani Nikula , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Daniel Vetter , Chris Wilson , intel-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 3/3] drm/i915: Fix 0 return value from DMA fence wait on i915 requests Date: Wed, 9 Nov 2022 20:09:37 +0100 Message-Id: <20221109190937.64155-4-janusz.krzysztofik@linux.intel.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20221109190937.64155-1-janusz.krzysztofik@linux.intel.com> References: <20221109190937.64155-1-janusz.krzysztofik@linux.intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1749046957946248242?= X-GMAIL-MSGID: =?utf-8?q?1749046957946248242?= According to the docs, dma_fence_wait_timeout() returns "0 if the wait timed out," ... "Other error values may be returned on custom implementations." While it is not quite clear if a custom implementation is allowed to return "other error" instead of 0, it is rather clear that 0 return value should always mean that the wait timed out before the fence got signaled. i915 implementation of dma_fence_ops.wait() used with request fences, which is a transparent wrapper around i915_request_wait_timeout(), returns -ETIME if the wait has timed out -- that may be considered as acceptable. However, it can return 0 in a rare case when the fence has been found signaled right after no more wait time was left, and that's not compatible with expectations of dma-fence and its users. Since other users of i915_request_wait_timeout() may interpret 0 return value as success, don't touch it, update the i915_fence_wait() wrapper instead. Return 1 instead of 0, but keep -ETIME in case of timeout since some i915 users of dma_fence_wait_timeout() may expect it. Signed-off-by: Janusz Krzysztofik --- drivers/gpu/drm/i915/i915_request.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/i915_request.c b/drivers/gpu/drm/i915/i915_request.c index f949a9495758a..451456ab1ddef 100644 --- a/drivers/gpu/drm/i915/i915_request.c +++ b/drivers/gpu/drm/i915/i915_request.c @@ -102,7 +102,7 @@ static signed long i915_fence_wait(struct dma_fence *fence, { return i915_request_wait_timeout(to_request(fence), interruptible | I915_WAIT_PRIORITY, - timeout); + timeout) ?: 1; } struct kmem_cache *i915_request_slab_cache(void)