This is a qemu bug: the omap UART model is not good enough for the new highspeed serial driver.
In particular, what is happening is that hw/omap_uart.c has
/* The OMAP UART functionality is similar to the TI16C752 rather than
* the 16550A. When the flag below is enabled, the code will however
* offer 'only' the basic 16550A emulation. */
/* TODO: real functionality for the TI16C752 enhanced features. Note
* QEMU's SerialState emulation internally always uses a 16-byte FIFO
* whereas we would need a 64-byte FIFO for OMAP. */
#define OMAP_UART_16550A
so we just act like a 16550A. The enhanced features include a way to access more UART registers by writing a magic value to one register which swaps out the standard ones for a new set. So the kernel is trying to set the UART_XON1 extended register, but qemu doesn't model the register swapping so it behaves as if the kernel had set the UART_MCR. As it happens the value written has the MCR_LOOP bit set and the model goes into loopback mode, so we never see anything more.
Just commenting out that #define and rebuilding gives back a root prompt on serial. However I don't know if this breaks anybody else (eg omap-but-not-omap3 models?)
This is a qemu bug: the omap UART model is not good enough for the new highspeed serial driver.
In particular, what is happening is that hw/omap_uart.c has
/* The OMAP UART functionality is similar to the TI16C752 rather than
* the 16550A. When the flag below is enabled, the code will however
* offer 'only' the basic 16550A emulation. */
/* TODO: real functionality for the TI16C752 enhanced features. Note
* QEMU's SerialState emulation internally always uses a 16-byte FIFO
* whereas we would need a 64-byte FIFO for OMAP. */
#define OMAP_UART_16550A
so we just act like a 16550A. The enhanced features include a way to access more UART registers by writing a magic value to one register which swaps out the standard ones for a new set. So the kernel is trying to set the UART_XON1 extended register, but qemu doesn't model the register swapping so it behaves as if the kernel had set the UART_MCR. As it happens the value written has the MCR_LOOP bit set and the model goes into loopback mode, so we never see anything more.
Just commenting out that #define and rebuilding gives back a root prompt on serial. However I don't know if this breaks anybody else (eg omap-but-not-omap3 models?)