hw/arm/virt: allow creation of a second NonSecure UART
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 10 Jun 2024 16:23:43 +0000 (17:23 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Fri, 21 Jun 2024 13:01:59 +0000 (14:01 +0100)
commite7100972f2df313d1e47a0714aed968991437e86
treeb9017cf090677ab7896d50221d9fad7f5ccbf374
parentfe22cba940d82e93818135c044afed4099056628
hw/arm/virt: allow creation of a second NonSecure UART

For some use-cases, it is helpful to have more than one UART
available to the guest.  If the second UART slot is not already used
for a TrustZone Secure-World-only UART, create it as a NonSecure UART
only when the user provides a serial backend (e.g.  via a second
-serial command line option).

This avoids problems where existing guest software only expects a
single UART, and gets confused by the second UART in the DTB.  The
major example of this is older EDK2 firmware, which will send the
GRUB bootloader output to UART1 and the guest serial output to UART0.
Users who want to use both UARTs with a guest setup including EDK2
are advised to update to EDK2 release edk2-stable202311 or newer.
(The prebuilt EDK2 blobs QEMU upstream provides are new enough.)
The relevant EDK2 changes are the ones described here:
https://bugzilla.tianocore.org/show_bug.cgi?id=4577

Inspired-by: Axel Heider <axel.heider@hensoldt.net>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Tested-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-id: 20240610162343.2131524-4-peter.maydell@linaro.org
docs/system/arm/virt.rst
hw/arm/virt-acpi-build.c
hw/arm/virt.c
include/hw/arm/virt.h