if (state->modeset)
                wakeref = intel_display_power_get(dev_priv, POWER_DOMAIN_MODESET);
 
-       for_each_oldnew_intel_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
+       /*
+        * Disable CRTC/pipes in reverse order because some features(MST in
+        * TGL+) requires master and slave relationship between pipes, so it
+        * should always pick the lowest pipe as master as it will be enabled
+        * first and disable in the reverse order so the master will be the
+        * last one to be disabled.
+        */
+       for_each_oldnew_intel_crtc_in_state_reverse(state, crtc, old_crtc_state,
+                                                   new_crtc_state, i) {
                if (needs_modeset(new_crtc_state) ||
                    new_crtc_state->update_pipe) {