Water-filling algorithm
When CSI is known at the transmitter, the maximum capacity of MIMO channels can be achieved by using the water-filling algorithm.
The capacity is then given by
$$C=\sum_{k=1}^{\rm{min}\left(N_t ,N_r\right)}\log_2(1+\frac{P_k}{\sigma ^2}\lambda _k)$$
where $P_k$ is the allocated power to the $k$-th eigenmode of the channel matrix $\mathbf{H}$, which is given by
$$
P_k= \left ( \mu -\frac{\sigma ^2}{\lambda _k} \right )^+
$$
where $(x)^+=\max(0,x)$ and $\mu$ denotes the "Water Level".
Furthermore, $\mu$ should be chosen such that the total power budget is not exceeded, that is $$\sum P_k=P_T$$