• Lyude Paul's avatar
    drm/amdgpu: Don't fail resume process if resuming atomic state fails · 2d1af6a1
    Lyude Paul authored
    This is an ugly one unfortunately. Currently, all DRM drivers supporting
    atomic modesetting will save the state that userspace had set before
    suspending, then attempt to restore that state on resume. This probably
    worked very well at one point, like many other things, until DP MST came
    into the picture. While it's easy to restore state on normal display
    connectors that were disconnected during suspend regardless of their
    state post-resume, this can't really be done with MST because of the
    fact that setting up a downstream sink requires performing sideband
    transactions between the source and the MST hub, sending out the ACT
    packets, etc.
    
    Because of this, there isn't really a guarantee that we can restore the
    atomic state we had before suspend once we've resumed. This sucks pretty
    bad, but so far I haven't run into any compositors that this actually
    causes serious issues with. Most compositors will notice the hotplug we
    send afterwards, and then reprobe state.
    
    Since nouveau and i915 also don't fail the suspend/resume process due to
    failing to restore the atomic state, let's make amdgpu match this
    behavior. Better to resume the GPU properly, then to stop the process
    half way because of a potentially unavoidable atomic commit failure.
    
    Eventually, we'll have a real fix for this problem on the DRM level. But
    we've got some more important low-hanging fruit to deal with first.
    Signed-off-by: default avatarLyude Paul <lyude@redhat.com>
    Reviewed-by: default avatarHarry Wentland <harry.wentland@amd.com>
    Cc: Jerry Zuo <Jerry.Zuo@amd.com>
    Cc: <stable@vger.kernel.org> # v4.15+
    Link: https://patchwork.freedesktop.org/patch/msgid/20190108211133.32564-3-lyude@redhat.com
    2d1af6a1
amdgpu_dm.c 169 KB