Commit 01cf387b authored by Alex Deucher's avatar Alex Deucher

drm/amdgpu/display: reduce stack size in dml32_ModeSupportAndSystemConfigurationFull()

Move more stack variable in to dummy vars structure on the heap.

Fixes stack frame size errors:
drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c: In function 'dml32_ModeSupportAndSystemConfigurationFull':
drivers/gpu/drm/amd/amdgpu/../display/dc/dml/dcn32/display_mode_vba_32.c:3833:1: error: the frame size of 2720 bytes is larger than 2048 bytes [-Werror=frame-larger-than=]
 3833 | } // ModeSupportAndSystemConfigurationFull
      | ^

Fixes: dda4fb85 ("drm/amd/display: DML changes for DCN32/321")
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Cc: Aurabindo Pillai <aurabindo.pillai@amd.com>
Cc: Rodrigo Siqueira Jordao <Rodrigo.Siqueira@amd.com>
Reviewed-by: default avatarRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 366e817e
...@@ -1660,8 +1660,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman ...@@ -1660,8 +1660,7 @@ static void DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerforman
void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib) void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_lib)
{ {
bool dummy_boolean[2]; unsigned int dummy_integer[4];
unsigned int dummy_integer[1];
bool MPCCombineMethodAsNeededForPStateChangeAndVoltage; bool MPCCombineMethodAsNeededForPStateChangeAndVoltage;
bool MPCCombineMethodAsPossible; bool MPCCombineMethodAsPossible;
enum odm_combine_mode dummy_odm_mode[DC__NUM_DPP__MAX]; enum odm_combine_mode dummy_odm_mode[DC__NUM_DPP__MAX];
...@@ -1973,10 +1972,10 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -1973,10 +1972,10 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[5], /* Long DETBufferSizeInKByte[] */ v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[5], /* Long DETBufferSizeInKByte[] */
v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[6], /* Long DETBufferSizeY[] */ v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[6], /* Long DETBufferSizeY[] */
v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[7], /* Long DETBufferSizeC[] */ v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[7], /* Long DETBufferSizeC[] */
&dummy_boolean[0], /* bool *UnboundedRequestEnabled */ &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_boolean_array[0][0], /* bool *UnboundedRequestEnabled */
&dummy_integer[0], /* Long *CompressedBufferSizeInkByte */ &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[0][0], /* Long *CompressedBufferSizeInkByte */
mode_lib->vba.SingleDPPViewportSizeSupportPerSurface,/* bool ViewportSizeSupportPerSurface[] */ mode_lib->vba.SingleDPPViewportSizeSupportPerSurface,/* bool ViewportSizeSupportPerSurface[] */
&dummy_boolean[1]); /* bool *ViewportSizeSupport */ &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_boolean_array[1][0]); /* bool *ViewportSizeSupport */
MPCCombineMethodAsNeededForPStateChangeAndVoltage = false; MPCCombineMethodAsNeededForPStateChangeAndVoltage = false;
MPCCombineMethodAsPossible = false; MPCCombineMethodAsPossible = false;
...@@ -2506,7 +2505,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -2506,7 +2505,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
// //
for (i = 0; i < (int) v->soc.num_states; ++i) { for (i = 0; i < (int) v->soc.num_states; ++i) {
for (j = 0; j <= 1; ++j) { for (j = 0; j <= 1; ++j) {
bool dummy_boolean_array[1][DC__NUM_DPP__MAX];
for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) { for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) {
mode_lib->vba.RequiredDPPCLKThisState[k] = mode_lib->vba.RequiredDPPCLK[i][j][k]; mode_lib->vba.RequiredDPPCLKThisState[k] = mode_lib->vba.RequiredDPPCLK[i][j][k];
mode_lib->vba.NoOfDPPThisState[k] = mode_lib->vba.NoOfDPP[i][j][k]; mode_lib->vba.NoOfDPPThisState[k] = mode_lib->vba.NoOfDPP[i][j][k];
...@@ -2570,7 +2568,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -2570,7 +2568,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
mode_lib->vba.DETBufferSizeCThisState, mode_lib->vba.DETBufferSizeCThisState,
&mode_lib->vba.UnboundedRequestEnabledThisState, &mode_lib->vba.UnboundedRequestEnabledThisState,
&mode_lib->vba.CompressedBufferSizeInkByteThisState, &mode_lib->vba.CompressedBufferSizeInkByteThisState,
dummy_boolean_array[0], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_boolean_array[0],
&mode_lib->vba.ViewportSizeSupport[i][j]); &mode_lib->vba.ViewportSizeSupport[i][j]);
for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) { for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) {
...@@ -2708,9 +2706,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -2708,9 +2706,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
} }
{ {
bool dummy_boolean_array[2][DC__NUM_DPP__MAX];
unsigned int dummy_integer_array[22][DC__NUM_DPP__MAX];
dml32_CalculateVMRowAndSwath( dml32_CalculateVMRowAndSwath(
mode_lib->vba.NumberOfActiveSurfaces, mode_lib->vba.NumberOfActiveSurfaces,
v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.SurfParameters, v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.SurfParameters,
...@@ -2733,32 +2728,32 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -2733,32 +2728,32 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
/* Output */ /* Output */
mode_lib->vba.PTEBufferSizeNotExceededPerState, mode_lib->vba.PTEBufferSizeNotExceededPerState,
mode_lib->vba.DCCMetaBufferSizeNotExceededPerState, mode_lib->vba.DCCMetaBufferSizeNotExceededPerState,
dummy_integer_array[0], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[0],
dummy_integer_array[1], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[1],
mode_lib->vba.dpte_row_height, mode_lib->vba.dpte_row_height,
mode_lib->vba.dpte_row_height_chroma, mode_lib->vba.dpte_row_height_chroma,
dummy_integer_array[2], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[2],
dummy_integer_array[3], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[3],
dummy_integer_array[4], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[4],
dummy_integer_array[5], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[5],
dummy_integer_array[6], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[6],
dummy_integer_array[7], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[7],
dummy_integer_array[8], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[8],
dummy_integer_array[9], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[9],
mode_lib->vba.meta_row_height, mode_lib->vba.meta_row_height,
mode_lib->vba.meta_row_height_chroma, mode_lib->vba.meta_row_height_chroma,
dummy_integer_array[10], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[10],
mode_lib->vba.dpte_group_bytes, mode_lib->vba.dpte_group_bytes,
dummy_integer_array[11], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[11],
dummy_integer_array[12], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[12],
dummy_integer_array[13], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[13],
dummy_integer_array[14], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[14],
dummy_integer_array[15], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[15],
dummy_integer_array[16], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[16],
dummy_integer_array[17], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[17],
dummy_integer_array[18], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[18],
dummy_integer_array[19], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[19],
dummy_integer_array[20], v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[20],
mode_lib->vba.PrefetchLinesYThisState, mode_lib->vba.PrefetchLinesYThisState,
mode_lib->vba.PrefetchLinesCThisState, mode_lib->vba.PrefetchLinesCThisState,
mode_lib->vba.PrefillY, mode_lib->vba.PrefillY,
...@@ -2772,9 +2767,9 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -2772,9 +2767,9 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
mode_lib->vba.MetaRowBytesThisState, mode_lib->vba.MetaRowBytesThisState,
mode_lib->vba.use_one_row_for_frame_this_state, mode_lib->vba.use_one_row_for_frame_this_state,
mode_lib->vba.use_one_row_for_frame_flip_this_state, mode_lib->vba.use_one_row_for_frame_flip_this_state,
dummy_boolean_array[0], // Boolean UsesMALLForStaticScreen[] v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_boolean_array[0], // Boolean UsesMALLForStaticScreen[]
dummy_boolean_array[1], // Boolean PTE_BUFFER_MODE[] v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_boolean_array[1], // Boolean PTE_BUFFER_MODE[]
dummy_integer_array[21]); // Long BIGK_FRAGMENT_SIZE[] v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_integer_array[21]); // Long BIGK_FRAGMENT_SIZE[]
} }
for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) { for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) {
...@@ -3197,7 +3192,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -3197,7 +3192,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
for (k = 0; k <= mode_lib->vba.NumberOfActiveSurfaces - 1; k++) { for (k = 0; k <= mode_lib->vba.NumberOfActiveSurfaces - 1; k++) {
DmlPipe myPipe; DmlPipe myPipe;
unsigned int dummy_integer;
mode_lib->vba.TWait = dml32_CalculateTWait( mode_lib->vba.TWait = dml32_CalculateTWait(
mode_lib->vba.PrefetchModePerState[i][j], mode_lib->vba.PrefetchModePerState[i][j],
...@@ -3294,7 +3288,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -3294,7 +3288,7 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[0], // double *Tdmdl_vm &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[0], // double *Tdmdl_vm
&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[1], // double *Tdmdl &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[1], // double *Tdmdl
&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[2], // double *TSetup &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[2], // double *TSetup
&dummy_integer, // unsigned int *VUpdateOffsetPix &dummy_integer[0], // unsigned int *VUpdateOffsetPix
&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[3], // unsigned int *VUpdateWidthPix &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[3], // unsigned int *VUpdateWidthPix
&v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[4]); // unsigned int *VReadyOffsetPix &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[4]); // unsigned int *VReadyOffsetPix
} }
...@@ -3323,7 +3317,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -3323,7 +3317,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
} }
{ {
double dummy_single[2];
dml32_CalculatePrefetchBandwithSupport( dml32_CalculatePrefetchBandwithSupport(
mode_lib->vba.NumberOfActiveSurfaces, mode_lib->vba.NumberOfActiveSurfaces,
mode_lib->vba.ReturnBWPerState[i][j], mode_lib->vba.ReturnBWPerState[i][j],
...@@ -3346,8 +3339,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -3346,8 +3339,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
mode_lib->vba.UrgentBurstFactorCursorPre, mode_lib->vba.UrgentBurstFactorCursorPre,
/* output */ /* output */
&dummy_single[0], // Single *PrefetchBandwidth &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[0], // Single *PrefetchBandwidth
&dummy_single[1], // Single *FractionOfUrgentBandwidth &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[1], // Single *FractionOfUrgentBandwidth
&mode_lib->vba.PrefetchSupported[i][j]); &mode_lib->vba.PrefetchSupported[i][j]);
} }
...@@ -3457,7 +3450,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -3457,7 +3450,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
} }
{ {
double dummy_single[2];
dml32_CalculateImmediateFlipBandwithSupport(mode_lib->vba.NumberOfActiveSurfaces, dml32_CalculateImmediateFlipBandwithSupport(mode_lib->vba.NumberOfActiveSurfaces,
mode_lib->vba.ReturnBWPerState[i][j], mode_lib->vba.ReturnBWPerState[i][j],
mode_lib->vba.ImmediateFlipRequirement, mode_lib->vba.ImmediateFlipRequirement,
...@@ -3480,8 +3472,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -3480,8 +3472,8 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
mode_lib->vba.UrgentBurstFactorCursorPre, mode_lib->vba.UrgentBurstFactorCursorPre,
/* output */ /* output */
&dummy_single[0], // Single *TotalBandwidth &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[0], // Single *TotalBandwidth
&dummy_single[1], // Single *FractionOfUrgentBandwidth &v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.dummy_single[1], // Single *FractionOfUrgentBandwidth
&mode_lib->vba.ImmediateFlipSupportedForState[i][j]); // Boolean *ImmediateFlipBandwidthSupport &mode_lib->vba.ImmediateFlipSupportedForState[i][j]); // Boolean *ImmediateFlipBandwidthSupport
} }
...@@ -3534,7 +3526,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l ...@@ -3534,7 +3526,6 @@ void dml32_ModeSupportAndSystemConfigurationFull(struct display_mode_lib *mode_l
v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.mSOCParameters.SMNLatency = mode_lib->vba.SMNLatency; v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.mSOCParameters.SMNLatency = mode_lib->vba.SMNLatency;
{ {
unsigned int dummy_integer[4];
dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport( dml32_CalculateWatermarksMALLUseAndDRAMSpeedChangeSupport(
mode_lib->vba.USRRetrainingRequiredFinal, mode_lib->vba.USRRetrainingRequiredFinal,
mode_lib->vba.UsesMALLForPStateChange, mode_lib->vba.UsesMALLForPStateChange,
......
...@@ -196,7 +196,7 @@ struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCal ...@@ -196,7 +196,7 @@ struct DISPCLKDPPCLKDCFCLKDeepSleepPrefetchParametersWatermarksAndPerformanceCal
}; };
struct dml32_ModeSupportAndSystemConfigurationFull { struct dml32_ModeSupportAndSystemConfigurationFull {
unsigned int dummy_integer_array[8][DC__NUM_DPP__MAX]; unsigned int dummy_integer_array[22][DC__NUM_DPP__MAX];
double dummy_double_array[2][DC__NUM_DPP__MAX]; double dummy_double_array[2][DC__NUM_DPP__MAX];
DmlPipe SurfParameters[DC__NUM_DPP__MAX]; DmlPipe SurfParameters[DC__NUM_DPP__MAX];
double dummy_single[5]; double dummy_single[5];
...@@ -207,6 +207,7 @@ struct dml32_ModeSupportAndSystemConfigurationFull { ...@@ -207,6 +207,7 @@ struct dml32_ModeSupportAndSystemConfigurationFull {
double DSTYAfterScaler[DC__NUM_DPP__MAX]; double DSTYAfterScaler[DC__NUM_DPP__MAX];
double DSTXAfterScaler[DC__NUM_DPP__MAX]; double DSTXAfterScaler[DC__NUM_DPP__MAX];
double MaxTotalVActiveRDBandwidth; double MaxTotalVActiveRDBandwidth;
bool dummy_boolean_array[2][DC__NUM_DPP__MAX];
}; };
struct dummy_vars { struct dummy_vars {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment