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

From: Marcin Niestroj
Date: Wed Sep 14 2016 - 11:30:09 EST


On 14.09.2016 15:56, Arnd Bergmann wrote:
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


I have added irq_set_parent() similarly as in drivers/base/regmap/regmap-irq.c

But to be honest I am not sure what it really does in case of tps65217.

--
Marcin Niestroj