HomeFreeBSD

EC2: Remove old broken_txfifo workaround

Description

EC2: Remove old broken_txfifo workaround

Early versions of Xen, including those used in the early days of EC2,
had a bug in their UART emulation whereby the TX FIFO wouldn't send the
expected interrupt when emptying; as a result, FreeBSD would write 16
characters to the serial console and then stop because we thought the
FIFO was forever full.

In 2013 (1c60b24baa50) I added a loader tunable "hw.broken_txfifo"
which spinwaits for the FIFO TX rather than relying on the interrupt,
and enabled this in loader.conf in EC2 images.

A decade later, this workaround is almost certainly no longer needed in
EC2 -- most instances don't run Xen, and the bug was long since fixed
in Xen anyway -- but we've been holding on to the workaround "just in
case". Unfortunately, the spinwait behaviour is causing latency spikes
and triggering warnings from the ena(4) driver.

This commit removes the hw.broken_txfifo setting from loader.conf in
EC2 images, but leaves the loader tunable and associated code, since it
has been necessary in some other environments. (It seems that the TX
FIFO missing-interrupts bug has been independently written at least
three times!)

MFC after: 1 minute
Sponsored by: Amazon

Details

Provenance
cpercivaAuthored on May 14 2025, 11:36 PM
Parents
rGf6210541f9e3: lib/libmd: add optimised SHA1 implementations for aarch64
Branches
Unknown
Tags
Unknown
OSZAR »