num_dcfclk_dpms++;
        }
 
+       if (num_dcfclk_dpms > 0 && bw_params->clk_table.entries[0].fclk_mhz > min_fclk_mhz)
+               min_fclk_mhz = bw_params->clk_table.entries[0].fclk_mhz;
+
        if (!max_dcfclk_mhz || !max_dispclk_mhz || !max_dtbclk_mhz)
                return -1;
 
                for (i = *num_entries - 1; i >= 0 ; i--) {
                        if (table[i].fabricclk_mhz < min_fclk_mhz) {
                                table[i].fabricclk_mhz = min_fclk_mhz;
-                               break;
                        }
                }
        }
        for (i = *num_entries - 1; i >= 0 ; i--) {
                if (table[i].dcfclk_mhz < min_dcfclk_mhz) {
                        table[i].dcfclk_mhz = min_dcfclk_mhz;
-                       break;
                }
        }
 
 
                                                mode_lib->vba.PixelClock,
                                                mode_lib->vba.VRatio,
                                                mode_lib->vba.VRatioChroma,
-                                               mode_lib->vba.UsesMALLForPStateChange);
+                                               mode_lib->vba.UsesMALLForPStateChange,
+                                               mode_lib->vba.UseUnboundedRequesting);
 
        for (k = 0; k < mode_lib->vba.NumberOfActiveSurfaces; ++k) {
                v->MaxVStartupLines[k] = ((mode_lib->vba.Interlace[k] &&
                                        mode_lib->vba.PixelClock,
                                        mode_lib->vba.VRatio,
                                        mode_lib->vba.VRatioChroma,
-                                       mode_lib->vba.UsesMALLForPStateChange);
+                                       mode_lib->vba.UsesMALLForPStateChange,
+                                       mode_lib->vba.UseUnboundedRequesting);
 
                        v->dummy_vars.dml32_ModeSupportAndSystemConfigurationFull.VMDataOnlyReturnBWPerState = dml32_get_return_bw_mbps_vm_only(&mode_lib->vba.soc, i,
                                        mode_lib->vba.DCFCLKState[i][j], mode_lib->vba.FabricClockPerState[i],
 
                double  PixelClock[],
                double  VRatioY[],
                double  VRatioC[],
-               enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[])
+               enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[],
+               enum unbounded_requesting_policy UseUnboundedRequesting)
 {
        int k;
        double SwathSizeAllSurfaces = 0;
        double SwathSizePerSurfaceC[DC__NUM_DPP__MAX];
        bool NotEnoughDETSwathFillLatencyHiding = false;
 
+       if (UseUnboundedRequesting == dm_unbounded_requesting)
+               return false;
+
        /* calculate sum of single swath size for all pipes in bytes */
        for (k = 0; k < NumberOfActiveSurfaces; k++) {
                SwathSizePerSurfaceY[k] = SwathHeightY[k] * SwathWidthY[k] * BytePerPixelInDETY[k] * NumOfDPP[k];
 
                double  PixelClock[],
                double  VRatioY[],
                double  VRatioC[],
-               enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[]);
+               enum dm_use_mall_for_pstate_change_mode UsesMALLForPStateChange[],
+               enum unbounded_requesting_policy UseUnboundedRequesting);
 
 #endif
 
                        num_dcfclk_dpms++;
        }
 
+       if (num_dcfclk_dpms > 0 && bw_params->clk_table.entries[0].fclk_mhz > min_fclk_mhz)
+               min_fclk_mhz = bw_params->clk_table.entries[0].fclk_mhz;
+
        if (!max_dcfclk_mhz || !max_dispclk_mhz || !max_dtbclk_mhz)
                return -1;
 
                for (i = *num_entries - 1; i >= 0 ; i--) {
                        if (table[i].fabricclk_mhz < min_fclk_mhz) {
                                table[i].fabricclk_mhz = min_fclk_mhz;
-                               break;
                        }
                }
        }
        for (i = *num_entries - 1; i >= 0 ; i--) {
                if (table[i].dcfclk_mhz < min_dcfclk_mhz) {
                        table[i].dcfclk_mhz = min_dcfclk_mhz;
-                       break;
                }
        }