linux/drivers/tty/hvc
Jason Andryuk d50dd728ce 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>
Link: https://patch.msgid.link/20260318235326.14568-1-jason.andryuk@amd.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2026-03-30 17:37:18 +02:00
..
hvc_console.c Convert 'alloc_flex' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hvc_console.h tty: hvc: convert to u8 and size_t 2023-12-08 12:02:37 +01:00
hvc_dcc.c tty: hvc: convert to u8 and size_t 2023-12-08 12:02:37 +01:00
hvc_irq.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
hvc_iucv.c tty: hvc_iucv: fix off-by-one in number of supported devices 2026-03-12 15:05:32 +01:00
hvc_opal.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hvc_riscv_sbi.c RISC-V Patches for the 6.8 Merge Window, Part 4 2024-01-20 11:06:04 -08:00
hvc_rtas.c tty: hvc: convert to u8 and size_t 2023-12-08 12:02:37 +01:00
hvc_udbg.c tty: hvc: convert to u8 and size_t 2023-12-08 12:02:37 +01:00
hvc_vio.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hvc_xen.c hvc/xen: Check console connection flag 2026-03-30 17:37:18 +02:00
hvcs.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
hvsi_lib.c tty: hvc: convert comma to semicolon 2024-09-03 10:47:56 +02:00
hvsi.c tty: hvc: convert counts to size_t 2023-08-11 21:12:47 +02:00
Kconfig tty: hvc: Don't enable the RISC-V SBI console by default 2024-02-19 09:43:33 +01:00
Makefile TTY/Serial driver patches for 4.17-rc1 2018-04-04 18:43:49 -07:00