Skip to content

Handle mode set race conditions gracefully

Jonas Ådahl requested to merge jadahl/mutter:wip/handle-kms-races-better into master
    kms-impl-simple: Handle mode set race conditions gracefully
    
    If we end up trying to do a mode set on a DRM state that has already
    changed behind our back without us yet having seen the hotplug event we
    may fail with `EINVAL`. Since the renderer layer doesn't handle mode set
    failure, it'll still try to page flip later on, which will then also
    fail. When failing, it'll try to look up the cached mode set in order to
    retry the mode set later on, as is needed to handle other error
    conditions. However, if the mode set prior to the page flip failed, we
    won't cache the mode set, and the page flip error handling code will get
    confused.
    
    Instead of asserting that a page flip always has a valid cached mode set
    ready to look up, handle the lack of there of more gracefully by failing
    to mode set. It is expected that things will correct themself as there
    should be a hotplug event waiting around the the corner, to reconfigure
    the monitor configuration setting new modes.

Merge request reports