int force_clock_mode;/*every mode change.*/
 
        bool nv12_iflip_vm_wa;
+       bool disable_dram_clock_change_vactive_support;
 };
 
 struct dc_debug_data {
 
        bool full_pstate_supported = false;
        bool dummy_pstate_supported = false;
        double p_state_latency_us = context->bw_ctx.dml.soc.dram_clock_change_latency_us;
+       context->bw_ctx.dml.soc.disable_dram_clock_change_vactive_support = dc->debug.disable_dram_clock_change_vactive_support;
 
        if (fast_validate)
                return dcn20_validate_bandwidth_internal(dc, context, true);
 
                        mode_lib->vba.MinActiveDRAMClockChangeMargin
                                        + mode_lib->vba.DRAMClockChangeLatency;
 
-       if (mode_lib->vba.MinActiveDRAMClockChangeMargin > 50) {
+       if (mode_lib->vba.DRAMClockChangeSupportsVActive &&
+                       mode_lib->vba.MinActiveDRAMClockChangeMargin > 50) {
                mode_lib->vba.DRAMClockChangeWatermark += 25;
                mode_lib->vba.DRAMClockChangeSupport[0][0] = dm_dram_clock_change_vactive;
        } else {
 
                        mode_lib->vba.MinActiveDRAMClockChangeMargin
                                        + mode_lib->vba.DRAMClockChangeLatency;
 
-
-       if (mode_lib->vba.MinActiveDRAMClockChangeMargin > 50) {
+       if (mode_lib->vba.DRAMClockChangeSupportsVActive &&
+               mode_lib->vba.MinActiveDRAMClockChangeMargin > 50) {
                mode_lib->vba.DRAMClockChangeWatermark += 25;
                mode_lib->vba.DRAMClockChangeSupport[0][0] = dm_dram_clock_change_vactive;
        } else if (mode_lib->vba.DummyPStateCheck &&
-                               mode_lib->vba.MinActiveDRAMClockChangeMargin > 0) {
+                       mode_lib->vba.MinActiveDRAMClockChangeMargin > 0) {
                mode_lib->vba.DRAMClockChangeSupport[0][0] = dm_dram_clock_change_vactive;
        } else {
                if (mode_lib->vba.SynchronizedVBlank || mode_lib->vba.NumberOfActivePlanes == 1) {
 
        bool do_urgent_latency_adjustment;
        double urgent_latency_adjustment_fabric_clock_component_us;
        double urgent_latency_adjustment_fabric_clock_reference_mhz;
+       bool disable_dram_clock_change_vactive_support;
 };
 
 struct _vcs_dpi_ip_params_st {
 
        mode_lib->vba.SREnterPlusExitTime = soc->sr_enter_plus_exit_time_us;
        mode_lib->vba.DRAMClockChangeLatency = soc->dram_clock_change_latency_us;
        mode_lib->vba.DummyPStateCheck = soc->dram_clock_change_latency_us == soc->dummy_pstate_latency_us;
+       mode_lib->vba.DRAMClockChangeSupportsVActive = !soc->disable_dram_clock_change_vactive_support ||
+                       mode_lib->vba.DummyPStateCheck;
 
        mode_lib->vba.Downspreading = soc->downspread_percent;
        mode_lib->vba.DRAMChannelWidth = soc->dram_channel_width_bytes;   // new!
 
        unsigned int DSCFormatFactor;
 
        bool DummyPStateCheck;
+       bool DRAMClockChangeSupportsVActive;
        bool PrefetchModeSupported;
        enum self_refresh_affinity AllowDRAMSelfRefreshOrDRAMClockChangeInVblank; // Mode Support only
        double XFCRemoteSurfaceFlipDelay;