Hannes Reinecke wrote:
Michael Matz wrote: [ .. ]
fact isn't going to change this principle. You still have a .initcall section (well, two of them, one for the built kernel, one for the module lump) which the kernel proper would iterate over very early (after determining existence of the second initcall table).
Which is exactly my thoughts.
The only valid argument currently against this is the #ifdef MODULE case. One would have to look at the individual cases, but I suspect the most of these are leftovers and should be cleaned up anyway.
As suspected. A quick glance at drivers/scsi revealed things like: drivers/scsi/gdth.c: #ifndef MODULE __setup("gdth=", option_setup); #endif drivers/scsi/gvp11.c: int gvp11_release(struct Scsi_Host *instance) { #ifdef MODULE DMA(instance)->CNTR = 0; release_mem_region(ZTWO_PADDR(instance->base), 256); free_irq(IRQ_AMIGA_PORTS, instance); wd33c93_release(); #endif return 1; } drivers/scsi/ibmmca.c: #if defined(MODULE) static char *boot_options = NULL; module_param(boot_options, charp, 0); module_param_array(io_port, int, NULL, 0); module_param_array(scsi_id, int, NULL, 0); MODULE_LICENSE("GPL"); #endif and my all-time favourite: drivers/scsi/BusLogic.c: #ifdef MODULE static struct pci_device_id BusLogic_pci_tbl[] __devinitdata = { { PCI_VENDOR_ID_BUSLOGIC, PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, { PCI_VENDOR_ID_BUSLOGIC, PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, { PCI_VENDOR_ID_BUSLOGIC, PCI_DEVICE_ID_BUSLOGIC_FLASHPOINT, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, { } }; #endif MODULE_DEVICE_TABLE(pci, BusLogic_pci_tbl); So it's about time to have that cleaned up anyway. Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg) -- To unsubscribe, e-mail: opensuse-kernel+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-kernel+help@opensuse.org