bhyve always emulates the four LPC UARTs and always describes them in
the DSDT with their legacy resources: COM1 (0x3f8) and COM3 (0x3e8)
both with IRQNoFlags {4}, COM2 (0x2f8) and COM4 (0x2e8) both with {3}.
IRQNoFlags descriptors are exclusive and there is no _PRS, so Windows
finds two devices claiming the same IRQ and starts none of them: all
four ports show code 12 ("This device cannot find enough free resources
that it can use") in Device Manager.
Describe COM1 and COM2 as before and COM3 and COM4 only if they are
configured with -l com3,... or -l com4,... The UARTs themselves are
still emulated, so the I/O ports and the snapshot layout do not change.
Two configured ports on one IRQ (com1 and com3) still conflict in
Windows, as they would on real hardware.
Signed-off-by: Wanpeng Qian <wanpengqian@gmail.com>
Sponsored by: keelos.dev