• Jasper St. Pierre's avatar
    drm/atomic_helper: Cope with plane->crtc == NULL in disable helper · aa54e2ee
    Jasper St. Pierre authored
    The drm core can call the plane disable hook multiple times, which
    means it can get called when plane->crtc is already NULL. That in turn
    means we can't get at the implicit acquire ctx we use in the atomic
    helpers for legacy entries points.
    
    We could try to pass drm_modeset_legacy_acquire_ctx a drm_device
    pointer so that it can cope with a NULL crtc. But that still doesn't
    work since the cursor ioctls (remapped with the universal cursor plane
    support code) only grabs the crtc locks. So the global acquire context
    isn't set eitehr.
    
    The real solution here would be to bite the bullet and wire up
    explicit acquire context parameters to all relevant functions. We need
    to do that anyway (to be able to get rid of some small allocations
    which we can't cope with failing). But that's a lot of work and better
    done once atomic has settled a bit.
    
    So meanwhile just catch this case in the helper and bail out.
    Signed-off-by: default avatarJasper St. Pierre <jstpierre@mecheye.net>
    Reviewed-by: default avatarRob Clark <robdclark@gmail.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    [danvet: Completely rewrite commit message and comment but keep
    Jasper's logic and author credits since his patch is the only
    short-term solution that works.]
    Tested-by: default avatarThierry Reding <treding@nvidia.com>
    Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
    aa54e2ee
drm_atomic_helper.c 51 KB