]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
hvc/xen: Check console connection flag
authorJason Andryuk <jason.andryuk@amd.com>
Wed, 18 Mar 2026 23:53:26 +0000 (19:53 -0400)
committerJuergen Gross <jgross@suse.com>
Fri, 10 Apr 2026 09:06:17 +0000 (11:06 +0200)
commitbdd5de3d9e2da45852d0d21313af3a02f0e0626e
tree2d89a91555d42649f0413b251556a62da5900cc2
parentfdfdd01e801f4e808cba27b3e78504cfeca610d9
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>
drivers/tty/hvc/hvc_xen.c
include/xen/interface/io/console.h