[PATCH 00/14] drm/xe: Fix flickering when inheriting BIOS fb.

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Fri Sep 27 14:13:50 UTC 2024


We accidentally overwrite the GGTT very early on, because we have put in many allocations
between the first xe display prototype and the current version.

First some generic fixes where we were handling things slightly different,
then a major GGTT rework with 3 goals:
1. Reorder init to move all allocations after xe_display_init_noaccel.
2. Hide all details of GGTT, so we can ensure that nobody is looking
   at it before it's initialised.
3. Prevent this from happening again by moving early GGTT init until right before
   xe_display_init_noaccel now that we know nobody requires GGTT.

Hopefully I didn't miss allocations, but it boots on my ADL without flickering again. :-)
References: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/2775

Maarten Lankhorst (14):
  drm/xe/display: Handle stolen bar readout in the same way as lmem
  drm/xe: Remove double pageflip
  drm/xe: Move suballocator init to after display init
  drm/xe: Initialize UC after xe_display_init_noaccel.
  drm/xe: Use xe_ggtt_map_bo_unlocked for resume
  drm/xe: Add xe_ggtt_might_lock
  drm/xe: Add xe_ggtt_alloc
  drm/xe/display: Abstract read/write functions for GGTT PTEs
  drm/xe: Make xe_ggtt_pt_ops private
  drm/xe/display: Stop dereferencing ggtt in xe_fb_pin
  drm/xe: Move struct xe_ggtt to xe_ggtt.c
  drm/xe/display: Use async flip for flipping initial fb.
  drm/xe: Move interrupt initialisation until after
    xe_display_init_noaccel
  drm/xe: Initialise GGTT later

 drivers/gpu/drm/xe/display/xe_fb_pin.c        |  36 ++---
 drivers/gpu/drm/xe/display/xe_plane_initial.c |  34 ++---
 drivers/gpu/drm/xe/xe_bo.c                    |   2 +-
 drivers/gpu/drm/xe/xe_bo_evict.c              |   9 +-
 drivers/gpu/drm/xe/xe_device.c                |  34 +++--
 drivers/gpu/drm/xe/xe_ggtt.c                  | 140 +++++++++++++++++-
 drivers/gpu/drm/xe/xe_ggtt.h                  |  22 ++-
 drivers/gpu/drm/xe/xe_ggtt_types.h            |  50 +------
 drivers/gpu/drm/xe/xe_gt.c                    |  27 ++--
 drivers/gpu/drm/xe/xe_gt.h                    |   2 +-
 drivers/gpu/drm/xe/xe_tile.c                  |  16 +-
 drivers/gpu/drm/xe/xe_tile.h                  |   1 +
 12 files changed, 243 insertions(+), 130 deletions(-)

-- 
2.45.2



More information about the Intel-xe mailing list