Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Matthew Brost <matthew.brost@intel.com>
To: intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Cc: apopple@nvidia.com, airlied@gmail.com, christian.koenig@amd.com,
	thomas.hellstrom@linux.intel.com, simona.vetter@ffwll.ch,
	felix.kuehling@amd.com, dakr@kernel.org
Subject: [PATCH v3 01/30] drm/xe: Retry BO allocation
Date: Tue, 17 Dec 2024 15:33:19 -0800	[thread overview]
Message-ID: <20241217233348.3519726-2-matthew.brost@intel.com> (raw)
In-Reply-To: <20241217233348.3519726-1-matthew.brost@intel.com>

TTM doesn't support fair eviction via WW locking, this mitigated in by
using retry loops in exec and preempt rebind worker. Extend this retry
loop to BO allocation. Once TTM supports fair eviction this patch can be
reverted.

Signed-off-by: Matthew Brost <matthew.brost@intel.com>
---
 drivers/gpu/drm/xe/xe_bo.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
index e6c896ad5602..a670a0444e03 100644
--- a/drivers/gpu/drm/xe/xe_bo.c
+++ b/drivers/gpu/drm/xe/xe_bo.c
@@ -2142,6 +2142,7 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 	struct xe_file *xef = to_xe_file(file);
 	struct drm_xe_gem_create *args = data;
 	struct xe_vm *vm = NULL;
+	ktime_t end = 0;
 	struct xe_bo *bo;
 	unsigned int bo_flags;
 	u32 handle;
@@ -2214,11 +2215,14 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 		vm = xe_vm_lookup(xef, args->vm_id);
 		if (XE_IOCTL_DBG(xe, !vm))
 			return -ENOENT;
+	}
+
+retry:
+	if (vm) {
 		err = xe_vm_lock(vm, true);
 		if (err)
 			goto out_vm;
 	}
-
 	bo = xe_bo_create_user(xe, NULL, vm, args->size, args->cpu_caching,
 			       bo_flags);
 
