u-boot appears to ignore existing BAR mappings and creates its own based
on its view of the memory map (hard-coded in the bhyve-arm64 u-boot
config). This can cause problems when it creates mappings on top of the
ones created by bhyve, since the MMIO implementation in bhyve doesn't
expect to handle that scenario. See
https://lists.freebsd.org/archives/freebsd-virtualization/2024-April/002103.html
for a detailed example.
Rather than making bhyve more complex to handle this case, simply add a
mode which lets bhyve avoid creating mappings at all. This might be a
bit simplistic: we could conceivably want different behaviour for
passthrough devices (not supported on arm64) vs emulated devices, or
perhaps the default should depend on the firmware. However, this works
for now and doesn't introduce much complexity.