From: Wenjing Liu <[email protected]>

[Why]
The state-update commit path only reads the caller's update
descriptor, it never mutates the dc_state_update root. Making the
pointer const documents that contract.

[How]
Add const to the updates parameter of dc_update_state and
dc_check_state_update. Mark the single-assignment locals in
dc_update_state_init const and replace the memset plus
field-by-field assignment with a compound literal initializer.

Reviewed-by: Dominik Kaszewski <[email protected]>
Signed-off-by: Wenjing Liu <[email protected]>
Signed-off-by: Wayne Lin <[email protected]>
---
 drivers/gpu/drm/amd/display/dc/core/dc.c | 42 ++++++++++++------------
 drivers/gpu/drm/amd/display/dc/dc.h      |  4 +--
 2 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c 
b/drivers/gpu/drm/amd/display/dc/core/dc.c
index 2bd579340b64..318c3b28e918 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
@@ -3282,7 +3282,7 @@ static struct dc_update_descriptor 
check_update_surfaces_for_stream(
  */
 struct dc_update_descriptor dc_check_state_update(
                const struct dc_check_config *check_config,
-               struct dc_state_update *updates)
+               const struct dc_state_update *updates)
 {
        struct dc_update_descriptor desc = {0};
 
@@ -6264,7 +6264,7 @@ static void dc_update_scratch_release(struct dc *dc,
  * @updates: root update object carrying stream, plane, and probe updates
  * Return: true on success, false on failure.
  */
-bool dc_update_state(struct dc *dc, struct dc_state_update *updates)
+bool dc_update_state(struct dc *dc, const struct dc_state_update *updates)
 {
        struct dc_update_scratch_space *scratch;
        bool more = true;
@@ -8525,11 +8525,11 @@ struct dc_update_scratch_space *dc_update_state_init(
 {
        const enum dce_version version = dc->ctx->dce_version;
        struct dc_update_scratch_space *scratch = dc_update_scratch_acquire(dc);
-       bool has_stream_or_plane = updates->stream || updates->stream_update || 
updates->surface_updates;
-       bool has_probe = updates->probe_updates;
-       bool surface_without_stream = updates->surface_updates && 
!updates->stream;
-       bool stream_update_without_stream = updates->stream_update && 
!updates->stream;
-       bool bad_surface_count = updates->surface_count > 0 && 
!updates->surface_updates;
+       const bool has_stream_or_plane = updates->stream || 
updates->stream_update || updates->surface_updates;
+       const bool has_probe = updates->probe_updates;
+       const bool surface_without_stream = updates->surface_updates && 
!updates->stream;
+       const bool stream_update_without_stream = updates->stream_update && 
!updates->stream;
+       const bool bad_surface_count = updates->surface_count > 0 && 
!updates->surface_updates;
 
        if (!scratch)
                return NULL;
@@ -8544,20 +8544,20 @@ struct dc_update_scratch_space *dc_update_state_init(
                return NULL;
        }
 
-       memset(scratch, 0, sizeof(*scratch));
-
-       scratch->dc = dc;
-       scratch->surface_updates = updates->surface_updates;
-       scratch->surface_count = updates->surface_count;
-       scratch->stream = updates->stream;
-       scratch->stream_update = updates->stream_update;
-       scratch->probe_updates = updates->probe_updates;
-       scratch->update_v3 = version >= DCN_VERSION_4_01
-                       || version == DCN_VERSION_3_2
-                       || version == DCN_VERSION_3_21;
-       scratch->do_clear_update_bits = version >= DCN_VERSION_1_0;
-       scratch->new_context = NULL;
-       scratch->flow = UPDATE_V3_FLOW_INVALID;
+       *scratch = (struct dc_update_scratch_space){
+               .dc = dc,
+               .surface_updates = updates->surface_updates,
+               .surface_count = updates->surface_count,
+               .stream = updates->stream,
+               .stream_update = updates->stream_update,
+               .probe_updates = updates->probe_updates,
+               .update_v3 = version >= DCN_VERSION_4_01
+                               || version == DCN_VERSION_3_2
+                               || version == DCN_VERSION_3_21,
+               .do_clear_update_bits = version >= DCN_VERSION_1_0,
+               .new_context = NULL,
+               .flow = UPDATE_V3_FLOW_INVALID,
+       };
 
        return scratch;
 }
diff --git a/drivers/gpu/drm/amd/display/dc/dc.h 
b/drivers/gpu/drm/amd/display/dc/dc.h
index 0913fab7504c..743dde3d10ab 100644
--- a/drivers/gpu/drm/amd/display/dc/dc.h
+++ b/drivers/gpu/drm/amd/display/dc/dc.h
@@ -2125,7 +2125,7 @@ struct dc_state_update {
  */
 struct dc_update_descriptor dc_check_state_update(
                const struct dc_check_config *check_config,
-               struct dc_state_update *updates);
+               const struct dc_state_update *updates);
 
 /**
  * dc_update_state - Commit an absolute dc_state_update.
@@ -2134,7 +2134,7 @@ struct dc_update_descriptor dc_check_state_update(
  *
  * Return: true on success, false on failure.
  */
-bool dc_update_state(struct dc *dc, struct dc_state_update *updates);
+bool dc_update_state(struct dc *dc, const struct dc_state_update *updates);
 
 struct dc_update_scratch_space;
 
-- 
2.43.0

Reply via email to