From: Brian Nguyen <brian3.nguyen@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: tejas.upadhyay@intel.com, matthew.brost@intel.com,
shuicheng.lin@intel.com, stuart.summers@intel.com
Subject: [PATCH v2 00/11] Page Reclamation Support for Xe3p Platforms
Date: Thu, 27 Nov 2025 07:02:01 +0800 [thread overview]
Message-ID: <20251126230201.3782788-13-brian3.nguyen@intel.com> (raw)
This series introduces a hardware-assisted page reclamation support on Xe3p
platforms, integrating with the KMD's existing TLB invalidation workflow and
adding the ability to perform selective Private Physical Cache (PPC) flushing
rather than always forcing the default full PPC flush.
Currently as of Xe2, Xe TLB invalidations trigger a full Private Physical Cache
flush to guarantee non-coherent memory correctness. New HW (Xe3p and beyond)
exposes a page reclamation feature, which we selectively enable on platforms
with a flag in device info.
The driver can provide a “Page Reclaim List” (PRL), tracking the physical pages
used that correspond to an unmap/unbind operation and let hardware perform selective
cache line eviction. If reclamation succeeds, we skip the full PPC flush entirely
otherwise we fall back to our current process of full PPC flush with the TLB
invalidation.
This series is partially dependent on the "Context based TLB invalidations"
Patch series by Matthew Brost, in particular the "drm/xe: Do not forward
invalid TLB invalidation seqnos to upper layers" patch.
Context based TLB invalidations Patch Series:
https://patchwork.freedesktop.org/series/156874/
Thanks,
Brian
v2:
Note: with revision in debugfs patch, remove reviewed-by.
Please re-review, thanks~.
There is also still some open discussion around Patch 10
(Optimize flushing of L2$).
- General refactor to remove additional variables from
tlb fences (flush_cache and PRL ptr). (Matthew B)
- Removed lock from xe_tlb_inval_reset_timeout and moved
into xe_tlb_inval_done_handler. (Matthew B)
- Removed page reclaim variables out of tlb fences (Matthew B)
- Add FW check for page reclaim support. (Shuicheng, Matthew B)
- Moved PRL max entries overflow handling out from
generate_reclaim_entry to caller. (Shuicheng)
- Fix one off error with NULL terminated PRL.
- Add xe_page_reclaim_list_init for clarity. (Matthew B)
- Invalidate PRL on early abort page walks.
- Allocate PRL bo size to num_entries. (Matthew B)
- Move PRL bo allocation to tlb_inval run_job. (Matthew B)
- Modify debugfs to expose file only if page reclaim supported by
default instead of previous behavior to return an ENODEV
and thus no need to move xe_match_desc from configfs (Michal)
- Compacted warning checking, update commit message,
spelling, moved variables, etc. (Shuicheng, Matthew B, Michal)
- Remove unused function. (Shuicheng)
- Fix various missing kernel doc input.
Suggested-by: Matthew Brost <matthew.brost@intel.com>
Brian Nguyen (9):
drm/xe: Reset tlb fence timeout on invalid seqno received
drm/xe/xe_tlb_inval: Modify fence interface to support PPC flush
drm/xe/guc: Add page reclamation interface to GuC
drm/xe: Create page reclaim list on unbind
drm/xe: Suballocate BO for page reclaim
drm/xe: Prep page reclaim in tlb inval job
drm/xe: Append page reclamation action to tlb inval
drm/xe: Optimize flushing of L2$ by skipping unnecessary page reclaim
drm/xe: Add debugfs support for page reclamation
Matthew Brost (1):
[DO,NOT,REVIEW] drm/xe: Do not forward invalid TLB invalidation seqnos
to upper layers
Oak Zeng (1):
drm/xe: Add page reclamation info to device info
drivers/gpu/drm/xe/Makefile | 1 +
drivers/gpu/drm/xe/abi/guc_actions_abi.h | 2 +
drivers/gpu/drm/xe/regs/xe_gt_regs.h | 11 ++
drivers/gpu/drm/xe/regs/xe_gtt_defs.h | 1 +
drivers/gpu/drm/xe/xe_debugfs.c | 41 +++++++
drivers/gpu/drm/xe/xe_device_types.h | 9 ++
drivers/gpu/drm/xe/xe_guc.c | 4 +
drivers/gpu/drm/xe/xe_guc_ct.c | 17 +++
drivers/gpu/drm/xe/xe_guc_fwif.h | 1 +
drivers/gpu/drm/xe/xe_guc_tlb_inval.c | 36 ++++--
drivers/gpu/drm/xe/xe_page_reclaim.c | 148 +++++++++++++++++++++++
drivers/gpu/drm/xe/xe_page_reclaim.h | 82 +++++++++++++
drivers/gpu/drm/xe/xe_pat.c | 9 +-
drivers/gpu/drm/xe/xe_pci.c | 1 +
drivers/gpu/drm/xe/xe_pci_types.h | 1 +
drivers/gpu/drm/xe/xe_pt.c | 119 +++++++++++++++++-
drivers/gpu/drm/xe/xe_pt_types.h | 5 +
drivers/gpu/drm/xe/xe_tile.c | 5 +
drivers/gpu/drm/xe/xe_tlb_inval.c | 27 ++++-
drivers/gpu/drm/xe/xe_tlb_inval.h | 2 +-
drivers/gpu/drm/xe/xe_tlb_inval_job.c | 37 +++++-
drivers/gpu/drm/xe/xe_tlb_inval_job.h | 4 +
drivers/gpu/drm/xe/xe_tlb_inval_types.h | 5 +-
drivers/gpu/drm/xe/xe_vm.c | 4 +-
24 files changed, 548 insertions(+), 24 deletions(-)
create mode 100644 drivers/gpu/drm/xe/xe_page_reclaim.c
create mode 100644 drivers/gpu/drm/xe/xe_page_reclaim.h
--
2.52.0
next reply other threads:[~2025-11-26 23:02 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-26 23:02 Brian Nguyen [this message]
2025-11-26 23:02 ` [PATCH v2 01/11] [DO, NOT, REVIEW] drm/xe: Do not forward invalid TLB invalidation seqnos to upper layers Brian Nguyen
2025-11-26 23:02 ` [PATCH v2 02/11] drm/xe: Reset tlb fence timeout on invalid seqno received Brian Nguyen
2025-12-02 22:24 ` Matthew Brost
2025-11-26 23:02 ` [PATCH v2 03/11] drm/xe/xe_tlb_inval: Modify fence interface to support PPC flush Brian Nguyen
2025-12-02 22:18 ` Matthew Brost
2025-11-26 23:02 ` [PATCH v2 04/11] drm/xe: Add page reclamation info to device info Brian Nguyen
2025-11-26 23:02 ` [PATCH v2 05/11] drm/xe/guc: Add page reclamation interface to GuC Brian Nguyen
2025-12-02 22:21 ` Matthew Brost
2025-12-03 0:17 ` Lin, Shuicheng
2025-11-26 23:02 ` [PATCH v2 06/11] drm/xe: Create page reclaim list on unbind Brian Nguyen
2025-12-01 21:45 ` Nguyen, Brian3
2025-12-03 22:56 ` Matthew Brost
2025-12-04 0:19 ` Nguyen, Brian3
2025-11-26 23:02 ` [PATCH v2 07/11] drm/xe: Suballocate BO for page reclaim Brian Nguyen
2025-12-03 23:06 ` Matthew Brost
2025-11-26 23:02 ` [PATCH v2 08/11] drm/xe: Prep page reclaim in tlb inval job Brian Nguyen
2025-12-03 23:13 ` Matthew Brost
2025-12-04 0:22 ` Nguyen, Brian3
2025-12-04 1:20 ` Matthew Brost
2025-12-04 5:42 ` Nguyen, Brian3
2025-12-04 18:05 ` Matthew Brost
2025-12-04 20:02 ` Nguyen, Brian3
2025-12-09 5:57 ` Upadhyay, Tejas
2025-12-09 6:14 ` Nguyen, Brian3
2025-11-26 23:02 ` [PATCH v2 09/11] drm/xe: Append page reclamation action to tlb inval Brian Nguyen
2025-12-03 23:15 ` Matthew Brost
2025-11-26 23:02 ` [PATCH v2 10/11] drm/xe: Optimize flushing of L2$ by skipping unnecessary page reclaim Brian Nguyen
2025-12-09 14:23 ` Upadhyay, Tejas
2025-11-26 23:02 ` [PATCH v2 11/11] drm/xe: Add debugfs support for page reclamation Brian Nguyen
2025-12-02 22:28 ` Matthew Brost
2025-12-02 22:51 ` Nguyen, Brian3
2025-12-02 22:59 ` Matthew Brost
2025-12-05 18:02 ` Lin, Shuicheng
2025-11-26 23:52 ` ✗ CI.checkpatch: warning for Page Reclamation Support for Xe3p Platforms (rev2) Patchwork
2025-11-26 23:54 ` ✓ CI.KUnit: success " Patchwork
2025-11-27 0:54 ` ✗ Xe.CI.BAT: failure " Patchwork
2025-11-27 1:42 ` ✗ 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=20251126230201.3782788-13-brian3.nguyen@intel.com \
--to=brian3.nguyen@intel.com \
--cc=intel-xe@lists.freedesktop.org \
--cc=matthew.brost@intel.com \
--cc=shuicheng.lin@intel.com \
--cc=stuart.summers@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