Hi, On Thursday 25 October 2007, Ralf Baechle wrote: > CC drivers/ide/pci/generic.o > drivers/ide/pci/generic.c:52: error: __setup_str_ide_generic_all_on causes a > +section type conflict > > This sort of build error is becoming a regular issue. Either all or non > of the elements that go into a particular section of a compilation unit > need to be const. Or an error may result such as in this case if > CONFIG_HOTPLUG is unset. > > Maybe worth a check in checkpatch.pl - but certainly gcc's interolerance > is also being less than helpful here. > > --- > drivers/ide/pci/generic.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/ide/pci/generic.c b/drivers/ide/pci/generic.c > index f44d708..0047684 100644 > --- a/drivers/ide/pci/generic.c > +++ b/drivers/ide/pci/generic.c > @@ -67,7 +67,7 @@ MODULE_PARM_DESC(all_generic_ide, "IDE generic will claim all unknown PCI IDE st > .udma_mask = ATA_UDMA6, \ > } > > -static const struct ide_port_info generic_chipsets[] __devinitdata = { > +static struct ide_port_info generic_chipsets[] __devinitdata = { > /* 0 */ DECLARE_GENERIC_PCI_DEV("Unknown", 0), > > { /* 1 */ I would prefer to not remove const from generic_chipsets[] so: [PATCH] drivers/ide/pci/generic: fix build for CONFIG_HOTPLUG=n It turns out that const and __{dev}initdata cannot be mixed currently and that generic IDE PCI host driver is also affected by the same issue: On Thursday 25 October 2007, Ralf Baechle wrote: > CC drivers/ide/pci/generic.o > drivers/ide/pci/generic.c:52: error: __setup_str_ide_generic_all_on causes a > +section type conflict [ Also reported by Martijn Uffing <mp3project@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>. ] This patch workarounds the problem in a bit hackish way but without removing const from generic_chipsets[] (it adds const to __setup() so __setup_str_ide_generic_all becomes const). Now all __{dev}initdata data in generic IDE PCI host driver are read-only so it builds again (driver's .init.data section gets marked as READONLY). Cc: Martijn Uffing <mp3project@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx> --- drivers/ide/pci/generic.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Index: b/drivers/ide/pci/generic.c =================================================================== --- a/drivers/ide/pci/generic.c +++ b/drivers/ide/pci/generic.c @@ -49,7 +49,7 @@ static int __init ide_generic_all_on(cha printk(KERN_INFO "IDE generic will claim all unknown PCI IDE storage controllers.\n"); return 1; } -__setup("all-generic-ide", ide_generic_all_on); +const __setup("all-generic-ide", ide_generic_all_on); #endif module_param_named(all_generic_ide, ide_generic_all, bool, 0444); MODULE_PARM_DESC(all_generic_ide, "IDE generic will claim all unknown PCI IDE storage controllers.");