提交 bb732d7b 编写于 作者: A Alan Cox 提交者: Linus Torvalds

[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: NAlan Cox <alan@redhat.com>
Acked-by: NBartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Signed-off-by: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 b39b01ff
...@@ -442,7 +442,7 @@ static unsigned int __devinit init_chipset_svwks (struct pci_dev *dev, const cha ...@@ -442,7 +442,7 @@ static unsigned int __devinit init_chipset_svwks (struct pci_dev *dev, const cha
return (dev->irq) ? dev->irq : 0; 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; return 1;
} }
...@@ -454,7 +454,7 @@ static unsigned int __init ata66_svwks_svwks (ide_hwif_t *hwif) ...@@ -454,7 +454,7 @@ static unsigned int __init ata66_svwks_svwks (ide_hwif_t *hwif)
* Bit 14 clear = primary IDE channel does not have 80-pin cable. * Bit 14 clear = primary IDE channel does not have 80-pin cable.
* Bit 14 set = primary IDE channel has 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; struct pci_dev *dev = hwif->pci_dev;
if (dev->subsystem_vendor == PCI_VENDOR_ID_DELL && if (dev->subsystem_vendor == PCI_VENDOR_ID_DELL &&
...@@ -472,7 +472,7 @@ static unsigned int __init ata66_svwks_dell (ide_hwif_t *hwif) ...@@ -472,7 +472,7 @@ static unsigned int __init ata66_svwks_dell (ide_hwif_t *hwif)
* *
* WARNING: this only works on Alpine hardware! * 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; struct pci_dev *dev = hwif->pci_dev;
if (dev->subsystem_vendor == PCI_VENDOR_ID_SUN && if (dev->subsystem_vendor == PCI_VENDOR_ID_SUN &&
...@@ -483,7 +483,7 @@ static unsigned int __init ata66_svwks_cobalt (ide_hwif_t *hwif) ...@@ -483,7 +483,7 @@ static unsigned int __init ata66_svwks_cobalt (ide_hwif_t *hwif)
return 0; 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; struct pci_dev *dev = hwif->pci_dev;
...@@ -573,7 +573,7 @@ static int __devinit init_setup_svwks (struct pci_dev *dev, ide_pci_device_t *d) ...@@ -573,7 +573,7 @@ static int __devinit init_setup_svwks (struct pci_dev *dev, ide_pci_device_t *d)
return ide_setup_pci_device(dev, d); 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)) { if (!(PCI_FUNC(dev->devfn) & 1)) {
d->bootable = NEVER_BOARD; d->bootable = NEVER_BOARD;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册