Message ID | 20090407123707.GA18687@orion (mailing list archive) |
---|---|
State | Rejected, archived |
Headers | show |
On Tue, Apr 07, 2009 at 04:37:08PM +0400, Alexander Beregalov wrote: > Fix this build error: > drivers/built-in.o: In function `pci_init_capabilities': > drivers/pci/probe.c:989: undefined reference to `pcie_set_ecrc_checking' > drivers/built-in.o: In function `pci_setup': > drivers/pci/pci.c:2547: undefined reference to `pcie_ecrc_get_policy' > config PCIE_ECRC > bool "PCI Express ECRC support" > - depends on PCI > + depends on PCI && PCIEPORTBUS How does this part of the patch relate to the above description?
2009/4/7 Matthew Wilcox <matthew@wil.cx>: > On Tue, Apr 07, 2009 at 04:37:08PM +0400, Alexander Beregalov wrote: >> Fix this build error: >> drivers/built-in.o: In function `pci_init_capabilities': >> drivers/pci/probe.c:989: undefined reference to `pcie_set_ecrc_checking' >> drivers/built-in.o: In function `pci_setup': >> drivers/pci/pci.c:2547: undefined reference to `pcie_ecrc_get_policy' > >> Â config PCIE_ECRC >> Â Â Â bool "PCI Express ECRC support" >> - Â Â depends on PCI >> + Â Â depends on PCI && PCIEPORTBUS > > How does this part of the patch relate to the above description? Right, I agree. This should be another patch "PCIE_ECRC should depend on PCIE" When I found this problem PCIE_ECRC was set, but was not be built in. My problem needs both patches to be fixed, I will send them few hours later. -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Tue, 2009-04-07 at 16:37 +0400, Alexander Beregalov wrote: > Fix this build error: > drivers/built-in.o: In function `pci_init_capabilities': > drivers/pci/probe.c:989: undefined reference to `pcie_set_ecrc_checking' > drivers/built-in.o: In function `pci_setup': > drivers/pci/pci.c:2547: undefined reference to `pcie_ecrc_get_policy' > > Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> > --- > > drivers/pci/pci.c | 2 ++ > drivers/pci/pcie/Kconfig | 2 +- > drivers/pci/probe.c | 2 ++ > 3 files changed, 5 insertions(+), 1 deletions(-) > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > index f61b2cf..f1c393e 100644 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -2543,8 +2543,10 @@ static int __init pci_setup(char *str) > } else if (!strncmp(str, "resource_alignment=", 19)) { > pci_set_resource_alignment_param(str + 19, > strlen(str + 19)); > +#ifdef CONFIG_PCIE_ECRC > } else if (!strncmp(str, "ecrc=", 5)) { > pcie_ecrc_get_policy(str + 5); > +#endif > } else { > printk(KERN_ERR "PCI: Unknown option `%s'\n", > str); > diff --git a/drivers/pci/pcie/Kconfig b/drivers/pci/pcie/Kconfig > index a79e52b..9d0e727 100644 > --- a/drivers/pci/pcie/Kconfig > +++ b/drivers/pci/pcie/Kconfig > @@ -52,7 +52,7 @@ config PCIEASPM_DEBUG > # > config PCIE_ECRC > bool "PCI Express ECRC support" > - depends on PCI > + depends on PCI && PCIEPORTBUS We really only need this. There are empty functions in include/linux/pci.h to handle the case where PCIE_ECRC is not defined. The problem is that the code in drivers/pci/pcie is only compiled if PCIEPORTBUS is defined. This feature does not depend on any PCIEPORTBUS code. So either ecrc.c needs to be moved to drivers/pci or we need to not assume that drivers/pci/pcie is only for the portbus driver. > help > Enables PCI Express ECRC (transaction layer end-to-end CRC > checking) > diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c > index d5125a1..8d402a8 100644 > --- a/drivers/pci/probe.c > +++ b/drivers/pci/probe.c > @@ -985,8 +985,10 @@ static void pci_init_capabilities(struct pci_dev *dev) > /* Single Root I/O Virtualization */ > pci_iov_init(dev); > > +#ifdef CONFIG_PCIE_ECRC > /* PCIe end-to-end CRC checking */ > pcie_set_ecrc_checking(dev); > +#endif > } > > void pci_device_add(struct pci_dev *dev, struct pci_bus *bus) >
On Tue, 07 Apr 2009 17:33:49 +0000 Andrew Patterson <andrew.patterson@hp.com> wrote: > On Tue, 2009-04-07 at 16:37 +0400, Alexander Beregalov wrote: > > Fix this build error: > > drivers/built-in.o: In function `pci_init_capabilities': > > drivers/pci/probe.c:989: undefined reference to > > `pcie_set_ecrc_checking' drivers/built-in.o: In function > > `pci_setup': drivers/pci/pci.c:2547: undefined reference to > > `pcie_ecrc_get_policy' > > > > Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> > > --- > > > > drivers/pci/pci.c | 2 ++ > > drivers/pci/pcie/Kconfig | 2 +- > > drivers/pci/probe.c | 2 ++ > > 3 files changed, 5 insertions(+), 1 deletions(-) > > > > diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c > > index f61b2cf..f1c393e 100644 > > --- a/drivers/pci/pci.c > > +++ b/drivers/pci/pci.c > > @@ -2543,8 +2543,10 @@ static int __init pci_setup(char *str) > > } else if (!strncmp(str, > > "resource_alignment=", 19)) { pci_set_resource_alignment_param(str > > + 19, strlen(str + 19)); > > +#ifdef CONFIG_PCIE_ECRC > > } else if (!strncmp(str, "ecrc=", 5)) { > > pcie_ecrc_get_policy(str + 5); > > +#endif > > } else { > > printk(KERN_ERR "PCI: Unknown > > option `%s'\n", str); > > diff --git a/drivers/pci/pcie/Kconfig b/drivers/pci/pcie/Kconfig > > index a79e52b..9d0e727 100644 > > --- a/drivers/pci/pcie/Kconfig > > +++ b/drivers/pci/pcie/Kconfig > > @@ -52,7 +52,7 @@ config PCIEASPM_DEBUG > > # > > config PCIE_ECRC > > bool "PCI Express ECRC support" > > - depends on PCI > > + depends on PCI && PCIEPORTBUS > > We really only need this. There are empty functions in > include/linux/pci.h to handle the case where PCIE_ECRC is not defined. > The problem is that the code in drivers/pci/pcie is only compiled if > PCIEPORTBUS is defined. This feature does not depend on any > PCIEPORTBUS code. So either ecrc.c needs to be moved to drivers/pci > or we need to not assume that drivers/pci/pcie is only for the > portbus driver. > Btw I dropped this patch back out in light of Kenji-san's comments, so I expect any subsequent version to include a fix for the build issue. Thanks,
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index f61b2cf..f1c393e 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2543,8 +2543,10 @@ static int __init pci_setup(char *str) } else if (!strncmp(str, "resource_alignment=", 19)) { pci_set_resource_alignment_param(str + 19, strlen(str + 19)); +#ifdef CONFIG_PCIE_ECRC } else if (!strncmp(str, "ecrc=", 5)) { pcie_ecrc_get_policy(str + 5); +#endif } else { printk(KERN_ERR "PCI: Unknown option `%s'\n", str); diff --git a/drivers/pci/pcie/Kconfig b/drivers/pci/pcie/Kconfig index a79e52b..9d0e727 100644 --- a/drivers/pci/pcie/Kconfig +++ b/drivers/pci/pcie/Kconfig @@ -52,7 +52,7 @@ config PCIEASPM_DEBUG # config PCIE_ECRC bool "PCI Express ECRC support" - depends on PCI + depends on PCI && PCIEPORTBUS help Enables PCI Express ECRC (transaction layer end-to-end CRC checking) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index d5125a1..8d402a8 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -985,8 +985,10 @@ static void pci_init_capabilities(struct pci_dev *dev) /* Single Root I/O Virtualization */ pci_iov_init(dev); +#ifdef CONFIG_PCIE_ECRC /* PCIe end-to-end CRC checking */ pcie_set_ecrc_checking(dev); +#endif } void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
Fix this build error: drivers/built-in.o: In function `pci_init_capabilities': drivers/pci/probe.c:989: undefined reference to `pcie_set_ecrc_checking' drivers/built-in.o: In function `pci_setup': drivers/pci/pci.c:2547: undefined reference to `pcie_ecrc_get_policy' Signed-off-by: Alexander Beregalov <a.beregalov@gmail.com> --- drivers/pci/pci.c | 2 ++ drivers/pci/pcie/Kconfig | 2 +- drivers/pci/probe.c | 2 ++ 3 files changed, 5 insertions(+), 1 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html