Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp841240pxb; Fri, 22 Apr 2022 12:19:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwVMsq2F/FVnK5tx/3cid6U++M+CltpGMo6SZFQyRLpSTcre4OOHK0dF/ONO7VQaUMYKJK6 X-Received: by 2002:a62:170b:0:b0:50a:6901:b633 with SMTP id 11-20020a62170b000000b0050a6901b633mr6556433pfx.34.1650655177165; Fri, 22 Apr 2022 12:19:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650655177; cv=none; d=google.com; s=arc-20160816; b=I6F6hHKBS0zsQGLUFTzEFk/o7OUYwY5kGYAyt0PA/j5ZL5XZo3Au6B3wEnBqd8AaIt 2NiwMupXcAkbUHOTcW0RJUe+IHxtkJZBfL/iaxTlzVRL5Nq7DJvHGtHXsGMlIX41zLZC x4Oxda7dQOu5YXpuWVk8qwZotRnrRRVk3KKtQSVmo5p/35kIAOgEztk+7QcU5+VF09eD kmkCJXNpXZgYcElH0tFls5UcGbtW5zmP4565Ks1RDAT/iksSVIS8MTsd2CSRIviKjwfw 5ZDRoF8rRJtAeLfAJV4H1F0TmMA+S/eMribg3tot8Ey7cdKhRtWZjp6tkicpp8YxvNJc tuug== 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=M7+5SzepTp66aRzKgpt8c0uIxt8gTY6lDYBbe79ScqRrA31OSsyk0Gl3eHkrQEb+pV 40YrLpCH2EQ4+u6SQqLJejPAkfqZwjAL4BiUoldvUX1znGLrAi3YpQlMsqEYvkNJGy6a RUeuMSublnGFmTj4C+dyAliLUhDlE8d6pv5Z7JyD34E26CtjWl3Ce0WXKEYdQcD58EVU w+Z9J+N87pi9jxtSL5HhRGhgbpkQ8Vcv3ZDevHHh53lQyI75TNytfnBWQ3CNE1Zjfxp4 7tMIWx1Cs2d+I65Rc14akAZUlccX6YjpNpDwxYcRdSQJpZ2DL7IfkOjhwoEkUzTuRClu FEYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=KN4JKLAq; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 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. [23.128.96.19]) by mx.google.com with ESMTPS id p9-20020a17090a680900b001cb7af1047esi8379458pjj.100.2022.04.22.12.19.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Apr 2022 12:19:37 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=KN4JKLAq; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 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 526CA1569D1; Fri, 22 Apr 2022 11:34:10 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1391561AbiDUSw5 (ORCPT + 99 others); Thu, 21 Apr 2022 14:52:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37770 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1391547AbiDUSww (ORCPT ); Thu, 21 Apr 2022 14:52:52 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 71BAE65DD for ; Thu, 21 Apr 2022 11:50:01 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: bbeckett) with ESMTPSA id 9724B1F45CEF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1650566999; bh=W1xeNHFFi2xCQW+DSKNFK1fRoffazm4NeTwtpFvqJkc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KN4JKLAqjfZLYYk2FKedp35bUYHX5yAMkdt7AQda3YPru19XB+DxNCLNjxPZEWf23 beIL2XlS1OOBib5MGLm0CQv2mN0S5Ojw7Woxlno6EpyWw0Gnz3c9Y+mr9nApYlIwrU TbxBIEQuQ/CJXCptsjQFcq3ykN6Y1x+ufCnbQKlMRRjb+bN3IafbwB6voxo6DkcFqv Z6WJhf0JNssPthnCq/STTmO+ZvcrM/UrDzYcraNxNf5feacmMFRpBwWKGnK15CVrk1 /qHvVgdV+v3fPAIkmmgzCbbpHf4QvdK16kL2WWLAH3MbAf/HCQ3M149CK+vwDm4RLi DiV3uH2eUxrhw== 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 v4 3/6] drm/i915: ttm move/clear logic fix Date: Thu, 21 Apr 2022 18:49:38 +0000 Message-Id: <20220421184941.428639-4-bob.beckett@collabora.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220421184941.428639-1-bob.beckett@collabora.com> References: <20220421184941.428639-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,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