*   - %-ENOSPC, if the new state is invalid, because of BW limitation
  *         @failing_port is set to:
  *         - The non-root port where a BW limit check failed
+ *           with all the ports downstream of @failing_port passing
+ *           the BW limit check.
  *           The returned port pointer is valid until at least
  *           one payload downstream of it exists.
  *         - %NULL if the BW limit check failed at the root port
+ *           with all the ports downstream of the root port passing
+ *           the BW limit check.
  *   - %-EINVAL, if the new state is invalid, because the root port has
  *     too many payloads.
  */
        if (!mgr->mst_state)
                return 0;
 
-       ret = drm_dp_mst_atomic_check_payload_alloc_limits(mgr, mst_state);
-       if (ret)
-               return ret;
-
        mutex_lock(&mgr->lock);
        ret = drm_dp_mst_atomic_check_mstb_bw_limit(mgr->mst_primary,
                                                    mst_state,
                                                    failing_port);
        mutex_unlock(&mgr->lock);
 
-       return ret < 0 ? ret : 0;
+       if (ret < 0)
+               return ret;
+
+       return drm_dp_mst_atomic_check_payload_alloc_limits(mgr, mst_state);
 }
 EXPORT_SYMBOL(drm_dp_mst_atomic_check_mgr);