[PATCH 0/6] Use DRM scheduler for delayed GT TLB invalidations
Matthew Brost
matthew.brost at intel.com
Tue Jun 17 17:30:08 UTC 2025
On Tue, Jun 17, 2025 at 08:37:24AM -0700, Matthew Brost wrote:
> Use the DRM scheduler for delayed GT TLB invalidations, which properly
> fixes the issue raised in [1]. GT TLB fences have their own dma-fence
> context, so even if the invalidations are ordered, the dma-resv/DRM
> scheduler cannot squash the fences. This results in O(M*N*N) complexity
> in the garbage collector, where M is the number of ranges in the garbage
> collector and N is the number of pending GT TLB invalidations.
After this patch, the complexity is O(M*C) where C is the total number
of GT, queue tuples with GT TLB invalidations pending.
Matt
>
> Admittedly, it's quite a lot of code, but the series includes extensive
> kernel documentation and clear code comments. It introduces a generic
> dependency scheduler that can be reused in the future and is logically
> much cleaner than the previous open-coded solution for delaying GT TLB
> invalidations until a bind job completes.
>
> Matt
>
> [1] https://patchwork.freedesktop.org/patch/658370/?series=150188&rev=1
>
> Matthew Brost (6):
> drm/xe: Explicitly mark migration queues with flag
> drm/xe: Add generic dependecy jobs / scheduler
> drm/xe: Add dependency scheduler for GT TLB invalidations to bind
> queues
> drm/xe: Add xe_migrate_job_lock/unlock helpers
> drm/xe: Add GT TLB invalidation jobs
> drm/xe: Use GT TLB invalidation jobs in PT layer
>
> drivers/gpu/drm/xe/Makefile | 2 +
> drivers/gpu/drm/xe/xe_dep_job_types.h | 29 +++
> drivers/gpu/drm/xe/xe_dep_scheduler.c | 145 ++++++++++++
> drivers/gpu/drm/xe/xe_dep_scheduler.h | 21 ++
> drivers/gpu/drm/xe/xe_exec_queue.c | 24 ++
> drivers/gpu/drm/xe/xe_exec_queue_types.h | 15 ++
> drivers/gpu/drm/xe/xe_gt_tlb_inval_job.c | 274 +++++++++++++++++++++++
> drivers/gpu/drm/xe/xe_gt_tlb_inval_job.h | 34 +++
> drivers/gpu/drm/xe/xe_migrate.c | 44 +++-
> drivers/gpu/drm/xe/xe_migrate.h | 13 ++
> drivers/gpu/drm/xe/xe_pt.c | 193 +++++++---------
> 11 files changed, 678 insertions(+), 116 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/xe_dep_job_types.h
> create mode 100644 drivers/gpu/drm/xe/xe_dep_scheduler.c
> create mode 100644 drivers/gpu/drm/xe/xe_dep_scheduler.h
> create mode 100644 drivers/gpu/drm/xe/xe_gt_tlb_inval_job.c
> create mode 100644 drivers/gpu/drm/xe/xe_gt_tlb_inval_job.h
>
> --
> 2.34.1
>
More information about the Intel-xe
mailing list