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

From: Bjorn Helgaas <[email-masked]>
Date: Thu, 4 Aug 2016 12:45:42 -0500

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 <[email-masked]>
> > ---
> > 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