From: "Ghimiray, Himal Prasad" <himal.prasad.ghimiray@intel.com>
To: Tejas Upadhyay <tejas.upadhyay@intel.com>,
<intel-xe@lists.freedesktop.org>
Cc: <rodrigo.vivi@intel.com>
Subject: Re: [PATCH V19 06/15] drm/xe: Guard teardown paths against purged BOs
Date: Mon, 31 Aug 2026 12:23:56 +0530 [thread overview]
Message-ID: <b6a920af-d524-4bfe-a7ef-f3b20d4ea905@intel.com> (raw)
In-Reply-To: <20260831064942.315720-23-tejas.upadhyay@intel.com>
On 31-08-2026 12:19, Tejas Upadhyay wrote:
> VRAM page offlining can purge BOs that are still referenced by page
> tables, exec queues, and DMA-buf exports. Add xe_bo_is_purged()
> guards in the teardown paths to prevent unpinning or mapping an
> already-purged BO:
>
> - xe_bo_unpin_map_no_vm(): skip unpin if purged
> - xe_dma_buf_map(): return -ENOENT early if purged
> - xe_exec_queue_update_run_ticks(): skip LRC timestamp read if purged
> - xe_pt_destroy(): skip unpin if purged
>
> v4(Sashiko):
> - Move bo purge check in xe_bo_unpin() to handle all instances
> v3(Sashiko):
> - Remove dma_resv is already held
> v2(Himal):
> - take dma_resv lock before calling xe_bo_is_purged()
>
Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
> Signed-off-by: Tejas Upadhyay <tejas.upadhyay@intel.com>
> ---
> drivers/gpu/drm/xe/xe_bo.c | 3 +++
> drivers/gpu/drm/xe/xe_dma_buf.c | 3 +++
> drivers/gpu/drm/xe/xe_exec_queue.c | 8 ++++++--
> 3 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index c255327669da..b162753cebb7 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c
> @@ -3267,6 +3267,9 @@ void xe_bo_unpin(struct xe_bo *bo)
> struct ttm_place *place = &bo->placements[0];
> struct xe_device *xe = xe_bo_device(bo);
>
> + if (xe_bo_is_purged(bo))
> + return;
> +
> xe_assert(xe, !bo->ttm.base.import_attach);
> xe_assert(xe, xe_bo_is_pinned(bo));
>
> diff --git a/drivers/gpu/drm/xe/xe_dma_buf.c b/drivers/gpu/drm/xe/xe_dma_buf.c
> index bf0728838ead..5d9f1cd24b7f 100644
> --- a/drivers/gpu/drm/xe/xe_dma_buf.c
> +++ b/drivers/gpu/drm/xe/xe_dma_buf.c
> @@ -104,6 +104,9 @@ static struct sg_table *xe_dma_buf_map(struct dma_buf_attachment *attach,
> struct sg_table *sgt;
> int r = 0;
>
> + if (xe_bo_is_purged(bo))
> + return ERR_PTR(-ENOENT);
> +
> if (!attach->peer2peer && !xe_bo_can_migrate(bo, XE_PL_TT))
> return ERR_PTR(-EOPNOTSUPP);
>
> diff --git a/drivers/gpu/drm/xe/xe_exec_queue.c b/drivers/gpu/drm/xe/xe_exec_queue.c
> index 91ed6c0fac84..91e4f3cb5617 100644
> --- a/drivers/gpu/drm/xe/xe_exec_queue.c
> +++ b/drivers/gpu/drm/xe/xe_exec_queue.c
> @@ -1572,8 +1572,12 @@ void xe_exec_queue_update_run_ticks(struct xe_exec_queue *q)
> * errors.
> */
> lrc = q->lrc[0];
> - new_ts = xe_lrc_update_timestamp(lrc, &old_ts);
> - q->xef->run_ticks[q->class] += (new_ts - old_ts) * q->width;
> + xe_bo_lock(lrc->bo, false);
> + if (!xe_bo_is_purged(lrc->bo)) {
> + new_ts = xe_lrc_update_timestamp(lrc, &old_ts);
> + q->xef->run_ticks[q->class] += (new_ts - old_ts) * q->width;
> + }
> + xe_bo_unlock(lrc->bo);
>
> drm_dev_exit(idx);
> }
next prev parent reply other threads:[~2026-08-31 6:54 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-31 6:49 [PATCH V19 00/15] Add memory page offlining support Tejas Upadhyay
2026-08-31 6:49 ` [PATCH V19 01/15] drm/xe: Link VRAM object with gpu buddy Tejas Upadhyay
2026-08-31 6:49 ` [PATCH V19 02/15] drm/xe: Link LRC BO and its execution Queue Tejas Upadhyay
2026-08-31 7:24 ` sashiko-bot
2026-08-31 6:49 ` [PATCH V19 03/15] drm/xe: Export xe_ttm_bo_purge() Tejas Upadhyay
2026-09-02 0:33 ` Matthew Brost
2026-08-31 6:49 ` [PATCH V19 04/15] drm/xe: Handle NULL resource and allow purging of VRAM pages Tejas Upadhyay
2026-08-31 6:52 ` Ghimiray, Himal Prasad
2026-08-31 7:42 ` sashiko-bot
2026-08-31 6:49 ` [PATCH V19 05/15] drm/xe/bo: Make xe_bo_is_user() public Tejas Upadhyay
2026-08-31 6:49 ` [PATCH V19 06/15] drm/xe: Guard teardown paths against purged BOs Tejas Upadhyay
2026-08-31 6:53 ` Ghimiray, Himal Prasad [this message]
2026-08-31 8:03 ` sashiko-bot
2026-09-01 5:05 ` Upadhyay, Tejas
2026-08-31 6:49 ` [PATCH V19 07/15] drm/xe/vram: Extract buddy alloc and free helpers Tejas Upadhyay
2026-08-31 8:08 ` sashiko-bot
2026-09-01 5:10 ` Upadhyay, Tejas
2026-08-31 6:49 ` [PATCH V19 08/15] drm/xe/vram: Add page offline data structures and lifecycle Tejas Upadhyay
2026-08-31 6:49 ` [PATCH V19 09/15] drm/xe/vram: Add VRAM page offline fault handler Tejas Upadhyay
2026-08-31 6:57 ` Ghimiray, Himal Prasad
2026-08-31 8:37 ` sashiko-bot
2026-09-01 5:48 ` Upadhyay, Tejas
2026-08-31 6:49 ` [PATCH V19 10/15] drm/xe/configfs: Add disable_vram_page_offline attribute Tejas Upadhyay
2026-08-31 8:45 ` sashiko-bot
2026-09-01 5:25 ` Upadhyay, Tejas
2026-08-31 6:49 ` [PATCH V19 11/15] drm/xe/ras: Cache disable_vram_page_offline policy at init Tejas Upadhyay
2026-08-31 9:02 ` sashiko-bot
2026-09-01 5:22 ` Upadhyay, Tejas
2026-08-31 6:49 ` [PATCH V19 12/15] drm/xe/vram: Check disable_vram_page_offline policy in fault handler Tejas Upadhyay
2026-08-31 6:49 ` [PATCH V19 13/15] drm/xe: Expose bad VRAM pages via debugfs Tejas Upadhyay
2026-08-31 6:55 ` Ghimiray, Himal Prasad
2026-08-31 9:18 ` sashiko-bot
2026-09-01 5:13 ` Upadhyay, Tejas
2026-08-31 6:49 ` [PATCH V19 14/15] drm/xe/uapi: Expose ban reason in EXEC_QUEUE_GET_PROPERTY_BAN Tejas Upadhyay
2026-08-31 9:40 ` sashiko-bot
2026-09-01 9:40 ` Upadhyay, Tejas
2026-08-31 6:49 ` [PATCH V19 15/15] drm/xe: Add fault-inject based VRAM page offline injection Tejas Upadhyay
2026-08-31 6:54 ` Ghimiray, Himal Prasad
2026-08-31 11:53 ` ✓ CI.KUnit: success for Add memory page offlining support (rev22) Patchwork
2026-08-31 13:28 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-31 13:58 ` ✗ Xe.CI.FULL: failure " Patchwork
2026-08-31 14:04 ` [PATCH V19 00/15] Add memory page offlining support Rodrigo Vivi
2026-08-31 14:58 ` Matthew Brost
2026-09-01 4:09 ` Upadhyay, Tejas
2026-08-31 17:44 ` ✓ CI.KUnit: success for Add memory page offlining support (rev23) Patchwork
2026-08-31 18:32 ` ✓ Xe.CI.BAT: " Patchwork
2026-08-31 22:22 ` ✗ 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=b6a920af-d524-4bfe-a7ef-f3b20d4ea905@intel.com \
--to=himal.prasad.ghimiray@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=rodrigo.vivi@intel.com \
--cc=tejas.upadhyay@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