• Daniel Vetter's avatar
    drm: Move ->old_fb from crtc to plane · 3d30a59b
    Daniel Vetter authored
    Atomic implemenations for legacy ioctls must be able to drop locks.
    Which doesn't cause havoc since we only do that while constructing
    the new state, so no driver or hardware state change has happened.
    
    The only troubling bit is the fb refcounting the core does - if
    someone else has snuck in then it might potentially unref an
    outdated framebuffer. To fix that move the old_fb temporary storage
    into struct drm_plane for all ioctls, so that the atomic helpers can
    update it.
    
    v2: Fix up the error case handling as suggested by Matt Roper and just
    grab locks uncoditionally - there's no point in optimizing the locking
    for when userspace gets it wrong.
    
    Cc: Matt Roper <matthew.d.roper@intel.com>
    Cc: Dave Airlie <airlied@redhat.com>
    Reviewed-by: default avatarMatt Roper <matthew.d.roper@intel.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    3d30a59b
drm_crtc.c 136 KB