The baudrate is also limited by the UART controller clock which is internally divided by 16 to generate the transmit clock (cf pl011 spec). With your result, that would mean the UART controller is fed with a 100MHz clock (6.25 * 16).
On the other side, looking deeper in hisilicon clock driver [1] we can see that:
UART3_CLK = CLK_PPLL0 / 16
CLK_PLL0 is defined at a fixed at 1600000000 (HZ) which gives 100MHz for UART3_CLK, matching the prediction.
So this explains the limitation. Now if you really want to reach 9Mb/s I assume this is a request for hisilicon (I suppose ‘fixed’ clock can be configured from bootloader).
[1] clk-hi3660.c - drivers/clk/hisilicon/clk-hi3660.c - Linux source code (v4.20.17) - Bootlin
If the baudrate is not in the following list, you need to use BOTHER (baudrate other).
B57600
B115200
B230400
B460800
B500000
B576000
B921600
B1000000
B1152000
B1500000
B2000000
B2500000
B3000000
B3500000
B4000000