From: Andrew Cooper Date: Thu, 23 Jan 2025 03:27:07 +0000 (+0000) Subject: xen/console: Optimise the parameter order of vprintk_common() X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=654bfa421f72efa9f9600063cb26ca9326cd264d;p=xen.git xen/console: Optimise the parameter order of vprintk_common() For ABIs which pass parameters by register (all cases that we compile Xen for), inserting new arguments on the left hand side involves shuffling all other parameters along by one register whereas appending a new argument doesn't involve shuffling of existing registers. Reorder vprintk_common()'s prefix parameter to being last. This is a marginal improvement on all architectures: Function old new delta vprintk 18 12 -6 x86 vprintk 32 24 -8 arm32 vprintk 52 48 -4 arm64 vprintk 52 48 -4 riscv64 vprintk 80 72 -8 ppc64 Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich --- diff --git a/xen/drivers/char/console.c b/xen/drivers/char/console.c index 7adf4e11fc..b6a8c71928 100644 --- a/xen/drivers/char/console.c +++ b/xen/drivers/char/console.c @@ -909,7 +909,7 @@ static void printk_start_of_line(const char *prefix) __putstr(tstr); } -static void vprintk_common(const char *prefix, const char *fmt, va_list args) +static void vprintk_common(const char *fmt, va_list args, const char *prefix) { struct vps { bool continued, do_print; @@ -963,7 +963,7 @@ static void vprintk_common(const char *prefix, const char *fmt, va_list args) void vprintk(const char *fmt, va_list args) { - vprintk_common("(XEN) ", fmt, args); + vprintk_common(fmt, args, "(XEN) "); } void printk(const char *fmt, ...) @@ -983,7 +983,7 @@ void guest_printk(const struct domain *d, const char *fmt, ...) snprintf(prefix, sizeof(prefix), "(d%d) ", d->domain_id); va_start(args, fmt); - vprintk_common(prefix, fmt, args); + vprintk_common(fmt, args, prefix); va_end(args); }