On Fri, Aug 07, 2026 at 05:44:41PM -0700, Stefano Stabellini wrote:
> On Mon, 3 Aug 2026, [email protected] wrote:
> > From: Denis Mukhin <[email protected]>
> >
> > Currently there's no way to print Xen command line on the emergency
> > console for debugging purposes (e.g. 'xl' is not available in dom0).
> >
> > Add new keyhander 'X' to do command line printout.
> >
> > Signed-off-by: Denis Mukhin <[email protected]>
> > ---
> > v1:
> > https://lore.kernel.org/xen-devel/[email protected]/
> >
> > Changes since v1:
> > - moved implementation into kernel.c
> > ---
> > xen/common/kernel.c | 16 ++++++++++++++++
> > 1 file changed, 16 insertions(+)
> >
> > diff --git a/xen/common/kernel.c b/xen/common/kernel.c
> > index d1bef9ac2b2b..9f334c92e3ab 100644
> > --- a/xen/common/kernel.c
> > +++ b/xen/common/kernel.c
> > @@ -5,6 +5,7 @@
> > */
> >
> > #include <xen/init.h>
> > +#include <xen/keyhandler.h>
> > #include <xen/lib.h>
> > #include <xen/errno.h>
> > #include <xen/param.h>
> > @@ -505,6 +506,21 @@ static int __init cf_check param_init(void)
> > __initcall(param_init);
> > #endif
> >
> > +static void cf_check show_hypervisor_info(unsigned char key)
> > +{
> > + printk("'%c' pressed -> showing hypervisor information\n", key);
> > + printk("Command line: %s\n", saved_cmdline);
>
> if CONFIG_CMDLINE_OVERRIDE is defined, saved_cmdline is empty. We could
> at least do this:
>
> #ifdef CONFIG_CMDLINE_OVERRIDE
> printk("Bootloader command line ignored (CONFIG_CMDLINE_OVERRIDE=y)\n");
> #else
> printk("Command line: %s\n", saved_cmdline);
> #endif
Actually, CONFIG_CMDLINE can set the built-in command line which can be
non-empty.
Perhaps, something like this:
printk("Command line (built-in): %s\n", opt_builtin_cmdline);
#ifndef CONFIG_CMDLINE_OVERRIDE
printk("Command line: %s\n", saved_cmdline);
#endif
What do you think?
>
> Other than that it is fine for me
>
>
>
> > +}
> > +
> > +static int __init cf_check misc_init(void)
> > +{
> > + register_keyhandler('X', show_hypervisor_info,
> > + "show hypervisor information", 0);
> > +
> > + return 0;
> > +}
> > +__initcall(misc_init);
> > +
> > static long xenver_varbuf_op(int cmd, XEN_GUEST_HANDLE_PARAM(void) arg)
> > {
> > struct xen_varbuf user_str;
> > --
> > 2.54.0
> >
>