@@ -2227,6 +2231,8 @@ int xe_gem_create_ioctl(struct drm_device *dev, void *data,
 
 	if (IS_ERR(bo)) {
 		err = PTR_ERR(bo);
+		if (xe_vm_validate_should_retry(NULL, err, &end))
+			goto retry;
 		goto out_vm;
 	}
 
-- 
2.34.1


  reply	other threads:[~2024-12-17 23:33 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-17 23:33 [PATCH v3 00/30] Introduce GPU SVM and Xe SVM implementation Matthew Brost
2024-12-17 23:33 ` Matthew Brost [this message]
2025-01-07 12:28   ` [PATCH v3 01/30] drm/xe: Retry BO allocation Gwan-gyeong Mun
2025-01-07 21:56   ` Summers, Stuart
2024-12-17 23:33 ` [PATCH v3 02/30] mm/migrate: Add migrate_device_pfns Matthew Brost
2024-12-17 23:33 ` [PATCH v3 03/30] mm/migrate: Trylock device page in do_swap_page Matthew Brost
2025-01-28 17:26   ` Thomas Hellström
2025-01-28 19:46     ` Matthew Brost
2024-12-17 23:33 ` [PATCH v3 04/30] drm/pagemap: Add DRM pagemap Matthew Brost
2025-01-24  7:19   ` Gwan-gyeong Mun
2025-01-29 17:42     ` Matthew Brost
2024-12-17 23:33 ` [PATCH v3 05/30] drm/gpusvm: Add support for GPU Shared Virtual Memory Matthew Brost
2024-12-20 19:04   ` Matthew Brost
2025-01-08  1:30   ` Matthew Brost
2025-01-10 21:17   ` Matthew Brost
2025-01-17  8:26   ` Gwan-gyeong Mun
2025-01-17 18:53     ` Matthew Brost
2025-01-24  7:17   ` Gwan-gyeong Mun
2024-12-17 23:33 ` [PATCH v3 06/30] drm/xe: Select DRM_GPUSVM Kconfig Matthew Brost
2024-12-17 23:33 ` [PATCH v3 07/30] drm/xe/uapi: Add DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR flag Matthew Brost
2024-12-17 23:33 ` [PATCH v3 08/30] drm/xe: Add SVM init / close / fini to faulting VMs Matthew Brost
2024-12-17 23:33 ` [PATCH v3 09/30] drm/xe: Add dma_addr res cursor Matthew Brost
2024-12-17 23:33 ` [PATCH v3 10/30] drm/xe: Nuke VM's mapping upon close Matthew Brost
2024-12-17 23:33 ` [PATCH v3 11/30] drm/xe: Add SVM range invalidation and page fault handler Matthew Brost
2024-12-17 23:33 ` [PATCH v3 12/30] drm/gpuvm: Add DRM_GPUVA_OP_DRIVER Matthew Brost
2024-12-17 23:33 ` [PATCH v3 13/30] drm/xe: Add (re)bind to SVM page fault handler Matthew Brost
2024-12-17 23:33 ` [PATCH v3 14/30] drm/xe: Add SVM garbage collector Matthew Brost
2024-12-17 23:33 ` [PATCH v3 15/30] drm/xe: Add unbind to " Matthew Brost
2024-12-20 18:50   ` Ghimiray, Himal Prasad
2024-12-20 18:54     ` Matthew Brost
2024-12-17 23:33 ` [PATCH v3 16/30] drm/xe: Do not allow CPU address mirror VMA unbind if the GPU has bindings Matthew Brost
2024-12-17 23:33 ` [PATCH v3 17/30] drm/xe: Enable CPU address mirror uAPI Matthew Brost
2024-12-17 23:33 ` [PATCH v3 18/30] drm/xe: Add migrate layer functions for SVM support Matthew Brost
2024-12-17 23:33 ` [PATCH v3 19/30] drm/xe: Add SVM device memory mirroring Matthew Brost
2024-12-20 18:39   ` Ghimiray, Himal Prasad
2024-12-20 18:45     ` Matthew Brost
2024-12-17 23:33 ` [PATCH v3 20/30] drm/xe: Add drm_gpusvm_devmem to xe_bo Matthew Brost
2024-12-17 23:33 ` [PATCH v3 21/30] drm/xe: Add drm_pagemap ops to SVM Matthew Brost
2024-12-17 23:33 ` [PATCH v3 22/30] drm/xe: Add GPUSVM device memory copy vfunc functions Matthew Brost
2024-12-17 23:33 ` [PATCH v3 23/30] drm/xe: Add Xe SVM populate_devmem_pfn GPU SVM vfunc Matthew Brost
2024-12-17 23:33 ` [PATCH v3 24/30] drm/xe: Add Xe SVM devmem_release " Matthew Brost
2024-12-17 23:33 ` [PATCH v3 25/30] drm/xe: Add BO flags required for SVM Matthew Brost
2024-12-17 23:33 ` [PATCH v3 26/30] drm/xe: Add SVM VRAM migration Matthew Brost
2024-12-17 23:33 ` [PATCH v3 27/30] drm/xe: Basic SVM BO eviction Matthew Brost
2024-12-19  3:42   ` Matthew Brost
2024-12-17 23:33 ` [PATCH v3 28/30] drm/xe: Add SVM debug Matthew Brost
2024-12-17 23:33 ` [PATCH v3 29/30] drm/xe: Add modparam for SVM notifier size Matthew Brost
2024-12-17 23:33 ` [PATCH v3 30/30] drm/xe: Add always_migrate_to_vram modparam Matthew Brost
2024-12-18  4:07 ` ✓ CI.Patch_applied: success for Introduce GPU SVM and Xe SVM implementation (rev3) Patchwork
2024-12-18  4:08 ` ✗ CI.checkpatch: warning " Patchwork
2024-12-18  4:09 ` ✗ CI.KUnit: failure " Patchwork
2025-01-07 12:19 ` [PATCH v3 00/30] Introduce GPU SVM and Xe SVM implementation Gwan-gyeong Mun
2025-01-17  9:47   ` Gwan-gyeong Mun
2025-01-21 21:14     ` Matthew Brost

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20241217233348.3519726-2-matthew.brost@intel.com \
    --to=matthew.brost@intel.com \
    --cc=airlied@gmail.com \
    --cc=apopple@nvidia.com \
    --cc=christian.koenig@amd.com \
    --cc=dakr@kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=felix.kuehling@amd.com \
    --cc=intel-xe@lists.freedesktop.org \
    --cc=simona.vetter@ffwll.ch \
    --cc=thomas.hellstrom@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox