On Wed, Feb 04, 2026 at 03:37:12PM -0800, Stefano Stabellini wrote: > 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]>
The code looks good, just one remark wrt prioritizing VUART check. > --- > xen/common/device-tree/dom0less-build.c | 2 ++ > xen/drivers/char/console.c | 16 ++++++++++------ > 2 files changed, 12 insertions(+), 6 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 d3ce925131..7f0c3d8376 100644 > --- a/xen/drivers/char/console.c > +++ b/xen/drivers/char/console.c > @@ -610,11 +610,20 @@ static void __serial_rx(char c) > if ( ACCESS_ONCE(console_rx) == 0 ) > return handle_keypress(c, false); > > + /* Includes an is_focus_domain() check. */ > d = console_get_domain(); > if ( !d ) > return; > > - if ( is_hardware_domain(d) ) Hardware domain on x86 may have an emulated UART (not in upstream, through, I need to send v8 for NS16550 series...). The patch which illustrates the idea: https://lore.kernel.org/xen-devel/[email protected]/ So this code (hopefully soon) will need adjustment again. I would update the code to something like: if ( is_hardware_domain(d) && !domain_has_vuart(d) ) { // handle hardware domain } #ifdef CONFIG_SBSA_VUART_CONSOLE else if ( domain_has_vuart(d) ) /* Deliver input to the emulated UART. */ rc = vpl011_rx_char_xen(d, c); #endif But domain_has_vuart() needs to be defined for all architectures (currently it is hidden in arch/arm/vuart.c). Or perhaps it is possible to postpone the change? What do you think? > +#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 > { > unsigned long flags; > > @@ -633,11 +642,6 @@ static void __serial_rx(char c) > */ > send_guest_domain_virq(d, 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 > >
