On Mon, Mar 20, 2023 at 08:31:36PM +0100, Andrew Lunn wrote: > On Mon, Mar 20, 2023 at 06:52:47PM +0100, Christian Marangi wrote: > > On Sun, Mar 19, 2023 at 11:49:02PM +0100, Andrew Lunn wrote: > > > > +#if IS_ENABLED(CONFIG_LEDS_CLASS) > > > > enum led_default_state led_init_default_state_get(struct fwnode_handle *fwnode); > > > > +#else > > > > +static inline enum led_default_state > > > > +led_init_default_state_get(struct fwnode_handle *fwnode) > > > > +{ > > > > + return LEDS_DEFSTATE_OFF; > > > > +} > > > > +#endif > > > > > > 0-day is telling me i have this wrong. The function is in led-core.c, > > > so this should be CONFIG_NEW_LEDS, not CONFIG_LEDS_CLASS. > > > > > > > Any idea why? NEW_LEDS just enable LEDS_CLASS selection so why we need > > to use that? Should not make a difference (in theory) > > 0-day came up with a configuration which resulted in NEW_LEDS enabled > but LEDS_CLASS disabled. That then resulted in multiple definitions of > led_init_default_state_get() when linking. > > I _guess_ this is because select is used, which is not mandatory. So > randconfig can turn off something which is enabled by select. > > I updated my tree, and so far 0-day has not complained, but it can > take a few days when it is busy. > BTW yes I repro the problem. Checked the makefile and led-core.c is compiled with NEW_LEDS and led-class is compiled with LEDS_CLASS. led_init_default_state_get is in led-core.c and this is the problem with using LEDS_CLASS instead of NEW_LEDS... But actually why we are putting led_init_default_state_get behind a config? IMHO we should compile it anyway. So my suggestion is to keep the LEDS_CLASS and just remove the part for led_init_default_state_get. Also why IS_ENABLED instead of a simple ifdef? (in leds.h there is a mix of both so I wonder if we should use one or the other) -- Ansuel