It turns out that xe is performing all kinds of allocations before inheriting the BIOS fb. This is problematic as it completely overwrites the initial FB on discrete, and on integrated causes flickering until the original FB is restored (preserved in stolen memory). The complete fix requires reshuffling the entire init sequence. I want to do that, but first add some preparations. This way I don't need to resubmit all these patches that are ready to commit each time. Maarten Lankhorst (12): drm/xe/display: Handle stolen bar readout in the same way as lmem drm/xe: Remove double pageflip drm/i915/display: Use async flip when available for initial plane config drm/xe/display: Remove single wait for vblank drm/xe: Move suballocator init to after display init 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: 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/i915/display/skl_universal_plane.c | 13 +- drivers/gpu/drm/xe/display/xe_fb_pin.c | 36 ++--- drivers/gpu/drm/xe/display/xe_plane_initial.c | 27 +--- drivers/gpu/drm/xe/xe_bo.c | 2 +- drivers/gpu/drm/xe/xe_bo_evict.c | 9 +- drivers/gpu/drm/xe/xe_device.c | 6 + drivers/gpu/drm/xe/xe_ggtt.c | 141 +++++++++++++++++- drivers/gpu/drm/xe/xe_ggtt.h | 22 ++- drivers/gpu/drm/xe/xe_ggtt_types.h | 50 +------ drivers/gpu/drm/xe/xe_tile.c | 16 +- drivers/gpu/drm/xe/xe_tile.h | 1 + 11 files changed, 218 insertions(+), 105 deletions(-) -- 2.45.2