All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/15] CPU binds and ULLS on migration queue
@ 2025-06-05 15:32 Matthew Brost
  2025-06-05 15:32 ` [PATCH 01/15] drm/xe: Drop struct xe_migrate_pt_update argument from populate / clear vfuns Matthew Brost
                   ` (17 more replies)
  0 siblings, 18 replies; 21+ messages in thread
From: Matthew Brost @ 2025-06-05 15:32 UTC (permalink / raw)
  To: intel-xe; +Cc: francois.dugast, thomas.hellstrom, himal.prasad.ghimiray

We now have data to back up the need for CPU binds and ULLS on the
migration queue, as generated from [1].

On BMG, it is shown that when the GPU is consistently processing faults,
copy jobs run approximately 40–65µs faster (depending on the test case)
with ULLS compared to traditional GuC submission with SLPC enabled on
the migration queue (not upstream, but last patch in series can enable
this). Without SLPC enabled (upstream), ULLS is approximately 100–200µs
faster. Startup from a cold GPU shows an even larger speedup. Given the
critical nature of fault performance, ULLS appears to be a worthwhile
feature.

ULLS will consume more power (not yet measured) due to a continuously
running batch on the paging engine. However, compute UMDs already do
this on engines exposed to users. Again, this seems like a worthwhile
tradeoff.

CPU binds are required for ULLS to function, as the migration queue
needs exclusive access to the paging hardware engine. Thus, CPU binds
are included here. Beyond being a requirement for ULLS, CPU binds
should also reduce VM bind latency and decouple kernel binds from
unrelated copy/clear jobs—this is especially beneficial when faults are
serviced in parallel. Average bind time in a parallel faulting test case
was reduced by approximately 15µs-in the worst case, 2M copy time (~140µs)
* (number of page fault threads - 1) latency would be added to single
fault.

This series could be merged in phases: first CPU binds, then ULLS on the
migration execution queue.

Last couple of patches in series add modparams for quick performance /
power experiments.

Matt

[1] https://patchwork.freedesktop.org/series/149811/

Matthew Brost (15):
  drm/xe: Drop struct xe_migrate_pt_update argument from populate /
    clear vfuns
  drm/xe: Add __xe_migrate_update_pgtables_cpu helper
  drm/xe: CPU binds for jobs
  drm/xe: Remove unused arguments from xe_migrate_pt_update_ops
  drm/xe: Don't use migrate exec queue for page fault binds
  drm/xe: Add xe_hw_engine_write_ring_tail
  drm/xe: Add ULLS support to LRC
  drm/xe: Add ULLS migration job support to migration layer
  drm/xe: Add MI_SEMAPHORE_WAIT instruction defs
  drm/xe: Add ULLS migration job support to ring ops
  drm/xe: Add ULLS migration job support to GuC submission
  drm/xe: Enable ULLS migration jobs when opening LR VM
  drm/xe: Set slpc freq to max on ULLS jobs
  drm/xe: Add modparam to enable / disable ULLS on migrate queue
  drm/xe: Add modparam to enable / disable high SLPC on migrate queue

 .../gpu/drm/xe/instructions/xe_mi_commands.h  |   6 +
 drivers/gpu/drm/xe/xe_bo.c                    |   7 +-
 drivers/gpu/drm/xe/xe_bo.h                    |   9 +-
 drivers/gpu/drm/xe/xe_bo_types.h              |   2 -
 drivers/gpu/drm/xe/xe_debugfs.c               |   3 +
 drivers/gpu/drm/xe/xe_device.c                |   3 +
 drivers/gpu/drm/xe/xe_device_types.h          |  10 +
 drivers/gpu/drm/xe/xe_drm_client.c            |   3 +-
 drivers/gpu/drm/xe/xe_guc_submit.c            |  86 +++-
 drivers/gpu/drm/xe/xe_hw_engine.c             |  10 +
 drivers/gpu/drm/xe/xe_hw_engine.h             |   1 +
 drivers/gpu/drm/xe/xe_lrc.c                   |  51 +-
 drivers/gpu/drm/xe/xe_lrc.h                   |   3 +
 drivers/gpu/drm/xe/xe_lrc_types.h             |   2 +
 drivers/gpu/drm/xe/xe_migrate.c               | 442 ++++++++----------
 drivers/gpu/drm/xe/xe_migrate.h               |  27 +-
 drivers/gpu/drm/xe/xe_module.c                |   7 +
 drivers/gpu/drm/xe/xe_module.h                |   2 +
 drivers/gpu/drm/xe/xe_pt.c                    | 221 ++++++---
 drivers/gpu/drm/xe/xe_pt.h                    |   5 +-
 drivers/gpu/drm/xe/xe_pt_types.h              |  29 +-
 drivers/gpu/drm/xe/xe_ring_ops.c              |  30 ++
 drivers/gpu/drm/xe/xe_sched_job.c             |  78 ++--
 drivers/gpu/drm/xe/xe_sched_job_types.h       |  37 +-
 drivers/gpu/drm/xe/xe_vm.c                    |  73 +--
 25 files changed, 730 insertions(+), 417 deletions(-)

