Skip to content
  • Kalyan Thota's avatar
    drm/msm/dpu: Fix reservation failures in modeset · ccc862b9
    Kalyan Thota authored
    
    
    In TEST_ONLY commit, rm global_state will duplicate the
    object and request for new reservations, once they pass
    then the new state will be swapped with the old and will
    be available for the Atomic Commit.
    
    This patch fixes some of missing links in the resource
    reservation sequence mentioned above.
    
    1) Creation of duplicate state in test_only commit (Rob)
    2) Allocate and release the resources on every modeset.
    3) Avoid allocation only when active is false.
    
    In a modeset operation, swap state happens well before
    disable. Hence clearing reservations in disable will
    cause failures in modeset enable.
    
    Allow reservations to be cleared/allocated before swap,
    such that only newly committed resources are pushed to HW.
    
    Changes in v1:
     - Move the rm release to atomic_check.
     - Ensure resource allocation and free happens when active
       is not changed i.e only when mode is changed.(Rob)
    
    Changes in v2:
     - Handle dpu_kms_get_global_state API failure as it may
       return EDEADLK (swboyd).
    
    Signed-off-by: default avatarKalyan Thota <kalyan_t@codeaurora.org>
    Signed-off-by: default avatarRob Clark <robdclark@chromium.org>
    ccc862b9