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 [EMAIL PROTECTED]
Please read the FAQ at http://www.tux.org/lkml/

Reply via email to