It was reported that on kernel v6.2-rc1, we have the following stack
size issue:

[...]/display/dc/dml/dcn314/display_mode_vba_314.c: In function
'UseMinimumDCFCLK':
[...]/display/dc/dml/dcn314/display_mode_vba_314.c:7127:1: error: the
frame size of 2208 bytes is larger than 2048 bytes
[-Werror=frame-larger-than=]

This commit replaces the local PixelDCFCLKCyclesRequiredInPrefetch from
the same version in the UseMinimumDCFCLK_vars struct.

Cc: Alex Deucher <alexdeuc...@gmail.com>
Cc: Aurabindo Pillai <aurabindo.pil...@amd.com>
Cc: Hamza Mahfooz <hamza.mahf...@amd.com>
Cc: Roman Li <roman...@amd.com>
Cc: Geert Uytterhoeven <ge...@linux-m68k.org>
Link: https://lore.kernel.org/all/20221227082932.798359-1-ge...@linux-m68k.org/
Reported-by: Geert Uytterhoeven <ge...@linux-m68k.org>
Signed-off-by: Rodrigo Siqueira <rodrigo.sique...@amd.com>
---
 .../amd/display/dc/dml/dcn314/display_mode_vba_314.c  | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c 
b/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
index 2ea89a26c6e8..8de1f7840b5a 100644
--- a/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
+++ b/drivers/gpu/drm/amd/display/dc/dml/dcn314/display_mode_vba_314.c
@@ -6976,7 +6976,6 @@ static void UseMinimumDCFCLK(
        NormalEfficiency = 
v->PercentOfIdealFabricAndSDPPortBWReceivedAfterUrgLatency / 100.0;
        for (i = 0; i < v->soc.num_states; ++i) {
                for (j = 0; j <= 1; ++j) {
-                       double 
PixelDCFCLKCyclesRequiredInPrefetch[DC__NUM_DPP__MAX];
                        double PrefetchPixelLinesTime[DC__NUM_DPP__MAX];
                        double 
DCFCLKRequiredForPeakBandwidthPerPlane[DC__NUM_DPP__MAX];
                        double DynamicMetadataVMExtraLatency[DC__NUM_DPP__MAX];
@@ -7029,12 +7028,12 @@ static void UseMinimumDCFCLK(
                                double ExpectedPrefetchBWAcceleration;
                                double PrefetchTime;
 
-                               PixelDCFCLKCyclesRequiredInPrefetch[k] = 
(v->PrefetchLinesY[i][j][k] * v->swath_width_luma_ub_all_states[i][j][k] * 
v->BytePerPixelY[k]
+                               
v->UseMinimumDCFCLK_stack_reduction.PixelDCFCLKCyclesRequiredInPrefetch[k] = 
(v->PrefetchLinesY[i][j][k] * v->swath_width_luma_ub_all_states[i][j][k] * 
v->BytePerPixelY[k]
                                                + v->PrefetchLinesC[i][j][k] * 
v->swath_width_chroma_ub_all_states[i][j][k] * v->BytePerPixelC[k]) / 
NormalEfficiency / v->ReturnBusWidth;
                                DCFCLKCyclesRequiredInPrefetch = 2 * 
ExtraLatencyCycles / NoOfDPPState[k]
                                                + 
v->PDEAndMetaPTEBytesPerFrame[i][j][k] / NormalEfficiency / NormalEfficiency / 
v->ReturnBusWidth * (v->GPUVMMaxPageTableLevels > 2 ? 1 : 0)
                                                + 2 * 
v->DPTEBytesPerRow[i][j][k] / NormalEfficiency / NormalEfficiency / 
v->ReturnBusWidth
-                                               + 2 * v->MetaRowBytes[i][j][k] 
/ NormalEfficiency / v->ReturnBusWidth + PixelDCFCLKCyclesRequiredInPrefetch[k];
+                                               + 2 * v->MetaRowBytes[i][j][k] 
/ NormalEfficiency / v->ReturnBusWidth + 
v->UseMinimumDCFCLK_stack_reduction.PixelDCFCLKCyclesRequiredInPrefetch[k];
                                PrefetchPixelLinesTime[k] = 
dml_max(v->PrefetchLinesY[i][j][k], v->PrefetchLinesC[i][j][k]) * v->HTotal[k] 
/ v->PixelClock[k];
                                ExpectedPrefetchBWAcceleration = 
(v->VActivePixelBandwidth[i][j][k] + v->VActiveCursorBandwidth[i][j][k])
                                                / (v->ReadBandwidthLuma[k] + 
v->ReadBandwidthChroma[k]);
@@ -7051,8 +7050,8 @@ static void UseMinimumDCFCLK(
                                        double ExpectedVRatioPrefetch;
 
                                        ExpectedVRatioPrefetch = 
PrefetchPixelLinesTime[k]
-                                                       / (PrefetchTime * 
PixelDCFCLKCyclesRequiredInPrefetch[k] / DCFCLKCyclesRequiredInPrefetch);
-                                       
DCFCLKRequiredForPeakBandwidthPerPlane[k] = NoOfDPPState[k] * 
PixelDCFCLKCyclesRequiredInPrefetch[k] / PrefetchPixelLinesTime[k]
+                                                       / (PrefetchTime * 
v->UseMinimumDCFCLK_stack_reduction.PixelDCFCLKCyclesRequiredInPrefetch[k] / 
DCFCLKCyclesRequiredInPrefetch);
+                                       
DCFCLKRequiredForPeakBandwidthPerPlane[k] = NoOfDPPState[k] * 
v->UseMinimumDCFCLK_stack_reduction.PixelDCFCLKCyclesRequiredInPrefetch[k] / 
PrefetchPixelLinesTime[k]
                                                        * dml_max(1.0, 
ExpectedVRatioPrefetch) * dml_max(1.0, ExpectedVRatioPrefetch / 4) * 
ExpectedPrefetchBWAcceleration;
                                        if (v->HostVMEnable == true || 
v->ImmediateFlipRequirement[0] == dm_immediate_flip_required) {
                                                
DCFCLKRequiredForPeakBandwidthPerPlane[k] = 
DCFCLKRequiredForPeakBandwidthPerPlane[k]
@@ -7117,7 +7116,7 @@ static void UseMinimumDCFCLK(
                                        DCFCLKRequiredForPeakBandwidth = 
dml_max3(
                                                        
DCFCLKRequiredForPeakBandwidth,
                                                        2 * ExtraLatencyCycles 
/ (MaximumTvmPlus2Tr0PlusTsw - MinimumTvmPlus2Tr0 - PrefetchPixelLinesTime[k] / 
4),
-                                                       (2 * ExtraLatencyCycles 
+ PixelDCFCLKCyclesRequiredInPrefetch[k]) / (MaximumTvmPlus2Tr0PlusTsw - 
MinimumTvmPlus2Tr0));
+                                                       (2 * ExtraLatencyCycles 
+ v->UseMinimumDCFCLK_stack_reduction.PixelDCFCLKCyclesRequiredInPrefetch[k]) / 
(MaximumTvmPlus2Tr0PlusTsw - MinimumTvmPlus2Tr0));
                                }
                        }
                        v->DCFCLKState[i][j] = dml_min(v->DCFCLKPerState[i], 
1.05 * dml_max(DCFCLKRequiredForAverageBandwidth, 
DCFCLKRequiredForPeakBandwidth));
-- 
2.39.0

Reply via email to