HomeFreeBSD

bhyve: Move device model-independent UART code into a separate file

Description

bhyve: Move device model-independent UART code into a separate file

Currently bhyve implements a ns16550-compatible UART in uart_emul.c.
This file also contains generic code to manage RX FIFOs and to handle
reading from and writing to a TTY. bhyve instantiates UARTs to
implement COM devices (via pci_lpc.c) and PCI UART devices.

The arm64 port will bring with it a PL011 device model which is used as
the default console (i.e., no COM ports). To simplify its integration,
add a UART "backend" layer which lets UART device models allocate an RX
FIFO and interact with TTYs without duplicating code. In particular,
code in uart_backend.* is to be shared among device models, and the
namespace for uart_emul.* is changed to uart_ns16550_*.

This is based on andrew@'s work in
https://github.com/zxombie/freebsd/tree/bhyvearm64 but I've made a
number of changes, particularly with respect to naming and source code
organization.

No functional change intended.

Reviewed by: corvink, jhb
MFC after: 1 week
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D40993

(cherry picked from commit d1c5d0cfcc1733c243d87f20477b115db4cf24b6)

Details

Provenance
markjAuthored on Mar 21 2024, 4:20 AM
Reviewer
corvink
Differential Revision
D40993: bhyve: Move device model-independent UART code into a separate file
Parents
rGb78edde28052: libfdt: Make an internal FDT library available
Branches
Unknown
Tags
Unknown