From: "Souza, Jose" <jose.souza@intel.com>
To: "intel-xe@lists.freedesktop.org" <intel-xe@lists.freedesktop.org>,
"Yadav, Arvind" <arvind.yadav@intel.com>
Cc: "Brost, Matthew" <matthew.brost@intel.com>,
"Mishra, Pallavi" <pallavi.mishra@intel.com>,
"Ghimiray, Himal Prasad" <himal.prasad.ghimiray@intel.com>,
"thomas.hellstrom@linux.intel.com"
<thomas.hellstrom@linux.intel.com>
Subject: Re: [RFC v2 0/9] drm/xe/madvise: Add support for purgeable buffer objects
Date: Tue, 2 Dec 2025 18:36:18 +0000 [thread overview]
Message-ID: <499329ff1aa2c3caeeb6bcc27bf47e83c84c247a.camel@intel.com> (raw)
In-Reply-To: <20251201055309.854074-1-arvind.yadav@intel.com>
On Mon, 2025-12-01 at 11:20 +0530, Arvind Yadav wrote:
> This patch series introduces comprehensive support for purgeable
> buffer objects
> in the Xe driver, enabling userspace to provide memory usage hints
> for better
> memory management under system pressure.
>
> Overview:
>
> Purgeable memory allows applications to mark buffer objects as "not
> currently
> needed" (DONTNEED), making them eligible for kernel reclamation
> during memory
> pressure. This helps prevent OOM conditions and enables more
> efficient GPU
> memory utilization for workloads with temporary or regeneratable data
> (caches,
> intermediate results, decoded frames, etc.).
>
> Purgeable BO Lifecycle:
> 1. WILLNEED (default): BO actively needed, kernel preserves backing
> store
> 2. DONTNEED (user hint): BO contents discardable, eligible for
> purging
> 3. PURGED (kernel action): Backing store reclaimed during memory
> pressure
>
> Key Design Principles:
> - i915 compatibility: "Once purged, always purged" semantics -
> purged BOs
> remain permanently invalid and must be destroyed/recreated
> - Safety first: Only non-shared BOs can be marked DONTNEED to
> prevent
> multi-process data corruption
> - Multiple protection layers: Validation in madvise, VM bind, mmap,
> and
> fault handlers
> - Async TLB invalidation: Uses xe_bo_trigger_rebind() for non-
> blocking
> GPU mapping invalidation
> - Scratch PTE support: Fault-mode VMs use scratch pages for safe
> zero reads
> on purged BO access
>
> Error Handling:
> - CPU access (mmap): Returns VM_FAULT_SIGBUS (SIGBUS signal to
> process)
> - GPU access (non-scratch VM): Page fault fails with -EACCES, GPU
> context reset
> - GPU access (scratch VM): Page fault succeeds, rebinds with
> scratch PTEs
> - VM_BIND operations: MAP/PREFETCH rejected with -EINVAL
> - Mmap offset ioctl: Rejected with -EINVAL for early error
> detection
uAPI and overal this lgtm, please let me know when you think this is
ready to be implemented on Mesa side.
>
> v2 Changes:
> - Reordered patches: Moved shared BO helper before main
> implementation for
> proper dependency order
> - Fixed reference counting in mmap offset validation (use
> drm_gem_object_put)
> - Removed incorrect claims about madvise(WILLNEED) restoring purged
> BOs
> - Fixed error code documentation inconsistencies
> - Initialize purge_state_val fields to prevent kernel memory leaks
> - Use xe_bo_trigger_rebind() for async TLB invalidation (Thomas
> Hellström)
> - Add NULL rebind with scratch PTEs for fault mode (Thomas
> Hellström)
> - Implement i915-compatible retained field logic (Thomas Hellström)
> - Skip BO validation for purged BOs in page fault handler (crash
> fix)
> - Add scratch VM check in page fault path (non-scratch VMs fail
> fault)
>
>
> Arvind Yadav (7):
> drm/xe/bo: Add purgeable bo state tracking and field madv to xe_bo
> drm/xe/bo: Prevent purging of shared buffer objects
> drm/xe/madvise: Implement purgeable buffer object support
> drm/xe/bo: Handle CPU faults on purged buffer objects
> drm/xe/bo: Prevent mmap of purged buffer objects
> drm/xe/vm: Prevent binding of purged buffer objects
> drm/xe: Add support for querying purgeable BO states
>
> Himal Prasad Ghimiray (2):
> drm/xe/uapi: Add UAPI support for purgeable buffer objects
> drm/xe/uapi: Add UAPI for purgeable bo state to madvise query
> response
>
> drivers/gpu/drm/xe/xe_bo.c | 92 ++++++++++++++++++++++++--
> --
> drivers/gpu/drm/xe/xe_bo.h | 57 +++++++++++++++++
> drivers/gpu/drm/xe/xe_bo_types.h | 3 +
> drivers/gpu/drm/xe/xe_gt_pagefault.c | 19 ++++++
> drivers/gpu/drm/xe/xe_pt.c | 13 +++-
> drivers/gpu/drm/xe/xe_vm.c | 12 ++++
> drivers/gpu/drm/xe/xe_vm_madvise.c | 76 +++++++++++++++++++++++
> include/uapi/drm/xe_drm.h | 50 ++++++++++++++-
> 8 files changed, 308 insertions(+), 14 deletions(-)
prev parent reply other threads:[~2025-12-02 18:36 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-01 5:50 [RFC v2 0/9] drm/xe/madvise: Add support for purgeable buffer objects Arvind Yadav
2025-12-01 5:50 ` [RFC v2 1/9] drm/xe/uapi: Add UAPI " Arvind Yadav
2025-12-01 23:00 ` Matthew Brost
2025-12-02 2:55 ` Yadav, Arvind
2025-12-01 5:50 ` [RFC v2 2/9] drm/xe/bo: Add purgeable bo state tracking and field madv to xe_bo Arvind Yadav
2025-12-01 23:02 ` Matthew Brost
2025-12-02 2:56 ` Yadav, Arvind
2025-12-02 18:52 ` Matthew Brost
2025-12-01 5:50 ` [RFC v2 3/9] drm/xe/bo: Prevent purging of shared buffer objects Arvind Yadav
2025-12-01 23:10 ` Matthew Brost
2025-12-02 3:42 ` Yadav, Arvind
2025-12-02 9:42 ` Thomas Hellström
2025-12-02 15:17 ` Matthew Brost
2025-12-02 18:22 ` Yadav, Arvind
2025-12-02 18:35 ` Matthew Brost
2025-12-01 5:50 ` [RFC v2 4/9] drm/xe/madvise: Implement purgeable buffer object support Arvind Yadav
2025-12-02 1:46 ` Matthew Brost
2025-12-02 4:01 ` Yadav, Arvind
2025-12-02 21:39 ` Matthew Brost
2025-12-03 14:01 ` Yadav, Arvind
2025-12-01 5:50 ` [RFC v2 5/9] drm/xe/bo: Handle CPU faults on purged buffer objects Arvind Yadav
2025-12-02 18:42 ` Matthew Brost
2025-12-02 18:48 ` Matthew Brost
2025-12-03 7:25 ` Yadav, Arvind
2025-12-03 16:24 ` Matthew Brost
2025-12-01 5:50 ` [RFC v2 6/9] drm/xe/bo: Prevent mmap of " Arvind Yadav
2025-12-02 18:54 ` Matthew Brost
2025-12-01 5:50 ` [RFC v2 7/9] drm/xe/vm: Prevent binding " Arvind Yadav
2025-12-02 18:57 ` Matthew Brost
2025-12-03 11:24 ` Yadav, Arvind
2025-12-01 5:50 ` [RFC v2 8/9] drm/xe/uapi: Add UAPI for purgeable bo state to madvise query response Arvind Yadav
2025-12-02 19:01 ` Matthew Brost
2025-12-03 3:54 ` Yadav, Arvind
2025-12-01 5:50 ` [RFC v2 9/9] drm/xe: Add support for querying purgeable BO states Arvind Yadav
2025-12-02 18:36 ` Souza, Jose [this message]
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=499329ff1aa2c3caeeb6bcc27bf47e83c84c247a.camel@intel.com \
--to=jose.souza@intel.com \
--cc=arvind.yadav@intel.com \
--cc=himal.prasad.ghimiray@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=matthew.brost@intel.com \
--cc=pallavi.mishra@intel.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.