]> www.infradead.org Git - nvme.git/commit
drm/i915: Use the same vblank worker for atomic unpin
authorMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Wed, 22 May 2024 05:33:41 +0000 (07:33 +0200)
committerMaarten Lankhorst <maarten.lankhorst@linux.intel.com>
Mon, 24 Jun 2024 16:03:18 +0000 (18:03 +0200)
commita441c0aca4552a1b959b26526854a97544d10ecb
tree02128678eba2a9d4c65419ab8a300afb1305aa66
parentbb8624de096340daec29137f56ea711fbcdea450
drm/i915: Use the same vblank worker for atomic unpin

In case of legacy cursor update, the cursor VMA needs to be unpinned
only after vblank. This exceeds the lifetime of the whole atomic commit.

Any trick I attempted to keep the atomic commit alive didn't work, as
drm_atomic_helper_setup_commit() force throttles on any old commit that
wasn't cleaned up.

The only option remaining is to remove the plane from the atomic commit,
and use the same path as the legacy cursor update to clean the state
after vblank.

Changes since previous version:
- Call the memset for plane state immediately when scheduling vblank,
  this prevents a use-after-free in cursor cleanup.

Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Reviewed-by: Uma Shankar <uma.shankar@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240522053341.137592-4-maarten.lankhorst@linux.intel.com
drivers/gpu/drm/i915/display/intel_atomic_plane.c
drivers/gpu/drm/i915/display/intel_atomic_plane.h
drivers/gpu/drm/i915/display/intel_crtc.c
drivers/gpu/drm/i915/display/intel_cursor.c
drivers/gpu/drm/i915/display/intel_cursor.h