|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH v5] xen/common: add keyhandler to show Xen command line
From: Denis Mukhin <dmukhin@xxxxxxxx> Currently there's no way to print Xen command line on the emergency console for debugging purposes when 'xl' is unavailable. Add new keyhander '?' to do command line printout. To allow built-in command printout, drop __initconst in 'opt_builtin_cmdline' declaration. Signed-off-by: Denis Mukhin <dmukhin@xxxxxxxx> --- Changes since v4: - promote opt_builtin_cmdline to __ro_after_init and use it for built-in command line reporting - account for empty saved_cmdline - adjust register_keyhandler() call - use '?' Changes since v3: - print built-in command line too - change handler to print command line only Changes since v2: - account for CONFIG_CMDLINE_OVERRIDE case v4: https://lore.kernel.org/xen-devel/20260811210956.3806559-2-dmukhin@xxxxxxxx/ CI: https://gitlab.com/xen-project/people/dmukhin/xen/-/pipelines/2756104826 --- xen/common/kernel.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/xen/common/kernel.c b/xen/common/kernel.c index d1bef9ac2b2b..1afda2a68f3e 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> @@ -35,7 +36,7 @@ boolean_param("dit", opt_dit); #endif static xen_commandline_t __ro_after_init saved_cmdline; -static const char __initconst opt_builtin_cmdline[] = CONFIG_CMDLINE; +static const char opt_builtin_cmdline[] = CONFIG_CMDLINE; char __ro_after_init xen_cap_info[128]; static int assign_integer_param(const struct kernel_param *param, uint64_t val) @@ -505,6 +506,35 @@ static int __init cf_check param_init(void) __initcall(param_init); #endif +static void cf_check show_cmdline(unsigned char key) +{ + const char *cmdline; + + printk("'%c' pressed -> showing hypervisor command line\n", key); + + if ( opt_builtin_cmdline[0] ) + printk("Built-in command line: %s\n", opt_builtin_cmdline); + + if ( IS_ENABLED(CONFIG_CMDLINE_OVERRIDE) ) + cmdline = "<ignored> (CONFIG_CMDLINE_OVERRIDE=y)"; + else if ( saved_cmdline[0] ) + cmdline = saved_cmdline; + else + cmdline = NULL; + + if ( cmdline ) + printk("Command line: %s\n", cmdline); +} + +static int __init cf_check misc_init(void) +{ + register_keyhandler('?', show_cmdline, + "show hypervisor command line", false); + + 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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |