diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2005-06-27 18:24:29 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-06-27 20:36:40 -0400 |
commit | bb732d7b3699afe8859f27e93000860bb4103cca (patch) | |
tree | e6ed8793f5065b34490e80d8efbc5ceac43ae712 | |
parent | b39b01ffb75e14ed76510e4229ffb575007df0fb (diff) |
[PATCH] ide: fix crashes with hotplug serverworks
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.
Original issue found by Stratus and their patch was the inspiration for this
trivial one.
Signed-off-by: Alan Cox <alan@redhat.com>
Acked-by: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/ide/pci/serverworks.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/drivers/ide/pci/serverworks.c b/drivers/ide/pci/serverworks.c index 82a1103b2413..c6f5fa4b4ca6 100644 --- a/drivers/ide/pci/serverworks.c +++ b/drivers/ide/pci/serverworks.c | |||
@@ -442,7 +442,7 @@ static unsigned int __devinit init_chipset_svwks (struct pci_dev *dev, const cha | |||
442 | return (dev->irq) ? dev->irq : 0; | 442 | return (dev->irq) ? dev->irq : 0; |
443 | } | 443 | } |
444 | 444 | ||
445 | static unsigned int __init ata66_svwks_svwks (ide_hwif_t *hwif) | 445 | static unsigned int __devinit ata66_svwks_svwks (ide_hwif_t *hwif) |
446 | { | 446 | { |
447 | return 1; | 447 | return 1; |
448 | } | 448 | } |
@@ -454,7 +454,7 @@ static unsigned int __init ata66_svwks_svwks (ide_hwif_t *hwif) | |||
454 | * Bit 14 clear = primary IDE channel does not have 80-pin cable. | 454 | * Bit 14 clear = primary IDE channel does not have 80-pin cable. |
455 | * Bit 14 set = primary IDE channel has 80-pin cable. | 455 | * Bit 14 set = primary IDE channel has 80-pin cable. |
456 | */ | 456 | */ |
457 | static unsigned int __init ata66_svwks_dell (ide_hwif_t *hwif) | 457 | static unsigned int __devinit ata66_svwks_dell (ide_hwif_t *hwif) |
458 | { | 458 | { |
459 | struct pci_dev *dev = hwif->pci_dev; | 459 | struct pci_dev *dev = hwif->pci_dev; |
460 | if (dev->subsystem_vendor == PCI_VENDOR_ID_DELL && | 460 | if (dev->subsystem_vendor == PCI_VENDOR_ID_DELL && |
@@ -472,7 +472,7 @@ static unsigned int __init ata66_svwks_dell (ide_hwif_t *hwif) | |||
472 | * | 472 | * |
473 | * WARNING: this only works on Alpine hardware! | 473 | * WARNING: this only works on Alpine hardware! |
474 | */ | 474 | */ |
475 | static unsigned int __init ata66_svwks_cobalt (ide_hwif_t *hwif) | 475 | static unsigned int __devinit ata66_svwks_cobalt (ide_hwif_t *hwif) |
476 | { | 476 | { |
477 | struct pci_dev *dev = hwif->pci_dev; | 477 | struct pci_dev *dev = hwif->pci_dev; |
478 | if (dev->subsystem_vendor == PCI_VENDOR_ID_SUN && | 478 | if (dev->subsystem_vendor == PCI_VENDOR_ID_SUN && |
@@ -483,7 +483,7 @@ static unsigned int __init ata66_svwks_cobalt (ide_hwif_t *hwif) | |||
483 | return 0; | 483 | return 0; |
484 | } | 484 | } |
485 | 485 | ||
486 | static unsigned int __init ata66_svwks (ide_hwif_t *hwif) | 486 | static unsigned int __devinit ata66_svwks (ide_hwif_t *hwif) |
487 | { | 487 | { |
488 | struct pci_dev *dev = hwif->pci_dev; | 488 | struct pci_dev *dev = hwif->pci_dev; |
489 | 489 | ||
@@ -573,7 +573,7 @@ static int __devinit init_setup_svwks (struct pci_dev *dev, ide_pci_device_t *d) | |||
573 | return ide_setup_pci_device(dev, d); | 573 | return ide_setup_pci_device(dev, d); |
574 | } | 574 | } |
575 | 575 | ||
576 | static int __init init_setup_csb6 (struct pci_dev *dev, ide_pci_device_t *d) | 576 | static int __devinit init_setup_csb6 (struct pci_dev *dev, ide_pci_device_t *d) |
577 | { | 577 | { |
578 | if (!(PCI_FUNC(dev->devfn) & 1)) { | 578 | if (!(PCI_FUNC(dev->devfn) & 1)) { |
579 | d->bootable = NEVER_BOARD; | 579 | d->bootable = NEVER_BOARD; |