I can not help if you have a device that not compliant to the rules.
ATA-2 is OBSOLETED thus we forced (the NCITS Standards Body) the CFA
people to move to ATA-4 or ATA-5.

That device is enabling with its ablity to assert its device->host
interrupt regardless of the HOST...that is a bad device.

Send me the manufacturer and I will tear them apart for making a
non-compliant device.  Then figure out a way to de-assert the like
regardless if it exists without hang the rest of the driver.

Cheers,


On Tue, 26 Jun 2001, Gunther Mayer wrote:

> Hi,
> 
> this patch fixes the hard hang (no SYSRQ) on inserting
> any PCMCIA ATA/IDE card (e.g. CompactFlash, Clik40 etc)
> to a PCI-Cardbus bridge add-in card.
> 
> Thanks David for his valuable explanation about what happens:
> ide-probe registers it's irq handler too late! After it
> triggers the interrupt during the probe the (shared) irq
> loops forever, effectively wedging the machine completely.
> 
> Regards, Gunther
> 
> 
> 
> --- linux245.orig/drivers/ide/ide-cs.c  Fri Feb  9 20:40:02 2001
> +++ linux/drivers/ide/ide-cs.c  Tue Jun 26 21:22:19 2001
> @@ -324,6 +324,9 @@
>      if (link->io.NumPorts2)
>         release_region(link->io.BasePort2, link->io.NumPorts2);
>  
> +    outb(0x02, ctl_base); // Set nIEN = disable device interrupts
> +                         // else it hangs on PCI-Cardbus add-in cards, wedging irq
> +
>      /* retry registration in case device is still spinning up */
>      for (i = 0; i < 10; i++) {
>         hd = ide_register(io_base, ctl_base, link->irq.AssignedIRQ);
> --- linux245.orig/drivers/ide/ide-probe.c       Sun Mar 18 18:25:02 2001
> +++ linux/drivers/ide/ide-probe.c       Tue Jun 26 21:25:07 2001
> @@ -685,6 +685,8 @@
>  #else /* !CONFIG_IDEPCI_SHARE_IRQ */
>                 int sa = (hwif->chipset == ide_pci) ? SA_INTERRUPT|SA_SHIRQ : 
>SA_INTERRUPT;
>  #endif /* CONFIG_IDEPCI_SHARE_IRQ */
> +
> +               outb(0x00, hwif->io_ports[IDE_CONTROL_OFFSET]); // clear nIEN == 
>enable irqs
>                 if (ide_request_irq(hwif->irq, &ide_intr, sa, hwif->name, hwgroup)) {
>                         if (!match)
>                                 kfree(hwgroup);
> 

Andre Hedrick
ASL Kernel Development
Linux ATA Development
-----------------------------------------------------------------------------
ASL, Inc.                                     Toll free: 1-877-ASL-3535
1757 Houret Court                             Fax: 1-408-941-2071
Milpitas, CA 95035                            Web: www.aslab.com

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

Reply via email to