From 92d668bf89c109b0fca60c018ef01d260e01f11a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Date: Mon, 20 Apr 2026 12:37:12 +0200 Subject: [PATCH] xen/uart: set a default baudrate if non specified neither found MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit If the user has set baudrate as "auto" (use whatever was configured) but Xen cannot find any set baudrate use a default fallback baudrate of 115200. Otherwise the console will very likely end up being non-functional, as further values are derived from the baudrate (like the transmit timeout), and using -1 will result in screwed parameters being derived from the baudrate. Signed-off-by: Roger Pau Monné Reviewed-by: Oleksii Kurochko master commit: 12e50da43d926cc5401c6ec1146cdcedaba23243 master date: 2026-04-10 14:30:50 +0200 --- xen/drivers/char/ns16550.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/xen/drivers/char/ns16550.c b/xen/drivers/char/ns16550.c index b443714c10..6089558aae 100644 --- a/xen/drivers/char/ns16550.c +++ b/xen/drivers/char/ns16550.c @@ -345,9 +345,16 @@ static void ns16550_setup_preirq(struct ns16550 *uart) if ( divisor ) uart->baud = uart->clock_hz / (divisor << 4); else + { + uart->baud = 115200; printk(XENLOG_ERR "Automatic baud rate determination was requested," - " but a baud rate was not set up\n"); + " but a baud rate was not set up\n" + "Setting baudrate to %u\n", uart->baud); + divisor = uart->clock_hz / (uart->baud << 4); + ns_write_reg(uart, UART_DLL, (uint8_t)divisor); + ns_write_reg(uart, UART_DLM, (uint8_t)(divisor >> 8)); + } } ns_write_reg(uart, UART_LCR, lcr);