From: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
To: intel-xe@lists.freedesktop.org
Cc: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>,
"Matthew Brost" <matthew.brost@intel.com>,
"Joonas Lahtinen" <joonas.lahtinen@linux.intel.com>,
"Jani Nikula" <jani.nikula@intel.com>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Matthew Auld" <matthew.auld@intel.com>
Subject: [PATCH v5 07/13] drm/xe/display: Convert __xe_pin_fb_vma()
Date: Thu, 4 Sep 2025 16:49:02 +0200 [thread overview]
Message-ID: <20250904144908.14303-8-thomas.hellstrom@linux.intel.com> (raw)
In-Reply-To: <20250904144908.14303-1-thomas.hellstrom@linux.intel.com>
Convert __xe_pin_fb_vma() for exhaustive eviction
using xe_validation_guard().
v2:
- Avoid gotos from within xe_validation_guard(). (Matt Brost)
- Adapt to signature change of xe_validation_guard(). (Matt Brost)
- Use interruptible waiting, since xe_bo_migrate() already does that.
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
Reviewed-by: Matthew Brost <matthew.brost@intel.com>
---
drivers/gpu/drm/xe/display/xe_fb_pin.c | 30 +++++++++++++++-----------
1 file changed, 18 insertions(+), 12 deletions(-)
diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
index d7a8448a43dc..3d7045852154 100644
--- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
+++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
@@ -281,7 +281,8 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
struct i915_vma *vma = kzalloc(sizeof(*vma), GFP_KERNEL);
struct drm_gem_object *obj = intel_fb_bo(&fb->base);
struct xe_bo *bo = gem_to_xe_bo(obj);
- struct drm_exec *exec = XE_VALIDATION_UNIMPLEMENTED;
+ struct xe_validation_ctx ctx;
+ struct drm_exec exec;
int ret;
if (!vma)
@@ -309,17 +310,22 @@ static struct i915_vma *__xe_pin_fb_vma(const struct intel_framebuffer *fb,
* Pin the framebuffer, we can't use xe_bo_(un)pin functions as the
* assumptions are incorrect for framebuffers
*/
- ret = ttm_bo_reserve(&bo->ttm, false, false, NULL);
- if (ret)
- goto err;
-
- if (IS_DGFX(xe))
- ret = xe_bo_migrate(bo, XE_PL_VRAM0, NULL, exec);
- else
- ret = xe_bo_validate(bo, NULL, true, exec);
- if (!ret)
- ttm_bo_pin(&bo->ttm);
- ttm_bo_unreserve(&bo->ttm);
+ xe_validation_guard(&ctx, &xe->val, &exec, (struct xe_val_flags) {.interruptible = true},
+ ret) {
+ ret = drm_exec_lock_obj(&exec, &bo->ttm.base);
+ drm_exec_retry_on_contention(&exec);
+ if (ret)
+ break;
+
+ if (IS_DGFX(xe))
+ ret = xe_bo_migrate(bo, XE_PL_VRAM0, NULL, &exec);
+ else
+ ret = xe_bo_validate(bo, NULL, true, &exec);
+ drm_exec_retry_on_contention(&exec);
+ xe_validation_retry_on_oom(&ctx, &ret);
+ if (!ret)
+ ttm_bo_pin(&bo->ttm);
+ }
if (ret)
goto err;
--
2.50.1
next prev parent reply other threads:[~2025-09-04 14:49 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-04 14:48 [PATCH v5 00/13] Driver-managed exhaustive eviction Thomas Hellström
2025-09-04 14:48 ` [PATCH v5 01/13] drm/xe: Pass down drm_exec context to validation Thomas Hellström
2025-09-04 14:48 ` [PATCH v5 02/13] drm/xe: Introduce an xe_validation wrapper around drm_exec Thomas Hellström
2025-09-04 14:48 ` [PATCH v5 03/13] drm/xe: Convert xe_bo_create_user() for exhaustive eviction Thomas Hellström
2025-09-04 14:48 ` [PATCH v5 04/13] drm/xe: Convert SVM validation " Thomas Hellström
2025-09-04 14:49 ` [PATCH v5 05/13] drm/xe: Convert existing drm_exec transactions " Thomas Hellström
2025-09-04 14:49 ` [PATCH v5 06/13] drm/xe: Convert the CPU fault handler " Thomas Hellström
2025-09-04 14:49 ` Thomas Hellström [this message]
2025-09-04 14:49 ` [PATCH v5 08/13] drm/xe: Convert xe_dma_buf.c " Thomas Hellström
2025-09-04 14:49 ` [PATCH v5 09/13] drm/xe: Rename ___xe_bo_create_locked() Thomas Hellström
2025-09-04 14:49 ` [PATCH v5 10/13] drm/xe: Convert xe_bo_create_pin_map_at() for exhaustive eviction Thomas Hellström
2025-09-04 14:49 ` [PATCH v5 11/13] drm/xe: Convert xe_bo_create_pin_map() " Thomas Hellström
2025-09-04 14:49 ` [PATCH v5 12/13] drm/xe: Rework instances of variants of xe_bo_create_locked() Thomas Hellström
2025-09-04 14:49 ` [PATCH v5 13/13] drm/xe: Convert pinned suspend eviction for exhaustive eviction Thomas Hellström
2025-09-04 15:29 ` ✗ CI.checkpatch: warning for Driver-managed exhaustive eviction (rev5) Patchwork
2025-09-04 15:31 ` ✓ CI.KUnit: success " Patchwork
2025-09-04 16:22 ` ✓ Xe.CI.BAT: " Patchwork
2025-09-05 6:21 ` ✗ Xe.CI.Full: failure " Patchwork
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=20250904144908.14303-8-thomas.hellstrom@linux.intel.com \
--to=thomas.hellstrom@linux.intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=jani.nikula@intel.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=maarten.lankhorst@linux.intel.com \
--cc=matthew.auld@intel.com \
--cc=matthew.brost@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