Received: by 2002:a05:6512:3d0e:0:0:0:0 with SMTP id d14csp55291lfv; Tue, 12 Apr 2022 17:05:02 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyf9Blg3fI16iCpHZGsEZGHf0Ch7pp0QkxkaCgTjB7ym8XRo8cjgCTAvq0Ai8wXUvSgh6aq X-Received: by 2002:a65:6a4c:0:b0:39c:f169:b54a with SMTP id o12-20020a656a4c000000b0039cf169b54amr21010908pgu.384.1649808301824; Tue, 12 Apr 2022 17:05:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649808301; cv=none; d=google.com; s=arc-20160816; b=fDGgH+lBK6KJmjqrIERDwxkxeDR3Hta1YAMH13knh5nJAUb48j3srggUL/7GwzjzbV bQprJTLyneDxZvD7AcHqLK5W2RapWNtoPFYPRAFmJUCFF2SANQEHU8BOd8+9qtGRtAW5 BEgfWENd+quPC+IYpBlGsDf9kuT9OZtZuQV3q/07fty5/e/CNrokaxn+kl+pp74dnCRa zXxTsHTspy04LoTSQVAG4qZ3SGtcb1Ys5NJkRDE4eJudq+8tft3JNl/BQ0rzFH4WAXIT Tenb0bzD2UJTNEuNGCihvZEivfAo/IkAum77wa05NBt5JGcwfazifFhdxOzPlL1Kd4D0 EZFQ== 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=fV73C9IeVMpmmzpN4IMB/lYK4oBrlwsB3wum+hg5z+l+YadJmKysfsS96slWhPlm2E QdvXDXU0SCHlstkdEXe1CpDdSNnVsr2/8OvGj7enuJeWBNxtvEUHz2lU8Ck+XO8vaSnO U9vMtbK+AkeIb65+740dXN7u3JiIM3yoZnW/M7R5VIEYsl6dDYh+J1gTgyX7gBf+DFwL IwIlO4mZqVxgqXQ69hNAWhGaDzmrggSXvcon5bpJ6PCLU1f3YXgKxP9FRUottBK7Ydat u7RP8/gJhQoreskHAkqSaeKLnBQBG4+4OFEX5BbYNftJEl2oOATyD1lMTDqd+0IcSAyf 7qKg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=hvgKnlpb; 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 e9-20020a170902ed8900b00156aa98a93bsi3228756plj.31.2022.04.12.17.05.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Apr 2022 17:05:01 -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=hvgKnlpb; 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 855D5133DA7; Tue, 12 Apr 2022 15:01:35 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241388AbiDLTlX (ORCPT + 99 others); Tue, 12 Apr 2022 15:41:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50298 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234485AbiDLTk4 (ORCPT ); Tue, 12 Apr 2022 15:40:56 -0400 Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9163A31909 for ; Tue, 12 Apr 2022 12:38:36 -0700 (PDT) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: bbeckett) with ESMTPSA id 255DA1F419B5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1649792315; bh=W1xeNHFFi2xCQW+DSKNFK1fRoffazm4NeTwtpFvqJkc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=hvgKnlpbwQOzdQ3G9ITcmL8i+aO/7+vYgYxGn6GeY0Bx6pv215z8J+G5PFK5sNotb qG92PNo8NGQr2BByXFE3UycfalHH1WfrDZBe/AAtREVqE2yKVs6VsiE9pT7js4wiWL KBicPx+l4gKaR4/OfxoLEykAlg83VtDxUBxb2qEpaDsCPIg/v8BpvYpsiwZnTGQHMl bT6wo3DvlnXKjmZddq5iNvCZP6BB8elA00CHPsWZHq9yhmJWk2+UC4GUtUntsUXhal b0zIlAfTXY6a8EuoOWe1KWNLi4mNI27t21dmiZENNBJ+VlM7yUcKfALeP62cOop33F 2TPH+NHFtrccQ== 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 v3 3/5] drm/i915: ttm move/clear logic fix Date: Tue, 12 Apr 2022 19:38:14 +0000 Message-Id: <20220412193817.2098308-4-bob.beckett@collabora.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20220412193817.2098308-1-bob.beckett@collabora.com> References: <20220412193817.2098308-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