On 2022-10-27 20:57, Matteo Riondato wrote: > On 2022-10-26 at 17:15 EDT, Colin Percival <cperc...@freebsd.org> wrote: > >>On 10/26/22 13:48, Ed Maste wrote: >>>On Mon, 24 Oct 2022 at 22:11, void <v...@f-m.fm> wrote: >>>>this started appearing in dmesg >>>> >>>>ns8250: UART FCR is broken >>>>ns8250: UART FCR is broken >>> >>>This message was added as part of Colin's work to support FreeBSD in the >>>Firecracker VMM >>>https://cgit.freebsd.org/src/commit/?id=c4b68e7e53bb352be3fa16995b99764c03097e66 >>> >>>In this case it indicates that bhyve has the same bug/missing functionality >>>as Firecracker -- it doesn't implement the FCR_XMT_RST or FCR_RCV_RST bits. >>>You can safely ignore the message, and it will disappear once someone adds >>>the required support to bhyve. We should probably also have the kernel emit >>>the message only once. I've CC'd Colin for comment. >> >>Indeed, looking at usr.sbin/bhyve/uart_emul.c it looks like FCR_XMT_RST is >>not emulated. This is different from Firecracker, which doesn't emulate >>either anything from the FCR and where I was seeing the receive side not >>being flushed, but I'm glad my warning was able to flag a bug. :-) >> >>If "void" is comfortable with kernel hacking, it would be great to confirm >>>that the warning is indeed coming from the transmit side not being flushed; >>a printf("drain = %d\n", drain); would be sufficient. >> >>And yes, only emitting this warning once per device (or once per boot?) would >>probably be good. > > I got the same message on real hardware, no virtualization involved as > either host or guest. Is that expected at all? > > Relevant lines from /var/run/dmesg.boot: > > ns8250: UART FCR is broken > ns8250: UART FCR is broken > uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 > uart0: console (115200,n,8,1) > ns8250: UART FCR is broken > ns8250: UART FCR is broken > uart1: <16550 or compatible> port 0x2f8-0x2ff irq 3 on acpi0 > ns8250: UART FCR is broken
On 3 × bare metal 14-CURRENT hosts at 017367c1146a69baca6a1a0bea10b0cb02c72d85: $ dmesg -a | egrep '(ns8250|uart)' ns8250: UART FCR is broken ns8250: UART FCR is broken uart0: <16550 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 ns8250: UART FCR is broken