[U-Boot] [PATCH v2 3/5] Introduce CONFIG_ENABLE_BUG_CHECKS to disable BUG{_ON} by default

Masahiro Yamada yamada.masahiro at socionext.com
Thu Dec 14 21:35:19 UTC 2017


2017-12-12 22:47 GMT+09:00 Tom Rini <trini at konsulko.com>:
> On Tue, Dec 12, 2017 at 10:06:19AM +0100, Lothar Waßmann wrote:
>> Hi,
>>
>> On Mon,  4 Dec 2017 12:37:02 +0900 Masahiro Yamada wrote:
>> > BUG() and BUG_ON() are generally used to test a condition that should
>> > never happen.  If it does, it is a bug.
>> >
>> > Linux always enables them, but doing so in U-Boot causes image size
>> > problems on some platforms.  Introduce CONFIG_ENABLE_BUG_CHECKS to
>> > make them no-op by default.  Platforms without image size constraint
>> > are free to enable this option to catch bugs easily.
>> >
>> > Likewise, silence WARN_ON() unless this option is enabled.
>> >
>> > Suggested-by: Tom Rini <trini at konsulko.com>
>> > Signed-off-by: Masahiro Yamada <yamada.masahiro at socionext.com>
>> > ---
>> >
>> > Changes in v2:
>> >   - Newly added
>> >
>> >  include/linux/bug.h | 9 ++++++++-
>> >  lib/Kconfig         | 7 +++++++
>> >  2 files changed, 15 insertions(+), 1 deletion(-)
>> >
>> > diff --git a/include/linux/bug.h b/include/linux/bug.h
>> > index f07bb71..ac1c7de 100644
>> > --- a/include/linux/bug.h
>> > +++ b/include/linux/bug.h
>> > @@ -6,17 +6,24 @@
>> >  #include <linux/compiler.h>
>> >  #include <linux/printk.h>
>> >
>> > +#ifdef CONFIG_ENABLE_BUG_CHECKS
>> >  #define BUG() do { \
>> >     printk("BUG at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
>> >     panic("BUG!"); \
>> >  } while (0)
>> > +#define __WARN()   \
>> > +   printk("WARNING at %s:%d/%s()!\n", __FILE__, __LINE__, __func__)
>> > +#else
>> > +#define BUG()
>> > +#define __WARN()
>> > +#endif
>> >
>> >  #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
>> >
>> >  #define WARN_ON(condition) ({                                              \
>> >     int __ret_warn_on = !!(condition);                              \
>> >     if (unlikely(__ret_warn_on))                                    \
>> > -           printk("WARNING at %s:%d/%s()!\n", __FILE__, __LINE__, __func__); \
>> > +           __WARN();                                               \
>> >     unlikely(__ret_warn_on);                                        \
>> >  })
>> >
>> > diff --git a/lib/Kconfig b/lib/Kconfig
>> > index 00ac650..36b1b3b 100644
>> > --- a/lib/Kconfig
>> > +++ b/lib/Kconfig
>> > @@ -45,6 +45,13 @@ config USE_TINY_PRINTF
>> >
>> >       The supported format specifiers are %c, %s, %u/%d and %x.
>> >
>> > +config ENABLE_BUG_CHECKS
>> > +   bool "Enable BUG/BUG_ON() checks and WARN_ON() logs"
>> > +   help
>> This should be 'default y' IMO to keep the current behaviour for all
>> existing platforms.
>
> I brought this up to Masahiro privately as I had been testing the
> series, and with ENABLE_BUG_CHECKS=n we get a warning over in the USB
> code, which in turn got me thinking harder.  We do want to be able to
> disable this, for space reasons, when needed, but it should default to
> enabled (even if this increases the overall size).
>
> --
> Tom


I will flip the default in v3.
Tom privately mentioned this series would be postponed by the next MW.
So, I will do v3 when he is ready to receive it.



-- 
Best Regards
Masahiro Yamada


More information about the U-Boot mailing list