• Douglas Anderson's avatar
    drm: Call drm_atomic_helper_shutdown() at shutdown/remove time for misc drivers · 3c4babae
    Douglas Anderson authored
    Based on grepping through the source code these drivers appear to be
    missing a call to drm_atomic_helper_shutdown() at system shutdown time
    and at driver remove (or unbind) time. Among other things, this means
    that if a panel is in use that it won't be cleanly powered off at
    system shutdown time.
    
    The fact that we should call drm_atomic_helper_shutdown() in the case
    of OS shutdown/restart and at driver remove (or unbind) time comes
    straight out of the kernel doc "driver instance overview" in
    drm_drv.c.
    
    A few notes about these fixes:
    - I confirmed that these drivers were all DRIVER_MODESET type drivers,
      which I believe makes this relevant.
    - I confirmed that these drivers were all DRIVER_ATOMIC.
    - When adding drm_atomic_helper_shutdown() to the remove/unbind path,
      I added it after drm_kms_helper_poll_fini() when the driver had
      it. This seemed to be what other drivers did. If
      drm_kms_helper_poll_fini() wasn't there I added it straight after
      drm_dev_unregister().
    - This patch deals with drivers using the component model in similar
      ways as the patch ("drm: Call drm_atomic_helper_shutdown() at
      shutdown time for misc drivers")
    - These fixes rely on the patch ("drm/atomic-helper:
      drm_atomic_helper_shutdown(NULL) should be a noop") to simplify
      shutdown.
    Suggested-by: default avatarMaxime Ripard <mripard@kernel.org>
    Reviewed-by: default avatarTomi Valkeinen <tomi.valkeinen@ideasonboard.com>
    Tested-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> # tilcdc
    Acked-by: default avatarMaxime Ripard <mripard@kernel.org>
    Signed-off-by: default avatarDouglas Anderson <dianders@chromium.org>
    Link: https://patchwork.freedesktop.org/patch/msgid/20230901163944.RFT.5.I771eb4bd03d8772b19e7dcfaef3e2c167bce5846@changeid
    3c4babae
pl111_drv.c 10.6 KB