Re: [PATCH 2/4] dev_printk: Add and use dev_no_printk()

From: Andy Shevchenko
Date: Wed Feb 28 2024 - 12:39:36 EST


On Wed, Feb 28, 2024 at 03:00:03PM +0100, Geert Uytterhoeven wrote:
> When printk-indexing is enabled, each dev_printk() invocation emits a
> pi_entry structure. This is even true when the dev_printk() is
> protected by an always-false check, as is typically the case for debug
> messages: while the actual code to print the message is optimized out by
> the compiler, the pi_entry structure is still emitted.
>
> Avoid emitting pi_entry structures for unavailable dev_printk() kernel
> messages by:
> 1. Introducing a dev_no_printk() helper, mimicked after the existing
> no_printk() helper, which calls _dev_printk() instead of
> dev_printk(),
> 2. Replacing all "if (0) dev_printk(...)" constructs by calls to the
> new helper.
>
> This reduces the size of an arm64 defconfig kernel with
> CONFIG_PRINTK_INDEX=y by 957 KiB.

..

> +/*
> + * Dummy dev_printk for disabled debugging statements to use whilst maintaining

dev_printk()

> + * gcc's format checking.
> + */
> +#define dev_no_printk(level, dev, fmt, ...) \
> + ({ \
> + if (0) \
> + _dev_printk(level, dev, fmt, ##__VA_ARGS__); \
> + })

--
With Best Regards,
Andy Shevchenko