• C
    drm: Fix lack of CRTC disable for drm_crtc_helper_set_config(.fb=NULL) · 6eebd6bb
    Chris Wilson 提交于
    Disabling the CRTC by setting its framebuffer to NULL, as used by
    drm_framebuffer_cleanup(), was failing to pass the current framebuffer
    to the crtc_func->disable callback. This is because of the dance within
    drm_crtc_helper_set_config to pass the new_fb (NULL in this case) to the
    drm_crtc_helper_set_mode with the currently attached fb as a parameter.
    drm_crtc_helper_set_mode treats this as a no-op and the encoder is still
    enabled. And so the current fb is forgotten before the call to
    drm_helper_disable_unused_functions.
    
    This patch treats disabling the CRTC as a simple special case rather
    than adding further complexity into the configuration logic.
    
    This fixes a pin-leak of the fb bo on Xserver close.
    Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: NDave Airlie <airlied@redhat.com>
    6eebd6bb
drm_crtc_helper.c 27.8 KB