PATCH: Fix crashes with hotplug serverworks

From: Alan Cox
Date: Mon Jun 20 2005 - 15:55:49 EST


You can't install the base kernel on a Stratus box because of the
overuse of __init. Affects both IDE layers identically. It isn't the
only misuser of __init so more review of other drivers (or fixing
ide_register code to know about hotplug v non-hotplug chipsets) would be
good.

Signed-off-by: Alan Cox <alan@xxxxxxxxxx>
Original issue found by Stratus and their patch was the inspiration for
this trivial one.

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.12/drivers/ide/pci/serverworks.c linux-2.6.12/drivers/ide/pci/serverworks.c
--- linux.vanilla-2.6.12/drivers/ide/pci/serverworks.c 2005-06-19 11:30:47.000000000 +0100
+++ linux-2.6.12/drivers/ide/pci/serverworks.c 2005-06-20 20:45:50.000000000 +0100
@@ -442,7 +442,7 @@
return (dev->irq) ? dev->irq : 0;
}

-static unsigned int __init ata66_svwks_svwks (ide_hwif_t *hwif)
+static unsigned int __devinit ata66_svwks_svwks (ide_hwif_t *hwif)
{
return 1;
}
@@ -454,7 +454,7 @@
* Bit 14 clear = primary IDE channel does not have 80-pin cable.
* Bit 14 set = primary IDE channel has 80-pin cable.
*/
-static unsigned int __init ata66_svwks_dell (ide_hwif_t *hwif)
+static unsigned int __devinit ata66_svwks_dell (ide_hwif_t *hwif)
{
struct pci_dev *dev = hwif->pci_dev;
if (dev->subsystem_vendor == PCI_VENDOR_ID_DELL &&
@@ -472,7 +472,7 @@
*
* WARNING: this only works on Alpine hardware!
*/
-static unsigned int __init ata66_svwks_cobalt (ide_hwif_t *hwif)
+static unsigned int __devinit ata66_svwks_cobalt (ide_hwif_t *hwif)
{
struct pci_dev *dev = hwif->pci_dev;
if (dev->subsystem_vendor == PCI_VENDOR_ID_SUN &&
@@ -483,7 +483,7 @@
return 0;
}

-static unsigned int __init ata66_svwks (ide_hwif_t *hwif)
+static unsigned int __devinit ata66_svwks (ide_hwif_t *hwif)
{
struct pci_dev *dev = hwif->pci_dev;

@@ -573,7 +573,7 @@
return ide_setup_pci_device(dev, d);
}

-static int __init init_setup_csb6 (struct pci_dev *dev, ide_pci_device_t *d)
+static int __devinit init_setup_csb6 (struct pci_dev *dev, ide_pci_device_t *d)
{
if (!(PCI_FUNC(dev->devfn) & 1)) {
d->bootable = NEVER_BOARD;

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/