linux/include/xen/interface
Jason Andryuk bdd5de3d9e hvc/xen: Check console connection flag
When the console out buffer is filled, __write_console() will return 0
as it cannot send any data.  domU_write_console() will then spin in
`while (len)` as len doesn't decrement until xenconsoled attaches.  This
would block a domU and nullify the parallelism of Hyperlaunch until dom0
userspace starts xenconsoled, which empties the buffer.

Xen 4.21 added a connection field to the xen console page.  This is set
to XENCONSOLE_DISCONNECTED (1) when a domain is built, and xenconsoled
will set it to XENCONSOLE_CONNECTED (0) when it connects.

Update the hvc_xen driver to check the field.  When the field is
disconnected, drop the write with -ENOTCONN.  We only drop the write
when the field is XENCONSOLE_DISCONNECTED (1) to try for maximum
compatibility.  The Xen toolstack has historically zero initialized the
console, so it should see XENCONSOLE_CONNECTED (0) by default.  If an
implemenation used uninitialized memory, only checking for
XENCONSOLE_DISCONNECTED could have the lowest chance of not connecting.

This lets the hyperlaunched domU boot without stalling.  Once dom0
starts xenconsoled, xl console can be used to access the domU's hvc0.

Paritally sync console.h from xen.git to bring in the new field.

Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Signed-off-by: Jason Andryuk <jason.andryuk@amd.com>
Signed-off-by: Juergen Gross <jgross@suse.com>
Message-ID: <20260318235326.14568-1-jason.andryuk@amd.com>
2026-04-10 11:06:17 +02:00
..
hvm xen: privcmd: Add support for ioeventfd 2023-10-16 15:18:33 +02:00
io hvc/xen: Check console connection flag 2026-04-10 11:06:17 +02:00
callback.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
elfnote.h xen: sync elfnote.h from xen tree 2024-09-25 14:15:04 +02:00
event_channel.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
features.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
grant_table.h xen: update grant_table.h 2022-05-19 14:21:34 +02:00
memory.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
nmi.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
physdev.h xen/pci: Add a function to reset device for xen 2024-09-25 09:54:40 +02:00
platform.h x86/PVH: obtain VGA console info in Dom0 2023-03-14 15:20:51 +01:00
sched.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
vcpu.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
version.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
xen-mca.h xen/mcelog: Add __nonstring annotations for unterminated strings 2025-03-14 11:15:16 +01:00
xen.h xen/x86: obtain upper 32 bits of video frame buffer address for Dom0 2022-01-06 08:55:34 +01:00
xenpmu.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00