[PATCH 0/4] drm/xe: Reduce GGTT display pinning latency.

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Tue Mar 5 13:12:46 UTC 2024


Testing page flips I noticed 3 pain points in the GGTT code:
- Unnecessary taking force wakes (Brosts fix).
- display doesn't use GuC, so GuC invalidation can (hopefully) be
  skipped, saving 1 ms of latency.
- GuC invalidation should not be done with GGTT lock held, as it
  can be done at any time before the function returns.

This patch series solve those issues.

There are 3 potential optimizations untouched, but those don't touch
GGTT invalidation:
- In the case of pinning same FB, re-use xe_vma instead with
  refcounting, instead of allocating a new one.
- Preallocate the DPT bo when creating the framebuffer, to remove
  allocation latency in the pinning path.
- Attempt if write-combined GGTT PTE updates work again on newer
  platforms, and change writeq to writeq_relaxed, add flush at end.

Maarten Lankhorst (4):
  fix "drm/xe: Cleanup some layering in GGTT"
  drm/xe: Do not grab forcewakes when issuing GGTT TLB invalidation via
    GuC
  drm/xe: Do not perform GuC TLB invalidation for display GGTT
  drm/xe: Move xe_ggtt_invalidate out from ggtt->lock

 drivers/gpu/drm/xe/display/xe_fb_pin.c        | 10 ++++--
 drivers/gpu/drm/xe/display/xe_plane_initial.c |  3 +-
 drivers/gpu/drm/xe/xe_bo.h                    |  2 ++
 drivers/gpu/drm/xe/xe_bo_evict.c              |  5 +++
 drivers/gpu/drm/xe/xe_ggtt.c                  | 31 ++++++++-----------
 drivers/gpu/drm/xe/xe_ggtt.h                  |  4 +--
 drivers/gpu/drm/xe/xe_gt_tlb_invalidation.c   |  2 ++
 7 files changed, 33 insertions(+), 24 deletions(-)

-- 
2.43.0



More information about the Intel-xe mailing list