diff mbox series

PCI: export pci_find_host_bridge() to fix MFD build error

Message ID 20201019061453.32295-1-rdunlap@infradead.org
State New
Headers show
Series PCI: export pci_find_host_bridge() to fix MFD build error | expand

Commit Message

Randy Dunlap Oct. 19, 2020, 6:14 a.m. UTC
Fix a build error in drivers/mfd/ioc.o by exporting
pci_find_host_bridge().

ERROR: modpost: "pci_find_host_bridge" [drivers/mfd/ioc3.ko] undefined!

Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Cc: Paul Burton <paulburton@kernel.org>
Cc: linux-mips@vger.kernel.org
Cc: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org
---
 drivers/pci/host-bridge.c |    2 ++
 1 file changed, 2 insertions(+)

Comments

Christoph Hellwig Oct. 20, 2020, 8:02 a.m. UTC | #1
On Sun, Oct 18, 2020 at 11:14:53PM -0700, Randy Dunlap wrote:
> Fix a build error in drivers/mfd/ioc.o by exporting
> pci_find_host_bridge().
> 
> ERROR: modpost: "pci_find_host_bridge" [drivers/mfd/ioc3.ko] undefined!

I think the mfd code should be fixed to not depend on such an internal
symbol instead.
Randy Dunlap Oct. 20, 2020, 2:06 p.m. UTC | #2
On 10/20/20 1:02 AM, Christoph Hellwig wrote:
> On Sun, Oct 18, 2020 at 11:14:53PM -0700, Randy Dunlap wrote:
>> Fix a build error in drivers/mfd/ioc.o by exporting
>> pci_find_host_bridge().
>>
>> ERROR: modpost: "pci_find_host_bridge" [drivers/mfd/ioc3.ko] undefined!
> 
> I think the mfd code should be fixed to not depend on such an internal
> symbol instead.
> 

Thanks for commenting. and I am not surprised.

Adding Cc: for Thomas and Lee.
Randy Dunlap Oct. 20, 2020, 3:51 p.m. UTC | #3
On 10/20/20 7:06 AM, Randy Dunlap wrote:
> On 10/20/20 1:02 AM, Christoph Hellwig wrote:
>> On Sun, Oct 18, 2020 at 11:14:53PM -0700, Randy Dunlap wrote:
>>> Fix a build error in drivers/mfd/ioc.o by exporting
>>> pci_find_host_bridge().
>>>
>>> ERROR: modpost: "pci_find_host_bridge" [drivers/mfd/ioc3.ko] undefined!
>>
>> I think the mfd code should be fixed to not depend on such an internal
>> symbol instead.
>>
> 
> Thanks for commenting. and I am not surprised.
> 
> Adding Cc: for Thomas and Lee.

BTW, if someone wants to use the MFD ioc3 driver now,
without any source code patches, they can just build it in
(SGI_MFD_IOC3=y) instead of building it as a loadable module.

It builds successfully and can use pci_find_host_bridge().
pci_find_host_bridge() just isn't exported for loadable modules.

So this could be useful (PCI=y):

config SGI_MFD_IOC3
	tristate "SGI IOC3 core driver"
	depends on PCI=y && MIPS && 64BIT
	select MFD_CORE
Randy Dunlap Oct. 20, 2020, 4:04 p.m. UTC | #4
On 10/20/20 8:51 AM, Randy Dunlap wrote:
> On 10/20/20 7:06 AM, Randy Dunlap wrote:
>> On 10/20/20 1:02 AM, Christoph Hellwig wrote:
>>> On Sun, Oct 18, 2020 at 11:14:53PM -0700, Randy Dunlap wrote:
>>>> Fix a build error in drivers/mfd/ioc.o by exporting
>>>> pci_find_host_bridge().
>>>>
>>>> ERROR: modpost: "pci_find_host_bridge" [drivers/mfd/ioc3.ko] undefined!
>>>
>>> I think the mfd code should be fixed to not depend on such an internal
>>> symbol instead.
>>>
>>
>> Thanks for commenting. and I am not surprised.
>>
>> Adding Cc: for Thomas and Lee.
> 
> BTW, if someone wants to use the MFD ioc3 driver now,
> without any source code patches, they can just build it in
> (SGI_MFD_IOC3=y) instead of building it as a loadable module.
> 
> It builds successfully and can use pci_find_host_bridge().
> pci_find_host_bridge() just isn't exported for loadable modules.
> 
> So this could be useful (PCI=y):
> 
> config SGI_MFD_IOC3
> 	tristate "SGI IOC3 core driver"
> 	depends on PCI=y && MIPS && 64BIT
> 	select MFD_CORE

Wow. That's not correct at all. Need more coffee.

Just set SGI_MFD_IOC3=y and it will be fine.
Thomas Bogendoerfer Oct. 21, 2020, 10:08 a.m. UTC | #5
On Tue, Oct 20, 2020 at 09:02:19AM +0100, Christoph Hellwig wrote:
> On Sun, Oct 18, 2020 at 11:14:53PM -0700, Randy Dunlap wrote:
> > Fix a build error in drivers/mfd/ioc.o by exporting
> > pci_find_host_bridge().
> > 
> > ERROR: modpost: "pci_find_host_bridge" [drivers/mfd/ioc3.ko] undefined!
> 
> I think the mfd code should be fixed to not depend on such an internal
> symbol instead.

are you talking about the EXPORT_SYMBOL or the usage of
pci_find_host_bridge() outside of drivers/pci ? If the latter the
function is used in arm/arm64 code and pci controller code... so
I doesn't look like a pure internal symbol to me.

Thomas.
Christoph Hellwig Oct. 23, 2020, 6:47 a.m. UTC | #6
On Wed, Oct 21, 2020 at 12:08:45PM +0200, Thomas Bogendoerfer wrote:
> On Tue, Oct 20, 2020 at 09:02:19AM +0100, Christoph Hellwig wrote:
> > On Sun, Oct 18, 2020 at 11:14:53PM -0700, Randy Dunlap wrote:
> > > Fix a build error in drivers/mfd/ioc.o by exporting
> > > pci_find_host_bridge().
> > > 
> > > ERROR: modpost: "pci_find_host_bridge" [drivers/mfd/ioc3.ko] undefined!
> > 
> > I think the mfd code should be fixed to not depend on such an internal
> > symbol instead.
> 
> are you talking about the EXPORT_SYMBOL or the usage of
> pci_find_host_bridge() outside of drivers/pci ? If the latter the
> function is used in arm/arm64 code and pci controller code... so
> I doesn't look like a pure internal symbol to me.

All of those are built-in and related bits aren't exported at all, or
at best EXPORT_SYMBOL_GPL.  I think just not allowing the ioc3 mfd to
be built modular might be the easiest fix here.  Especially as for IP27
and co kernel it is everything but optional anyway.
diff mbox series

Patch

--- linux-next-20201016.orig/drivers/pci/host-bridge.c
+++ linux-next-20201016/drivers/pci/host-bridge.c
@@ -4,6 +4,7 @@ 
  */
 
 #include <linux/kernel.h>
+#include <linux/export.h>
 #include <linux/pci.h>
 #include <linux/module.h>
 
@@ -23,6 +24,7 @@  struct pci_host_bridge *pci_find_host_br
 
 	return to_pci_host_bridge(root_bus->bridge);
 }
+EXPORT_SYMBOL(pci_find_host_bridge);
 
 struct device *pci_get_host_bridge_device(struct pci_dev *dev)
 {