Message ID | 20201019061453.32295-1-rdunlap@infradead.org (mailing list archive) |
---|---|
State | Rejected |
Headers | show |
Series | PCI: export pci_find_host_bridge() to fix MFD build error | expand |
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.
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.
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
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.
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.
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.
--- 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) {
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(+)