Messages in this thread | | | Date | Mon, 2 Oct 2000 14:35:16 -0700 (PDT) | From | Andre Hedrick <> | Subject | Re: PATCH 2.4.0.9.8: Fix IDE... |
| |
No kidding, it is scheduled for a RAPE and BURN for a redesign for 2.5. Until then do not make changes that cause problems with 'class' code ID's.
Cheers,
On Mon, 2 Oct 2000, Jeff Garzik wrote:
> Linus, > > Ug. Why do I feel like the IDE "driver" is code layered upon code > layered upon code, through the ages, with nary a cleanup in between? > > My previous patch was a fix, but (brown paper bag time) standard IDE > devices no longer called chipset init. People either had no IDE, or > were stuck in legacy mode. This fixes it. > > The IDE layer is in serious need of a cleanup though, IMHO... > > With this tested patch full functionality should be restored, without > reverting to the previously-crazy code found in test9-pre7 and before. > > Jeff > > > > > Index: drivers/ide/ide-pci.c > =================================================================== > RCS file: /usr/jgarzik/cvslan/linux_2_3/drivers/ide/ide-pci.c,v > retrieving revision 1.1.1.9 > diff -u -r1.1.1.9 ide-pci.c > --- drivers/ide/ide-pci.c 2000/10/02 08:32:44 1.1.1.9 > +++ drivers/ide/ide-pci.c 2000/10/02 18:28:10 > @@ -493,6 +493,7 @@ > byte tmp = 0; > ide_hwif_t *hwif, *mate = NULL; > unsigned int class_rev; > + int pci_class_ide; > > #ifdef CONFIG_IDEDMA_AUTO > autodma = 1; > @@ -538,7 +539,8 @@ > * Can we trust the reported IRQ? > */ > pciirq = dev->irq; > - if ((dev->class & ~(0xff)) != (PCI_CLASS_STORAGE_IDE << 8)) { > + pci_class_ide = ((dev->class >> 8) == PCI_CLASS_STORAGE_IDE); > + if (!pci_class_ide) { > printk("%s: not 100%% native mode: will probe irqs later\n", d->name); > /* > * This allows offboard ide-pci cards the enable a BIOS, > @@ -548,11 +550,17 @@ > */ > pciirq = (d->init_chipset) ? d->init_chipset(dev, d->name) : ide_special_settings(dev, d->name); > } else if (tried_config) { > - printk("%s: will probe irqs later\n", d->name); > + printk(KERN_INFO "%s: will probe irqs later\n", d->name); > pciirq = 0; > } else if (!pciirq) { > - printk("%s: bad irq (%d): will probe later\n", d->name, pciirq); > - pciirq = 0; > + if (pci_class_ide) { > + /* this is the normal path for most IDE devices */ > + if (d->init_chipset) > + pciirq = d->init_chipset(dev, d->name); > + else > + printk(KERN_INFO "%s standard IDE storage device detected\n", d->name); > + } else > + printk(KERN_WARNING "%s: bad irq (0): will probe later\n", d->name); > } else { > if (d->init_chipset) > (void) d->init_chipset(dev, d->name); >
Andre Hedrick The Linux ATA/IDE guy
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org Please read the FAQ at http://www.tux.org/lkml/
| |