Message ID | 20250214193615.1812503-1-dmukhin@ford.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v4] xen/console: print Xen version via keyhandler | expand |
On 14.02.2025 21:05, dmkhn@proton.me wrote: > --- a/xen/common/version.c > +++ b/xen/common/version.c > @@ -210,9 +210,28 @@ void __init xen_build_init(void) > } > } > #endif /* CONFIG_X86 */ > - if ( !rc ) > - printk(XENLOG_INFO "build-id: %*phN\n", build_id_len, build_id_p); > } > + > +void print_version(void) > +{ > + printk("Xen version %d.%d%s (%s@%s) (%s) %s %s\n", > + xen_major_version(), xen_minor_version(), xen_extra_version(), > + xen_compile_by(), xen_compile_domain(), xen_compiler(), > + xen_build_info(), xen_compile_date()); > + > + printk("Latest ChangeSet: %s\n", xen_changeset()); > +} > + > +void print_build_id(void) > +{ > + /* > + * NB: build_id_p may be NULL if XEN_HAS_BUILD_ID=n. > + * Do not print empty build-id. > + */ > + if ( build_id_p ) > + printk("build-id: %*phN\n", build_id_len, build_id_p); > +} In my reply to v3 I specifically suggested to use build_id_len in the if(). Why did you choose to use build_id_p instead? Yes, if all works correctly both should be (non-)zero/NULL at the same time, but please also consider the case of things not working correctly. When len is zero, there's nothing there, no matter what the pointer. When len is non-zero and the pointer is NULL, it would be quite nice to have a trace thereof in the log. Preferably with the adjustment (which I'd be happy to make while committing) Reviewed-by: Jan Beulich <jbeulich@suse.com> Jan
diff --git a/xen/common/keyhandler.c b/xen/common/keyhandler.c index 6ea54838d4..0bb842ec00 100644 --- a/xen/common/keyhandler.c +++ b/xen/common/keyhandler.c @@ -129,6 +129,10 @@ static void cf_check show_handlers(unsigned char key) unsigned int i; printk("'%c' pressed -> showing installed handlers\n", key); + + print_version(); + print_build_id(); + for ( i = 0; i < ARRAY_SIZE(key_table); i++ ) if ( key_table[i].fn ) printk(" key '%c' (ascii '%02x') => %s\n", diff --git a/xen/common/version.c b/xen/common/version.c index bc3714b45f..ca1f262a12 100644 --- a/xen/common/version.c +++ b/xen/common/version.c @@ -210,9 +210,28 @@ void __init xen_build_init(void) } } #endif /* CONFIG_X86 */ - if ( !rc ) - printk(XENLOG_INFO "build-id: %*phN\n", build_id_len, build_id_p); } + +void print_version(void) +{ + printk("Xen version %d.%d%s (%s@%s) (%s) %s %s\n", + xen_major_version(), xen_minor_version(), xen_extra_version(), + xen_compile_by(), xen_compile_domain(), xen_compiler(), + xen_build_info(), xen_compile_date()); + + printk("Latest ChangeSet: %s\n", xen_changeset()); +} + +void print_build_id(void) +{ + /* + * NB: build_id_p may be NULL if XEN_HAS_BUILD_ID=n. + * Do not print empty build-id. + */ + if ( build_id_p ) + printk("build-id: %*phN\n", build_id_len, build_id_p); +} + #endif /* BUILD_ID */ /* * Local variables: diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 07b14b7b3f..2e23910dfa 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -1020,14 +1020,12 @@ void __init console_init_preirq(void) nrspin_lock(&console_lock); __putstr(xen_banner()); nrspin_unlock(&console_lock); - printk("Xen version %d.%d%s (%s@%s) (%s) %s %s\n", - xen_major_version(), xen_minor_version(), xen_extra_version(), - xen_compile_by(), xen_compile_domain(), xen_compiler(), - xen_build_info(), xen_compile_date()); - printk("Latest ChangeSet: %s\n", xen_changeset()); + + print_version(); /* Locate and print the buildid, if applicable. */ xen_build_init(); + print_build_id(); if ( opt_sync_console ) { diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h index 81b722ea3e..686899a63e 100644 --- a/xen/include/xen/lib.h +++ b/xen/include/xen/lib.h @@ -47,6 +47,9 @@ int parse_signed_integer(const char *name, const char *s, const char *e, */ int cmdline_strcmp(const char *frag, const char *name); +void print_version(void); +void print_build_id(void); + #ifdef CONFIG_DEBUG_TRACE extern void debugtrace_dump(void); extern void debugtrace_printk(const char *fmt, ...)
Add Xen version printout to 'h' keyhandler output. That is useful for debugging systems that have been left intact for a long time. Signed-off-by: Denis Mukhin <dmukhin@ford.com> --- Changes since v3: - Dropped assertions for build_id_p --- xen/common/keyhandler.c | 4 ++++ xen/common/version.c | 23 +++++++++++++++++++++-- xen/drivers/char/console.c | 8 +++----- xen/include/xen/lib.h | 3 +++ 4 files changed, 31 insertions(+), 7 deletions(-)