Greg KH wrote:
>Hm, in looking at this, I know the majority of people who want
>CONFIG_HOTPLUG probably do not run with CONFIG_PCI_HOTPLUG as the
>hardware's still quite rare.  To force those people to keep around all
>of the PCI quirks functions and tables after init happens, is a bit
>cruel.  I wonder if it's time to start having different subsystems
>modify __devinit depending on their config variables.
	Are there PCI bridge cards that use all of those?  For
example, I thought that Triton was a series of Intel motherboard
chipsets for 586 processors.  Perhaps you only need to keep a
few of those routines.
	Jung-Ik: perhaps you could to an lspci and an "lspci -n" on
your machine when the bridge card is plugged in, which should provide
enough information to determine which routines you really need to
keep.
>Does this sound like a good idea?  If so, I can probably knock up
>something for the PCI code pretty easily (yes, I'll keep in mind CardBus
>stuff, not all hotplug pci is on servers...)
>
>__pci_devinit anyone?  :)
	I posted a patch to define __usbinit and cousins to the
linux-kernel mailing list about two and a half years ago.  The change
has been sitting in my <linux/init.h> since then.  I just did a string
replacement to make the matching pci calls.  Here an an untested patch
that shows both.
	I believe that, theoretically, all __dev{init,exit}{,func}
should only be __dev<bus>{init,exit}{,func}.
-- 
Adam J. Richter     __     ______________   575 Oroville Road
adam@yggdrasil.com     \ /                  Milpitas, California 95035
+1 408 309-6081         | g g d r a s i l   United States of America
                         "Free Software For The Rest Of Us."
--Nq2Wo0NMKNjxTN9z
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=diffs
--- linux-2.5.45/include/linux/init.h	2002-10-30 16:41:39.000000000 -0800
+++ linux/include/linux/init.h	2002-11-03 03:59:35.000000000 -0800
@@ -196,4 +196,33 @@
 #define __devexit_p(x) NULL
 #endif
 
+#ifdef CONFIG_PCI_HOTPLUG
+#define __pcidevinit
+#define __pcidevinitdata
+#define __pcidevexit
+#define __pcidevexitdata
+#else
+#define __pcidevinit		__init
+#define __pcidevinitdata	__initdata
+#define __pcidevexit		__exit
+#define __pcidevexitdata	__exitdata
+#endif
+
+/* Warning: without CONFIG_USB_HOTPLUG, you will also not support
+   hot plugging of USB *controllers*, even though they are usually PCI
+   devices, because they will generate USB hotplug events for their
+   attached devices when they (the controllers) are inserted or removed.
+*/
+#ifdef CONFIG_USB_HOTPLUG
+#define __usbdevinit
+#define __usbdevinitdata
+#define __usbdevexit
+#define __usbdevexitdata
+#else
+#define __usbdevinit		__init
+#define __usbdevinitdata	__initdata
+#define __usbdevexit		__exit
+#define __usbdevexitdata	__exitdata
+#endif
+
 #endif /* _LINUX_INIT_H */
--Nq2Wo0NMKNjxTN9z--
-
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/