From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f51.google.com (mail-wm1-f51.google.com [209.85.128.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5455A382377 for ; Fri, 10 Jul 2026 19:08:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783710490; cv=none; b=h8d12bcIKkl+ef/PD3TS5yVNDHI61ZDP3pYxvwGFPo74EVbLNWQKbYTMv4VSgToZLRI/ILWSsbXwXqyygfeSYCvdHEY24kXlElzh9YWRuU2IXnwH6mZGYWd/KS/hhUlAAy4xnATGbMWWOvDUceh5jepkqci3EKxeIisMI/VQ1OQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783710490; c=relaxed/simple; bh=UUlX4WeYGyT31C8f6BdfzjIm1BGwhdDgrMMjVmWht1U=; h=From:To:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MRhJjaR8By4/Gotd43ojUA6i/tbrPbo5VN3kjQ6kWpTNTy/7K+OyWNqUHvTwraT3Lc34ut7BNWmyMzkBMq9NvEsPTkdguzhWZn3gW6wbifq9coZ3Po+Yji13YhHMUFvFN3jTrE2mmGvf3ipt6VQPuEVSiiPt0fWx/0rPTmoATc4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=qzViejli; arc=none smtp.client-ip=209.85.128.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="qzViejli" Received: by mail-wm1-f51.google.com with SMTP id 5b1f17b1804b1-493bc8fda98so8037965e9.0 for ; Fri, 10 Jul 2026 12:08:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783710486; x=1784315286; darn=vger.kernel.org; h=content-transfer-encoding:reply-to:content-type:mime-version :references:in-reply-to:message-id:date:subject:to:from:from:to:cc :subject:date:message-id:reply-to:content-type; bh=zbrYcqmMOcj7F4MQKjHREDeErg/FeYwN50JFqd0IkSY=; b=qzViejlisdb+QGudqnx23qmgv7di9ffptaaIR9u2E5KZy/sl90aQQ6EUMKaBaRx3a5 7r8I/j2Qvjd2yDtKw6uAU0AKb45auGHvXWhNJKIx6DocAof8FuOPVILZDs8k3pRkj/8t dLcEgaUQrF5hXQ17bVJkVmvC0gUqXORcUl5sF+GYvaeWEI+tMX66iP1NOSXgBVbyTzAA AiSyviJoEtaPSahEZauX15htLFVPJAt7zdtEfA19yta5kmFWS2tYZWxE4JrBKXN9jeYP gyUeqjEry1jURqr8MnA7AF6w3nA3FvuzZ2SnHAm1rnNnb+1jecM3qrWL/NoTB2mkYzdM 7ekw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783710486; x=1784315286; h=content-transfer-encoding:reply-to:content-type:mime-version :references:in-reply-to:message-id:date:subject:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=zbrYcqmMOcj7F4MQKjHREDeErg/FeYwN50JFqd0IkSY=; b=Oki7J+vDc4TLRndPscfUpm/5h52fYESGEj+s5QfIlPb7XbYzEgj4Y5RNPzgVfheRfw SNXW6zThvjXl97oFUX/TICJZjaIPT95MlWbnKs7fb3N+WZKfHtVInmosHgMzLjlsAwTJ 7smD9KKtxDMN4mRYs0bcQ8hYseKgHF86ZZof4wN9akOiNrAxOHvEsfpR74QDj6Dm4TpC fjx8hV8z4SXXe5j3MsdBy+SrKGokMYjCWVaifDqHrc+xwueOSFppxmgqoYtlJQvlPkox CiyjokF92kKZr2kJ/otoJxBcrJzbO4kGvzi4ynqsLd55q4SOTShCBe+3s0toG1/vI0lX 75Dw== X-Forwarded-Encrypted: i=1; AHgh+RqxfNMWwKqkCGxSeKltGHQF7/t8dRDPvZy0MNNDflinR4ESpg0IbKgOkNsjc9nymJ5PWuIkTmigTl6pCos=@vger.kernel.org X-Gm-Message-State: AOJu0Yw9wv5NkWrXv6WuFc9xeFOf83uIMNe5NP0izQBCSDrFpODNMjAE iCF6ox/WEkMJnVOzc1uMLAMnt4d4MzFzCjwWiYqM7JatumglEzSTx67b X-Gm-Gg: AfdE7cmOVaQptE/5ukzqehxlYg7H5Ev6LN5kpfLqQlv/hqE1gnCpzeGBgaBlgWXo65o EA04tsA+E2hVROn/vzlBmydWItCx734z7x3EOjjT98jwVWaGwPBTLbOJl7XCsms4DIUAAzOKSHT aUBqf7MtNnQ6kNG5l/ywyQ4sbp6h14en7aZWz3jRPknHiBoH0SgSFFbvOfX7HL2qY2EUiAtxlwE B7WMdzZUTMWzhl2jiVlP2/qsYqKkxsxnu4pAvb6PUpuUCPe3JqzId6oGMGEhqMke5sH6FJtRJ1w AEDMqUfplrs7nrJ1zPsGwHXnh9aVDfizYPayS3exN9rp8C74TBLO7F1vBmaAPhorgN35lngt6KZ 9Vsq9IeoDWx/aNbbhSUgW3geM9aUsXG5hNEJHv0NQPY06QjkHOB9yrffacsIyyq0nF7b2DlL1+N VkGFUlokbX3F99MlyS9IJfDFXMZymb6tSzt2hH X-Received: by 2002:a05:600c:4ece:b0:493:a613:56b2 with SMTP id 5b1f17b1804b1-493f87d8573mr1160215e9.8.1783710485433; Fri, 10 Jul 2026 12:08:05 -0700 (PDT) Received: from able.fritz.box ([2a00:e180:154f:ec00:aa08:de24:db33:4496]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-493f567eadfsm55000755e9.6.2026.07.10.12.08.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 10 Jul 2026 12:08:05 -0700 (PDT) From: "=?UTF-8?q?Christian=20K=C3=B6nig?=" X-Google-Original-From: =?UTF-8?q?Christian=20K=C3=B6nig?= To: thomas.hellstrom@linux.intel.com, dakr@kernel.org, ecourtney@nvidia.com, simona@ffwll.ch, matthew.brost@intel.com, nat@pixelcluster.dev, airlied@gmail.com, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-gfx@lists.freedesktop.org, intel-xe@lists.freedesktop.org, amd-gfx@lists.freedesktop.org Subject: [PATCH 11/12] drm/ttm: support using drm_exec during eviction v4 Date: Fri, 10 Jul 2026 20:52:51 +0200 Message-ID: <20260710190752.2355-12-christian.koenig@amd.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260710190752.2355-1-christian.koenig@amd.com> References: <20260710190752.2355-1-christian.koenig@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Reply-To: christian.koenig@amd.com Content-Transfer-Encoding: 8bit Allow specifying a drm_exec object in TTMs operation context which is used to lock objects during eviction. This allows to handle deadlocks much more gracefully and with that avoid returning -ENOMEM on heavily contended domains. v2: rebased on top of Thomas work v3: rebased again v4: adjust to dma_resv changes Signed-off-by: Christian König --- drivers/gpu/drm/ttm/ttm_bo_util.c | 12 ++++++++---- include/drm/ttm/ttm_bo.h | 5 +++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo_util.c b/drivers/gpu/drm/ttm/ttm_bo_util.c index 1bdd69643c313..570640ae79d84 100644 --- a/drivers/gpu/drm/ttm/ttm_bo_util.c +++ b/drivers/gpu/drm/ttm/ttm_bo_util.c @@ -38,6 +38,7 @@ #include #include +#include struct ttm_transfer_obj { struct ttm_buffer_object base; @@ -839,7 +840,9 @@ static int ttm_lru_walk_ticketlock(struct ttm_bo_lru_cursor *curs, struct ttm_lru_walk_arg *arg = curs->arg; int ret; - if (arg->ctx->interruptible) + if (arg->ctx->exec) + ret = drm_exec_lock_resv(arg->ctx->exec, resv); + else if (arg->ctx->interruptible) ret = dma_resv_lock_interruptible(resv, arg->ticket); else ret = dma_resv_lock(resv, arg->ticket); @@ -853,7 +856,8 @@ static int ttm_lru_walk_ticketlock(struct ttm_bo_lru_cursor *curs, * trylocking for this walk. */ arg->ticket = NULL; - } else if (ret == -EDEADLK) { + + } else if (!arg->ctx->exec && ret == -EDEADLK) { /* Caller needs to exit the ww transaction. */ ret = -ENOSPC; } @@ -993,8 +997,8 @@ __ttm_bo_lru_cursor_iter(struct ttm_bo_lru_cursor *curs, bool first) if (!ttm_lru_walk_trylock(curs, res->bo->base.resv)) { struct dma_resv *resv; - if (!arg->ticket || arg->ctx->no_wait_gpu || - arg->trylock_only) { + if ((!arg->ticket || arg->ctx->no_wait_gpu || + arg->trylock_only) && !arg->ctx->exec) { spin_unlock(lru_lock); continue; } diff --git a/include/drm/ttm/ttm_bo.h b/include/drm/ttm/ttm_bo.h index e1221e3be7bda..0ffa84a5caa65 100644 --- a/include/drm/ttm/ttm_bo.h +++ b/include/drm/ttm/ttm_bo.h @@ -186,6 +186,11 @@ struct ttm_operation_ctx { * @bytes_moved: Statistics on how many bytes have been moved. */ uint64_t bytes_moved; + /* + * @exec: optional drm_exec object to use for locking and contention + * handling + */ + struct drm_exec *exec; }; struct ttm_lru_walk; -- 2.43.0