There is no such thing as a fastpath with a printk() on it, making printk() an excellent heuristic for slowpaths.
Net delta is: add/remove: 595/2 grow/shrink: 56/762 up/down: 70879/-87331 (-16452) Total: Before=4085425, After=4068973, chg -0.40% because cold functions are optimised differently. For example, one function with a particularly large swing is: vmcs_dump_vcpu.cold - 2172 +2172 vmcs_dump_vcpu 7030 408 -6622 with a net delta of 7030 down to 4450. Signed-off-by: Andrew Cooper <[email protected]> --- CC: Jan Beulich <[email protected]> CC: Roger Pau Monné <[email protected]> CC: Wei Liu <[email protected]> CC: Stefano Stabellini <[email protected]> CC: Julien Grall <[email protected]> CC: Volodymyr Babchuk <[email protected]> CC: Bertrand Marquis <[email protected]> There are other functions which will be good heuristics to annotate, but we probaby want to collect .cold together in one location rather than having them spread out across all translation units. --- xen/include/xen/lib.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/include/xen/lib.h b/xen/include/xen/lib.h index 05ee1e18af6b..11ef287c1ed9 100644 --- a/xen/include/xen/lib.h +++ b/xen/include/xen/lib.h @@ -115,7 +115,7 @@ debugtrace_printk(const char *fmt, ...) {} /* Allows us to use '%p' as general-purpose machine-word format char. */ #define _p(_x) ((void *)(unsigned long)(_x)) extern void printk(const char *format, ...) - __attribute__ ((format (printf, 1, 2))); + __attribute__ ((format (printf, 1, 2), cold)); #define printk_once(fmt, args...) \ ({ \ -- 2.30.2
