[PATCH 00/11] Pagefault refactor, fine grained fault locking, threaded prefetch
Matthew Brost
matthew.brost at intel.com
Wed Aug 6 06:22:31 UTC 2025
We likely need multiple page fault producers feeding into a common
consumer backend. Additionally, our current page fault work queue
design—being per-GT rather than per-device—makes little sense. Clean
this up ahead of upcoming changes that introduce fine-grained fault
locking and threaded prefetching.
Fine-grained fault locking provides immediate benefits: it allows page
faults from the same VM to be processed in parallel (unless they target
the same range) and enables a sane multi-threaded prefetch
implementation. Longer term, it should help transition GPU SVM from a
per-VM model to a per-MM model, which scales better across multiple VMs
or devices.
Lastly, threaded prefetching enables efficient usage of copy engines.
Matt
Matthew Brost (11):
drm/xe: Stub out new pagefault layer
drm/xe: Implement xe_pagefault_init
drm/xe: Implement xe_pagefault_reset
drm/xe: Implement xe_pagefault_handler
drm/xe: Implement xe_pagefault_queue_work
drm/xe: Add xe_guc_pagefault layer
drm/xe: Remove unused GT page fault code
drm/xe: Fine grained page fault locking
drm/xe: Allow prefetch-only VM bind IOCTLs to use VM read lock
drm/xe: Thread prefetch of SVM ranges
drm/xe: Add num_pf_queue modparam
drivers/gpu/drm/xe/Makefile | 3 +-
drivers/gpu/drm/xe/xe_device.c | 20 +-
drivers/gpu/drm/xe/xe_device_types.h | 10 +
drivers/gpu/drm/xe/xe_gt.c | 8 +-
drivers/gpu/drm/xe/xe_gt_pagefault.c | 691 ------------------------
drivers/gpu/drm/xe/xe_gt_pagefault.h | 19 -
drivers/gpu/drm/xe/xe_gt_types.h | 65 ---
drivers/gpu/drm/xe/xe_guc_ct.c | 6 +-
drivers/gpu/drm/xe/xe_guc_pagefault.c | 94 ++++
drivers/gpu/drm/xe/xe_guc_pagefault.h | 13 +
drivers/gpu/drm/xe/xe_hmm.c | 4 +-
drivers/gpu/drm/xe/xe_module.c | 5 +
drivers/gpu/drm/xe/xe_module.h | 1 +
drivers/gpu/drm/xe/xe_pagefault.c | 480 ++++++++++++++++
drivers/gpu/drm/xe/xe_pagefault.h | 19 +
drivers/gpu/drm/xe/xe_pagefault_types.h | 125 +++++
drivers/gpu/drm/xe/xe_svm.c | 114 ++--
drivers/gpu/drm/xe/xe_svm.h | 38 ++
drivers/gpu/drm/xe/xe_vm.c | 261 +++++++--
drivers/gpu/drm/xe/xe_vm.h | 2 +
drivers/gpu/drm/xe/xe_vm_types.h | 28 +-
21 files changed, 1131 insertions(+), 875 deletions(-)
delete mode 100644 drivers/gpu/drm/xe/xe_gt_pagefault.c
delete mode 100644 drivers/gpu/drm/xe/xe_gt_pagefault.h
create mode 100644 drivers/gpu/drm/xe/xe_guc_pagefault.c
create mode 100644 drivers/gpu/drm/xe/xe_guc_pagefault.h
create mode 100644 drivers/gpu/drm/xe/xe_pagefault.c
create mode 100644 drivers/gpu/drm/xe/xe_pagefault.h
create mode 100644 drivers/gpu/drm/xe/xe_pagefault_types.h
--
2.34.1
More information about the Intel-xe
mailing list