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/