Re: Linux 2.5.73

Greg KH (greg@kroah.com)
Sun, 22 Jun 2003 19:52:07 -0700


On Sun, Jun 22, 2003 at 04:58:19PM -0500, Alex Goddard wrote:
> On Sun, 22 Jun 2003, Alex Goddard wrote:
>
> > On Sun, 22 Jun 2003, Florin Iucha wrote:
> >
> > > drivers/built-in.o(.text+0x3106): In function `pci_remove_bus_device':
> > > : undefined reference to `pci_destroy_dev'
> > >
> > > pci_destroy_dev is defined under CONFIG_HOTPLUG and used outside.
> > >
> > > florin
> > >
> > > PS: I think changeset referenced in 10560659712069@kroah.com
> > > causes the problem.
> >
> > An attempt at a fix. It just moves pci_desroy_dev outside the #ifdef).
> > I have no idea if this is the correct way to fix this. It compiles okay.
>
> Ack. Dumb-assed mistake in that one. This one shouldn't die during
> compile if CONFIG_HOTPLUG is turned on. The other one defined
> pci_destroy_dev() twice because I'm dumb.
>
> It does compile (with and without hotplug) and boot.

Nah, the following patch from Ivan Kokshaysky is the better way to do
this. I'll send it off to Linus on Monday.

thanks,

greg k-h

# [PATCH] PCI: fix non-hotplug build

Current BK won't build when CONFIG_HOTPLUG is not set due to
undefined references to pci_destroy_dev in hotplug.c.
I think it makes sense to not compile hotplug.c in this case at all.
Also, this allows to get rid of several function which are unused
in non-hotplug kernel.

Tested on Alpha.

diff -Nru a/drivers/pci/Makefile b/drivers/pci/Makefile
--- a/drivers/pci/Makefile Sun Jun 22 19:48:43 2003
+++ b/drivers/pci/Makefile Sun Jun 22 19:48:43 2003
@@ -3,14 +3,15 @@
#

obj-y += access.o bus.o probe.o pci.o pool.o quirks.o \
- names.o pci-driver.o search.o hotplug.o \
- pci-sysfs.o
+ names.o pci-driver.o search.o pci-sysfs.o
obj-$(CONFIG_PM) += power.o
obj-$(CONFIG_PROC_FS) += proc.o

ifndef CONFIG_SPARC64
obj-$(CONFIG_PCI) += setup-res.o
endif
+
+obj-$(CONFIG_HOTPLUG) += hotplug.o

# Build the PCI Hotplug drivers if we were asked to
obj-$(CONFIG_HOTPLUG_PCI) += hotplug/
diff -Nru a/drivers/pci/hotplug.c b/drivers/pci/hotplug.c
--- a/drivers/pci/hotplug.c Sun Jun 22 19:48:43 2003
+++ b/drivers/pci/hotplug.c Sun Jun 22 19:48:43 2003
@@ -12,7 +12,6 @@

static void pci_free_resources(struct pci_dev *dev);

-#ifdef CONFIG_HOTPLUG
int pci_hotplug (struct device *dev, char **envp, int num_envp,
char *buffer, int buffer_size)
{
@@ -209,16 +208,6 @@
}
EXPORT_SYMBOL(pci_remove_device_safe);

-#else /* CONFIG_HOTPLUG */
-
-int pci_hotplug (struct device *dev, char **envp, int num_envp,
- char *buffer, int buffer_size)
-{
- return -ENODEV;
-}
-
-#endif /* CONFIG_HOTPLUG */
-
static void
pci_free_resources(struct pci_dev *dev)
{
@@ -283,7 +272,5 @@
}
}

-#ifdef CONFIG_HOTPLUG
EXPORT_SYMBOL(pci_remove_bus_device);
EXPORT_SYMBOL(pci_remove_behind_bridge);
-#endif
diff -Nru a/drivers/pci/pci-driver.c b/drivers/pci/pci-driver.c
--- a/drivers/pci/pci-driver.c Sun Jun 22 19:48:43 2003
+++ b/drivers/pci/pci-driver.c Sun Jun 22 19:48:43 2003
@@ -486,6 +486,14 @@
put_device(&dev->dev);
}

+#ifndef CONFIG_HOTPLUG
+int pci_hotplug (struct device *dev, char **envp, int num_envp,
+ char *buffer, int buffer_size)
+{
+ return -ENODEV;
+}
+#endif
+
struct bus_type pci_bus_type = {
.name = "pci",
.match = pci_bus_match,
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/