From: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
To: Arvind Yadav <arvind.yadav@intel.com>, intel-xe@lists.freedesktop.org
Cc: matthew.brost@intel.com, himal.prasad.ghimiray@intel.com
Subject: Re: [RFC PATCH 0/9] drm/xe/madvise: Add support for purgeable buffer objects
Date: Tue, 28 Oct 2025 13:37:44 +0100 [thread overview]
Message-ID: <d2b6819e31d1bcfc032ee1be2e75204d5549f583.camel@linux.intel.com> (raw)
In-Reply-To: <20251028122415.1136721-1-arvind.yadav@intel.com>
On Tue, 2025-10-28 at 17:54 +0530, Arvind Yadav wrote:
> This patch series introduces support for purgeable buffer objects
> (BOs) in the Xe driver.
> This feature allows userspace applications to provide memory usage
> hints to the kernel,
> enabling more effective memory management, especially under system
> memory pressure.
>
> When an application no longer needs the contents of a buffer, it can
> mark it as DONTNEED
> via the DRM_XE_MADVISE ioctl. This makes the BO a candidate for
> purging. If the kernel
> experiences memory pressure, it can reclaim the backing store of
> these BOs,
> freeing up GPU memory and helping to prevent Out-Of-Memory (OOM)
> situations.
>
> The lifecycle of a purgeable BO is as follows:
>
> A BO starts in the default WILLNEED state.
> Userspace marks it as DONTNEED when its contents are discardable.
> Under memory pressure, the kernel may purge the BO, transitioning it
> to the PURGED state.
> Any attempt to use a purged BO (e.g., binding, mapping, or CPU
> access) will result in an error,
> signaling to the application that the contents are gone. The
> application can then re-validate
> the BO by marking it WILLNEED, at which point new backing store is
> allocated. To prevent data corruption,
> a critical safety check ensures that only non-shared buffers can be
> marked as purgeable.
What happens if the bo is bound to multiple address ranges? Do we
require all of them to be marked purged?
Also with i915, when someone called WILLNEED on a purged bo, there was
an error rather than an attempt to rebind. What's the reasoning behind
re-allocating backing store here? Doesn't that mean we need to keep
vmas around even if we purge?
/Thomas
>
> Arvind Yadav (7):
> drm/xe/bo: Add purgeable bo state tracking and field madv to xe_bo
> drm/xe/madvise: Implement purgeable buffer object support
> drm/xe/bo: Prevent purging of shared buffer objects
> 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 | 91 ++++++++++++++++++++++++++--
> --
> drivers/gpu/drm/xe/xe_bo.h | 51 +++++++++++++++++
> drivers/gpu/drm/xe/xe_bo_types.h | 3 +
> drivers/gpu/drm/xe/xe_vm.c | 11 ++++
> drivers/gpu/drm/xe/xe_vm_madvise.c | 67 ++++++++++++++++++++++
> include/uapi/drm/xe_drm.h | 34 +++++++++++
> 6 files changed, 245 insertions(+), 12 deletions(-)
>
next prev parent reply other threads:[~2025-10-28 12:37 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-28 12:24 [RFC PATCH 0/9] drm/xe/madvise: Add support for purgeable buffer objects Arvind Yadav
2025-10-28 12:24 ` [RFC PATCH 1/9] drm/xe/uapi: Add UAPI " Arvind Yadav
2025-10-28 12:24 ` [RFC PATCH 2/9] drm/xe/bo: Add purgeable bo state tracking and field madv to xe_bo Arvind Yadav
2025-10-28 12:24 ` [RFC PATCH 3/9] drm/xe/madvise: Implement purgeable buffer object support Arvind Yadav
2025-10-29 8:55 ` Thomas Hellström
2025-10-29 10:51 ` Thomas Hellström
2025-10-30 7:03 ` Yadav, Arvind
2025-10-30 8:17 ` Thomas Hellström
2025-11-06 9:58 ` Yadav, Arvind
2025-10-28 12:24 ` [RFC PATCH 4/9] drm/xe/bo: Prevent purging of shared buffer objects Arvind Yadav
2025-10-28 12:24 ` [RFC PATCH 5/9] drm/xe/bo: Handle CPU faults on purged " Arvind Yadav
2025-10-28 12:24 ` [RFC PATCH 6/9] drm/xe/bo: Prevent mmap of " Arvind Yadav
2025-10-28 12:24 ` [RFC PATCH 7/9] drm/xe/vm: Prevent binding " Arvind Yadav
2025-10-28 12:24 ` [RFC PATCH 8/9] drm/xe/uapi: Add UAPI for purgeable bo state to madvise query response Arvind Yadav
2025-10-28 12:24 ` [RFC PATCH 9/9] drm/xe: Add support for querying purgeable BO states Arvind Yadav
2025-10-28 12:37 ` Thomas Hellström [this message]
2025-10-28 13:02 ` [RFC PATCH 0/9] drm/xe/madvise: Add support for purgeable buffer objects Matthew Auld
2025-10-29 8:40 ` Yadav, Arvind
2025-10-28 13:23 ` ✗ CI.checkpatch: warning for " Patchwork
2025-10-28 13:24 ` ✓ CI.KUnit: success " Patchwork
2025-10-28 14:12 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-10-28 19:44 ` ✗ Xe.CI.Full: " 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=d2b6819e31d1bcfc032ee1be2e75204d5549f583.camel@linux.intel.com \
--to=thomas.hellstrom@linux.intel.com \
--cc=arvind.yadav@intel.com \
--cc=himal.prasad.ghimiray@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--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