linux/include/xen/interface/io
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
..
9pfs.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
blkif.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
console.h hvc/xen: Check console connection flag 2026-04-10 11:06:17 +02:00
displif.h xen: update PV-device interface headers 2024-01-09 11:46:24 +01:00
fbif.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
kbdif.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
netif.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
pciif.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
protocols.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
pvcalls.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
ring.h xen: update PV-device interface headers 2024-01-09 11:46:24 +01:00
sndif.h xen: update PV-device interface headers 2024-01-09 11:46:24 +01:00
tpmif.h xen: Replace zero-length array with flexible-array member 2020-03-05 09:41:58 -06:00
usbif.h usb: Add Xen pvUSB protocol description 2021-12-13 14:58:31 +01:00
vscsiif.h xen: update vscsiif.h 2022-05-19 14:02:40 +02:00
xenbus.h xen: fix wrong SPDX headers of Xen related headers 2021-11-02 07:45:44 -05:00
xs_wire.h xen: sync xs_wire.h header with upstream xen 2022-05-19 14:44:05 +02:00