lkml.org 
[lkml]   [2001]   [Jun]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectPatch(2.4.5): Fix PCMCIA ATA/IDE freeze (w/ PCI add-in cards)
    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);
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2005-03-22 12:55    [W:0.035 / U:60.668 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site