OSDN Git Service

drm/amd/display: Only commit SubVP state after pipe programming
authorAlvin Lee <Alvin.Lee2@amd.com>
Wed, 17 Aug 2022 14:47:59 +0000 (10:47 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 29 Aug 2022 21:45:57 +0000 (17:45 -0400)
[Description]
We only want to commit the SubVP config to DMCUB
after the main and phantom pipe programming has
completed. Commiting the state early can cause
issues such as P-State being allowed by the HW
early which causes the SubVP state machine to
go into a bad state

Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Brian Chang <Brian.Chang@amd.com>
Signed-off-by: Alvin Lee <Alvin.Lee2@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc.c

index 868618f..43d2fd7 100644 (file)
@@ -3333,10 +3333,6 @@ static void commit_planes_for_stream(struct dc *dc,
                if (dc->hwss.program_front_end_for_ctx)
                        dc->hwss.program_front_end_for_ctx(dc, context);
 
-               if (update_type != UPDATE_TYPE_FAST)
-                       if (dc->hwss.commit_subvp_config)
-                               dc->hwss.commit_subvp_config(dc, context);
-
                if (should_lock_all_pipes && dc->hwss.interdependent_update_lock) {
                        dc->hwss.interdependent_update_lock(dc, context, false);
                } else {
@@ -3344,6 +3340,10 @@ static void commit_planes_for_stream(struct dc *dc,
                }
                dc->hwss.post_unlock_program_front_end(dc, context);
 
+               if (update_type != UPDATE_TYPE_FAST)
+                       if (dc->hwss.commit_subvp_config)
+                               dc->hwss.commit_subvp_config(dc, context);
+
                /* Since phantom pipe programming is moved to post_unlock_program_front_end,
                 * move the SubVP lock to after the phantom pipes have been setup
                 */
@@ -3472,10 +3472,6 @@ static void commit_planes_for_stream(struct dc *dc,
 
        }
 
-       if (update_type != UPDATE_TYPE_FAST)
-               if (dc->hwss.commit_subvp_config)
-                       dc->hwss.commit_subvp_config(dc, context);
-
        if (should_lock_all_pipes && dc->hwss.interdependent_update_lock) {
                dc->hwss.interdependent_update_lock(dc, context, false);
        } else {
@@ -3512,6 +3508,9 @@ static void commit_planes_for_stream(struct dc *dc,
 
        if (update_type != UPDATE_TYPE_FAST)
                dc->hwss.post_unlock_program_front_end(dc, context);
+               if (update_type != UPDATE_TYPE_FAST)
+                       if (dc->hwss.commit_subvp_config)
+                               dc->hwss.commit_subvp_config(dc, context);
 
        /* Since phantom pipe programming is moved to post_unlock_program_front_end,
         * move the SubVP lock to after the phantom pipes have been setup