xen_preinit() runs early and changes DebugOutputPort. qemu_preinit() runs soon after. inb on DebugOutputPort doesn't work on Xen, so the check will always fail and DebugOutputPort will be cleared to 0 disabling output.
Quick exit the function when running on Xen to preserve the modified DebugOutputPort.
Signed-off-by: Jason Andryuk jandryuk@gmail.com
v2 Re-word comment --- src/hw/serialio.c | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/src/hw/serialio.c b/src/hw/serialio.c index 3163344..fa663b9 100644 --- a/src/hw/serialio.c +++ b/src/hw/serialio.c @@ -106,6 +106,10 @@ u16 DebugOutputPort VARFSEG = 0x402; void qemu_debug_preinit(void) { + /* Xen doesn't support checking if debug output is active. */ + if (runningOnXen()) + return; + /* Check if the QEMU debug output port is active */ if (CONFIG_DEBUG_IO && inb(GET_GLOBAL(DebugOutputPort)) != QEMU_DEBUGCON_READBACK)
On Wed, Jun 24, 2020 at 10:25:13AM -0400, Jason Andryuk wrote:
xen_preinit() runs early and changes DebugOutputPort. qemu_preinit() runs soon after. inb on DebugOutputPort doesn't work on Xen, so the check will always fail and DebugOutputPort will be cleared to 0 disabling output.
Quick exit the function when running on Xen to preserve the modified DebugOutputPort.
Thanks - I committed this change.
-Kevin
On Wed, Jun 24, 2020 at 11:46 AM Kevin O'Connor kevin@koconnor.net wrote:
On Wed, Jun 24, 2020 at 10:25:13AM -0400, Jason Andryuk wrote:
xen_preinit() runs early and changes DebugOutputPort. qemu_preinit() runs soon after. inb on DebugOutputPort doesn't work on Xen, so the check will always fail and DebugOutputPort will be cleared to 0 disabling output.
Quick exit the function when running on Xen to preserve the modified DebugOutputPort.
Thanks - I committed this change.
Thank you!
-Jason