firecracker-microvm / firecracker

Secure and fast microVMs for serverless computing.
http://firecracker-microvm.io
Apache License 2.0
26.37k stars 1.83k forks source link

[Bug] UART has txfifo bug #3046

Open cperciva opened 2 years ago

cperciva commented 2 years ago

Describe the bug

Just tripped over this with FreeBSD: I need to set hw.broken_txfifo=1 to make the UART work once we enter userland in a Firecracker VM. This is a workaround I added to FreeBSD about a decade ago to address a QEMU/Xen bug which has long since been fixed there -- IIRC after the txfifo filled up, we wouldn't get an interrupt telling us when it had drained.

I haven't looked into the Firecracker UART code to see what's going on there; I'm opening this mainly as a placeholder so I don't forget to take a look at it later.

To Reproduce

Boot FreeBSD in Firecracker.

Expected behaviour

The UART should work. Instead, once FreeBSD hits userland it writes 16 characters and then gets stuck.

Environment

Running aljimenezb's pvh-v2 branch. FreeBSD HEAD with Firecracker hacks. m5.metal EC2 instance.

pb8o commented 1 year ago

It may need this PR in rust-vmm first: https://github.com/rust-vmm/vm-superio/pull/96