From patchwork Mon Jul 12 17:53:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Daniel Vetter X-Patchwork-Id: 12372243 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=-16.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,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 10A3FC07E99 for ; Mon, 12 Jul 2021 20:02:43 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id DD30E611CC for ; Mon, 12 Jul 2021 20:02:42 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DD30E611CC Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ffwll.ch Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BDF9389E36; Mon, 12 Jul 2021 20:02:19 +0000 (UTC) Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE54889DCF for ; Mon, 12 Jul 2021 20:02:15 +0000 (UTC) Received: by mail-wm1-x32c.google.com with SMTP id l18-20020a1ced120000b029014c1adff1edso7319wmh.4 for ; Mon, 12 Jul 2021 13:02:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ffwll.ch; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6oKtmGiKJUZfXT78MM22rL/3f/JGWmhDhHuPlcib2rg=; b=W9ueRzVyj9D3q7BukjJ6iHr9MhfVTz5QTmufVHprO/4ANnggd4/ITxFkWMdruXKdyf cpHe21lJ5lBLoodiNss5O7wwifznJblmTTJx25FW5J1Ud9sGcMannDevgJe35bTjtddU ibZ0mTs8srCFYvFp++xsKQTJ0mjZG5yYWEq9A= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6oKtmGiKJUZfXT78MM22rL/3f/JGWmhDhHuPlcib2rg=; b=aJElr0kcuZm5NVkrRTMfQtzvY8wzMF+TZlvXFm8VUqR/+hWd+sHQvnO9noO9sUwABn Ui0dhhYTwEdgZ4WgSm1QzTL7I8PoNlNuo9K/XPQBMrQXlneR5Df9VQXlkrcjsxtyf2iD tQnE+YLQ7WTiKnqQk0PJpzHsiIzLey4cyK46XXhVRcoDd8xFAbjOUcyjmhi6iQb2+QcN 5zPU8cV27p1Z6l6t3QaPjjjolMN3B6R8S8A5iWzlyEaiosyQJ7OUMHNvcnRJ310KviuC 0Hu6TnV6CMVddP2lcIL6Kdmi5yOP3nLHWEojqZCTwaJ0gTiRrFmWXw522iJ8bEhtlve+ mPoA== X-Gm-Message-State: AOAM5300LxKGe9Mr+HwnAXH/9wePe2DM1wv9JFKL9ivePdp768HLlsW3 spIXgWReRlub9SGG5Kml6tFMTID7o7p1kg== X-Google-Smtp-Source: ABdhPJwsgW3nmuV4ENvyxT/y/wfkOSh4a2sPmzA9GB/SANA51myrb56haOr+6vHgpdB7dSm2nXrsaA== X-Received: by 2002:a1c:730d:: with SMTP id d13mr16895377wmb.129.1626120134262; Mon, 12 Jul 2021 13:02:14 -0700 (PDT) Received: from phenom.ffwll.local ([2a02:168:57f4:0:efd0:b9e5:5ae6:c2fa]) by smtp.gmail.com with ESMTPSA id l14sm9858221wrs.22.2021.07.12.13.02.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Jul 2021 13:02:13 -0700 (PDT) From: Daniel Vetter To: DRI Development Subject: [PATCH v4 17/18] drm/i915: Don't break exclusive fence ordering Date: Mon, 12 Jul 2021 19:53:51 +0200 Message-Id: <20210712175352.802687-18-daniel.vetter@ffwll.ch> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20210712175352.802687-1-daniel.vetter@ffwll.ch> References: <20210712175352.802687-1-daniel.vetter@ffwll.ch> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?utf-8?q?Thomas_Hellstr=C3=B6m?= , Daniel Vetter , Intel Graphics Development , Jason Ekstrand , Daniel Vetter Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" There's only one exclusive slot, and we must not break the ordering. Adding a new exclusive fence drops all previous fences from the dma_resv. To avoid violating the signalling order we err on the side of over-synchronizing by waiting for the existing fences, even if userspace asked us to ignore them. A better fix would be to us a dma_fence_chain or _array like e.g. amdgpu now uses, but it probably makes sense to lift this into dma-resv.c code as a proper concept, so that drivers don't have to hack up their own solution each on their own. Hence go with the simple fix for now. Another option is the fence import ioctl from Jason: https://lore.kernel.org/dri-devel/20210610210925.642582-7-jason@jlekstrand.net/ v2: Improve commit message per Lucas' suggestion. Cc: Lucas Stach Signed-off-by: Daniel Vetter Cc: Maarten Lankhorst Cc: "Thomas Hellström" Cc: Jason Ekstrand --- drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c index b4a77eba8631..b3d675987493 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_execbuffer.c @@ -1767,6 +1767,7 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb) struct i915_vma *vma = ev->vma; unsigned int flags = ev->flags; struct drm_i915_gem_object *obj = vma->obj; + bool async, write; assert_vma_held(vma); @@ -1798,7 +1799,10 @@ static int eb_move_to_gpu(struct i915_execbuffer *eb) flags &= ~EXEC_OBJECT_ASYNC; } - if (err == 0 && !(flags & EXEC_OBJECT_ASYNC)) { + async = flags & EXEC_OBJECT_ASYNC; + write = flags & EXEC_OBJECT_WRITE; + + if (err == 0 && (!async || write)) { err = i915_request_await_object (eb->request, obj, flags & EXEC_OBJECT_WRITE); }