Received: by 2002:a05:6512:3d0e:0:0:0:0 with SMTP id d14csp51003lfv; Tue, 12 Apr 2022 16:54:44 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw9MRQQ3l6oz0J8vEgrTdZ3eNR6WgqCfEgOrrMYrnzwOnj1SFmb4N+xGQDEg3Zx7uwyzL1n X-Received: by 2002:a65:6216:0:b0:39d:5e6c:7578 with SMTP id d22-20020a656216000000b0039d5e6c7578mr10000211pgv.114.1649807684704; Tue, 12 Apr 2022 16:54:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649807684; cv=none; d=google.com; s=arc-20160816; b=RZ2UpN13JsDrPPtpH2yhPTOXB/LuI/Nqoopp7P578hjnFapUxVfFmtdjKsmylhSkhx asG2mt4EbyZchWdgb5FnY9+WXU1BHFcPw+BxSOeJAHmtPBG8TJcfQs7pfBexunhVOD28 pbHpFQvt8q/+ECYoP3NQzqZGVdVgof9M8tmb48PIsuexloTIcVesUqXM195szYP64Blm E6uIDjHnongZjzqOBaEO64r6XFvrwv4GcjGmSzB7XiEWmhBfkxnYUCQtWD1lrKB3Z3y0 I1XKNtOaULKFkTT6DAXsplZnEOcpwCOxozMFnzWD6a2sTeqJYOdjN3XFnIogKO/71UIZ sYJA== 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=2v7g6QnvMK1ieufXdKa+0to8FtYOE9sQdPR3NZvl7fo=; b=ZyvCFISjWiKhtnt2OuESLdZorjvr3VoG/+jdWm1u2V1/fnJAc7WMQprWFL5mUen0Ex 7RbRD7q5aBft49ScEFX6OkR8Qr7o5pcKD6LN17SVhKLoY5xPXAIOdCzh4wJrGzZL0eve B62gIX+ekpGaBTikSfdsnGIXWcpMhG1S+NLMp38jIU3tFLM+O2V2EY/CeCFu5s7SG61e SDZb1ddqg2gYJrdFzkt7SqshPU3lvpf8YVWQpMtw8euojWQWn09dnsXyQFXNTjQac91A F/uci2oKSpsPqu0adATvrnLWmQMluDvFLzJupQPTA9odrooNXYytXj4LiantfMYorh2L QggA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=BFtT30iW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id s15-20020a056a00194f00b00505c2dd40d6si7465419pfk.228.2022.04.12.16.54.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 16:54:44 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=BFtT30iW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=collabora.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 859A313DB6D; Tue, 12 Apr 2022 14:49:40 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349550AbiDKT2R (ORCPT + 99 others); Mon, 11 Apr 2022 15:28:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1349610AbiDKT1Z (ORCPT ); Mon, 11 Apr 2022 15:27:25 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0D4C513FB8 for ; Mon, 11 Apr 2022 12:25:11 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: bbeckett) with ESMTPSA id 988FC1F43CCC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1649705109; bh=W1xeNHFFi2xCQW+DSKNFK1fRoffazm4NeTwtpFvqJkc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BFtT30iW5ymMNLq/TNKy5KNfzD9fzG1lMnaxtGE2bW5d4Nr0FDQ2nGI1OhQFwfJbv /x0lhwaH3NBICgOTh2zA3TsMg08rLth+EBMeVNgJ7oAdk/wmJLLWRvt/M1CEuBqoAR 2UoZbf91jGAZ9uqhEhEjTNsW/pNCyOQh9nKlFebY+4svlMD/HvLhAbLyk3zSNuyCwn vIc1LTpx6I0G/AkEgMSGXOOUYXMYZ8VBwo5NIfYn1K3V20aGgqXNMML1Yq0B7yVkZB QsyuaUaQFd9kXIL/0bGQ9tJ+XmTGDvrehIuMz7gPhf9oB2T+2UU2hn7ZIB0GVW2NVk FESl26IrBl69g== From: Robert Beckett To: dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Tvrtko Ursulin , David Airlie , Daniel Vetter Cc: Robert Beckett , Matthew Auld , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , linux-kernel@vger.kernel.org Subject: [PATCH 3/5] drm/i915: ttm move/clear logic fix Date: Mon, 11 Apr 2022 19:24:51 +0000 Message-Id: <20220411192453.1000147-4-bob.beckett@collabora.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220411192453.1000147-1-bob.beckett@collabora.com> References: <20220411192453.1000147-1-bob.beckett@collabora.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=no 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 ttm managed buffers start off with system resource definitions and ttm_tt tracking structures allocated (though unpopulated). currently this prevents clearing of buffers on first move to desired placements. The desired behaviour is to clear user allocated buffers and any kernel buffers that specifically requests it only. Make the logic match the desired behaviour. Signed-off-by: Robert Beckett --- drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c | 22 +++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c b/drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c index 9fe8132de3b2..9cf85f91edb5 100644 --- a/drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c +++ b/drivers/gpu/drm/i915/gem/i915_gem_ttm_move.c @@ -3,6 +3,7 @@ * Copyright © 2021 Intel Corporation */ +#include "drm/ttm/ttm_tt.h" #include #include "i915_deps.h" @@ -470,6 +471,25 @@ __i915_ttm_move(struct ttm_buffer_object *bo, return fence; } +static bool +allow_clear(struct drm_i915_gem_object *obj, struct ttm_tt *ttm, struct ttm_resource *dst_mem) +{ + /* never clear stolen */ + if (dst_mem->mem_type == I915_PL_STOLEN) + return false; + /* + * we want to clear user buffers and any kernel buffers + * that specifically request clearing. + */ + if (obj->flags & I915_BO_ALLOC_USER) + return true; + + if (ttm && ttm->page_flags & TTM_TT_FLAG_ZERO_ALLOC) + return true; + + return false; +} + /** * i915_ttm_move - The TTM move callback used by i915. * @bo: The buffer object. @@ -520,7 +540,7 @@ int i915_ttm_move(struct ttm_buffer_object *bo, bool evict, return PTR_ERR(dst_rsgt); clear = !i915_ttm_cpu_maps_iomem(bo->resource) && (!ttm || !ttm_tt_is_populated(ttm)); - if (!(clear && ttm && !(ttm->page_flags & TTM_TT_FLAG_ZERO_ALLOC))) { + if (!clear || allow_clear(obj, ttm, dst_mem)) { struct i915_deps deps; i915_deps_init(&deps, GFP_KERNEL | __GFP_NORETRY | __GFP_NOWARN); -- 2.25.1