Enable dom0less guests on ARM to use console_io hypercalls: - set input_allow = true for dom0less domains - update the in-code comment in console.c - prioritize the VUART check to retain the same behavior as today
Signed-off-by: Stefano Stabellini <[email protected]> --- xen/common/device-tree/dom0less-build.c | 2 ++ xen/drivers/char/console.c | 17 ++++++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tree/dom0less-build.c index 840d14419d..cb7026fa7e 100644 --- a/xen/common/device-tree/dom0less-build.c +++ b/xen/common/device-tree/dom0less-build.c @@ -829,6 +829,8 @@ static int __init construct_domU(struct kernel_info *kinfo, rangeset_destroy(kinfo->xen_reg_assigned); + d->console->input_allowed = true; + return rc; } diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 09354db2e0..26de872b8d 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -612,10 +612,18 @@ static void __serial_rx(char c) if ( !d ) return; - if ( is_hardware_domain(d) ) +#ifdef CONFIG_SBSA_VUART_CONSOLE + /* Prioritize vpl011 if enabled for this domain */ + if ( d->arch.vpl011.base_addr ) + { + /* Deliver input to the emulated UART. */ + rc = vpl011_rx_char_xen(d, c); + } + else +#endif { /* - * Deliver input to the hardware domain buffer, unless it is + * Deliver input to the focus domain buffer, unless it is * already full. */ nrspin_lock_irq(&console_lock); @@ -629,11 +637,6 @@ static void __serial_rx(char c) */ send_global_virq(VIRQ_CONSOLE); } -#ifdef CONFIG_SBSA_VUART_CONSOLE - else - /* Deliver input to the emulated UART. */ - rc = vpl011_rx_char_xen(d, c); -#endif if ( consoled_is_enabled() ) /* Deliver input to the PV shim console. */ -- 2.25.1
