drm/amd/display: dml: move some variables to heap
authorAurabindo Pillai <aurabindo.pillai@amd.com>
Fri, 10 Jun 2022 17:13:31 +0000 (13:13 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 15 Jun 2022 01:38:40 +0000 (21:38 -0400)
[Why&How]
To reduce stack usage, move some variables into heap in the DML function
dml32_ModeSupportAndSystemConfigurationFull()

Fixes: dda4fb85e433 ("drm/amd/display: DML changes for DCN32/321")
Signed-off-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/dml/dcn32/display_mode_vba_32.c
drivers/gpu/drm/amd/display/dc/dml/display_mode_vba.h

index 5828e60..b9f5bfa 100644 (file)
@@ -1675,9 +1675,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
        bool FullFrameMALLPStateMethod;
        bool SubViewportMALLPStateMethod;
        bool PhantomPipeMALLPStateMethod;
-       double MaxTotalVActiveRDBandwidth;
-       double DSTYAfterScaler[DC__NUM_DPP__MAX];
-       double DSTXAfterScaler[DC__NUM_DPP__MAX];
        unsigned int MaximumMPCCombine;
 
 #ifdef __DML_VBA_DEBUG__
@@ -3095,10 +3092,10 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
        }
 
        //Vertical Active BW support check
-       MaxTotalVActiveRDBandwidth = 0;
+       v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.MaxTotalVActiveRDBandwidth = 0;
 
        for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) {
-               MaxTotalVActiveRDBandwidth = MaxTotalVActiveRDBandwidth + mode_lib->vba.ReadBandwidthLuma[k]
+               v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.MaxTotalVActiveRDBandwidth += mode_lib->vba.ReadBandwidthLuma[k]
                                + mode_lib->vba.ReadBandwidthChroma[k];
        }
 
@@ -3115,7 +3112,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                        * mode_lib->vba.DRAMChannelWidth
                                        * (i < 2 ? mode_lib->vba.MaxAveragePercentOfIdealDRAMBWDisplayCanUseInNormalSystemOperationSTROBE : mode_lib->vba.MaxAveragePercentOfIdealDRAMBWDisplayCanUseInNormalSystemOperation) / 100);
 
-                       if (MaxTotalVActiveRDBandwidth
+                       if (v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.MaxTotalVActiveRDBandwidth
                                        <= mode_lib->vba.MaxTotalVerticalActiveAvailableBandwidth[i][j]) {
                                mode_lib->vba.TotalVerticalActiveBandwidthSupport[i][j] = true;
                        } else {
@@ -3281,8 +3278,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                                        mode_lib->vba.SwathHeightCThisState[k], mode_lib->vba.TWait,
 
                                                        /* Output */
-                                                       &DSTXAfterScaler[k],
-                                                       &DSTYAfterScaler[k],
+                                                       &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.DSTXAfterScaler[k],
+                                                       &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.DSTYAfterScaler[k],
                                                        &mode_lib->vba.LineTimesForPrefetch[k],
                                                        &mode_lib->vba.PrefetchBW[k],
                                                        &mode_lib->vba.LinesForMetaPTE[k],
@@ -3579,8 +3576,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
                                                mode_lib->vba.NoOfDPPThisState,
                                                mode_lib->vba.BytePerPixelInDETY,
                                                mode_lib->vba.BytePerPixelInDETC,
-                                               DSTXAfterScaler,
-                                               DSTYAfterScaler,
+                                               v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.DSTXAfterScaler,
+                                               v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.DSTYAfterScaler,
                                                mode_lib->vba.WritebackEnable,
                                                mode_lib->vba.WritebackPixelFormat,
                                                mode_lib->vba.WritebackDestinationWidth,
index 43e3270..9ad49ad 100644 (file)
@@ -204,6 +204,9 @@ struct dml32_ModeSupportAndSystemConfigurationFull {
        SOCParametersList mSOCParameters;
        unsigned int MaximumSwathWidthSupportLuma;
        unsigned int MaximumSwathWidthSupportChroma;
+       double DSTYAfterScaler[DC__NUM_DPP__MAX];
+       double DSTXAfterScaler[DC__NUM_DPP__MAX];
+       double MaxTotalVActiveRDBandwidth;
 };
 
 struct dummy_vars {