Re: [PATCH] [RFC] irqchip or mfd/tps65217: fix link error

From: Arnd Bergmann
Date: Wed Sep 14 2016 - 09:57:00 EST


On Wednesday, September 14, 2016 11:31:17 AM CEST Thomas Gleixner wrote:
> On Wed, 14 Sep 2016, Arnd Bergmann wrote:
> > Building tps65217 as a loadable module (as done in allmodconfig)
> > now fails after we started calling irq_set_parent():
> >
> > ERROR: "irq_set_parent" [drivers/mfd/tps65217.ko] undefined!
> >
> > The two obvious workarounds are either to force the driver
> > to be built-in, or to make that symbol exported to modules.
> >
> > As it's not clear to me if either of them would be acceptable,
> > I'm sending both of them here, please comment on which one
> > you want to have, or whether the driver should handle this
> > differently and not call irq_set_parent() at all.
>
> The question is why it needs to call that. But if it's justified, then I'm
> not opposed to export it.

Ok. I just noticed that I forgot to put the right people on Cc
that worked on the patch originally, fixed that now.

My other approach of making the symbol "bool" in the meantime has
caused another problem when CONFIG_I2C=m:

drivers/mfd/tps65217.o: In function `tps65217_init':
tps65217.c:(.init.text+0x8): undefined reference to `i2c_register_driver'
drivers/mfd/tps65217.o: In function `tps65217_probe':
tps65217.c:(.text.tps65217_probe+0x94): undefined reference to `__devm_regmap_init_i2c'

so the dependency would be "depends on I2C=y", getting increasingly
ugly. I'll let Marcin or Grygorii reply on why the call is needed,
we can then either export the symbol or change the code.

Arnd