vmlinux BTF initialization can take time so it's best to do that outside of printk context; otherwise the first printk() using %pT will trigger BTF initialization. Signed-off-by: Alan Maguire <alan.maguire@xxxxxxxxxx> --- lib/vsprintf.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/vsprintf.c b/lib/vsprintf.c index c0d209d..8ac136a 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -3628,3 +3628,15 @@ int sscanf(const char *buf, const char *fmt, ...) return i; } EXPORT_SYMBOL(sscanf); + +/* + * Initialize vmlinux BTF as it may be used by printk()s and it's better + * to incur the cost of initialization outside of printk context. + */ +static int __init init_btf_vmlinux(void) +{ + (void) bpf_get_btf_vmlinux(); + + return 0; +} +late_initcall(init_btf_vmlinux); -- 1.8.3.1