-- 
2.34.1


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2025-06-05 22:31 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-06-05 15:32 [PATCH 00/15] CPU binds and ULLS on migration queue Matthew Brost
2025-06-05 15:32 ` [PATCH 01/15] drm/xe: Drop struct xe_migrate_pt_update argument from populate / clear vfuns Matthew Brost
2025-06-05 15:32 ` [PATCH 02/15] drm/xe: Add __xe_migrate_update_pgtables_cpu helper Matthew Brost
2025-06-05 15:32 ` [PATCH 03/15] drm/xe: CPU binds for jobs Matthew Brost
2025-06-05 15:44   ` Thomas Hellström
2025-06-05 16:13     ` Matthew Brost
2025-06-05 15:32 ` [PATCH 04/15] drm/xe: Remove unused arguments from xe_migrate_pt_update_ops Matthew Brost
2025-06-05 15:32 ` [PATCH 05/15] drm/xe: Don't use migrate exec queue for page fault binds Matthew Brost
2025-06-05 15:32 ` [PATCH 06/15] drm/xe: Add xe_hw_engine_write_ring_tail Matthew Brost
2025-06-05 15:32 ` [PATCH 07/15] drm/xe: Add ULLS support to LRC Matthew Brost
2025-06-05 15:32 ` [PATCH 08/15] drm/xe: Add ULLS migration job support to migration layer Matthew Brost
2025-06-05 15:32 ` [PATCH 09/15] drm/xe: Add MI_SEMAPHORE_WAIT instruction defs Matthew Brost
2025-06-05 15:32 ` [PATCH 10/15] drm/xe: Add ULLS migration job support to ring ops Matthew Brost
2025-06-05 15:32 ` [PATCH 11/15] drm/xe: Add ULLS migration job support to GuC submission Matthew Brost
2025-06-05 15:32 ` [PATCH 12/15] drm/xe: Enable ULLS migration jobs when opening LR VM Matthew Brost
2025-06-05 15:32 ` [PATCH 13/15] drm/xe: Set slpc freq to max on ULLS jobs Matthew Brost
2025-06-05 15:32 ` [PATCH 14/15] drm/xe: Add modparam to enable / disable ULLS on migrate queue Matthew Brost
2025-06-05 15:32 ` [PATCH 15/15] drm/xe: Add modparam to enable / disable high SLPC " Matthew Brost
2025-06-05 22:30 ` ✓ CI.Patch_applied: success for CPU binds and ULLS on migration queue Patchwork
2025-06-05 22:31 ` ✓ CI.checkpatch: " Patchwork
2025-06-05 22:31 ` ✗ CI.KUnit: failure " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.