Messages in this thread | | | Date | Wed, 05 Jul 2006 17:08:09 +0200 | From | Takashi Iwai <> | Subject | Re: [PATCH] hisax fix usage of __init* |
| |
At Wed, 05 Jul 2006 13:37:38 +0200, Arjan van de Ven wrote: > > On Wed, 2006-07-05 at 13:23 +0200, Karsten Keil wrote: > > diff --git a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c > > index 5333be5..e103503 100644 > > --- a/drivers/isdn/hisax/config.c > > +++ b/drivers/isdn/hisax/config.c > > @@ -1875,7 +1875,7 @@ static void EChannel_proc_rcv(struct his > > #ifdef CONFIG_PCI > > #include <linux/pci.h> > > > > -static struct pci_device_id hisax_pci_tbl[] __initdata = { > > +static struct pci_device_id hisax_pci_tbl[] __devinitdata = { > > #ifdef CONFIG_HISAX_FRITZPCI > > {PCI_VENDOR_ID_AVM, PCI_DEVICE_ID_AVM_A1, > > PCI_ANY_ID, PCI_ANY_ID}, > > #endif > > diff --git a/drivers > > I think this bit is still buggy; afaik pci_device_id tables should not > be of any kind of __init at all... CC'ing Greg just to make sure I'm not > talking rubbish
I've been also debugging this since Andrew pointed me about a similar bug (sound/pci/maestro3.c). I actually got section mismatch errors when pci id table is defined with __devinitdata tag together with CONFIG_HOTPLUG=n, either at compile time or at link time. So, my conclusion is that no tags should be used for pci id table.
Interestingly, Documentation/pci.txt mentions that __devinitdata _should_ be used:
> Tips: > The module_init()/module_exit() functions (and all initialization > functions called only from these) should be marked __init/exit. > The struct pci_driver shouldn't be marked with any of these tags. > The ID table array should be marked __devinitdata.
Takashi - 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/
| |