[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