Re: [Patch v2 01/10] driver/edac/mpc85xx_edac: Fix compiling error

From: Bjorn Helgaas
Date: Thu Aug 04 2016 - 13:46:32 EST


On Thu, Aug 04, 2016 at 12:01:17PM +0200, Borislav Petkov wrote:
> On Thu, Jul 28, 2016 at 03:30:55PM -0700, York Sun wrote:
> > Two symbols are missing if mpc85xx_edac driver is compiled as module.
> >
> > Signed-off-by: York Sun <york.sun@xxxxxxx>
> > ---
> > Change log
> > v2: no change
> >
> > arch/powerpc/kernel/pci-common.c | 2 ++
> > 1 file changed, 2 insertions(+)
> >
> > diff --git a/arch/powerpc/kernel/pci-common.c b/arch/powerpc/kernel/pci-common.c
> > index 0f7a60f..86bc484 100644
> > --- a/arch/powerpc/kernel/pci-common.c
> > +++ b/arch/powerpc/kernel/pci-common.c
> > @@ -226,6 +226,7 @@ struct pci_controller* pci_find_hose_for_OF_device(struct device_node* node)
> > }
> > return NULL;
> > }
> > +EXPORT_SYMBOL(pci_find_hose_for_OF_device);
> >
> > /*
> > * Reads the interrupt pin to determine if interrupt is use by card.
> > @@ -1585,6 +1586,7 @@ int early_find_capability(struct pci_controller *hose, int bus, int devfn,
> > {
> > return pci_bus_find_capability(fake_pci_bus(hose, bus), devfn, cap);
> > }
> > +EXPORT_SYMBOL(early_find_capability);

arch/microblaze also contains a declaration and implementation of
early_find_capability(), but as far as I can see, this was just copied
from powerpc, and it is never used on microblaze. So just as a matter
of good code hygiene, please add a patch to remove it from microblaze.

mpc85xx looks like a weird mix of platform driver and PCI device
driver. If loaded as a module, it shouldn't need
early_find_capability(); regular pci_find_capability() (or just
pci_is_pcie()) should work fine by the time we can load modules.
Maybe it would even work by the time mpc85xx_pci_err_probe() runs when
built-in.

The whole early_find_capability() thing seems a little questionable,
too, but it's really only used in the FSL enumeration path, so maybe
there's something really special about that system.

Bjorn