Messages in this thread Patches in this message | ![/](/images/icornerl.gif) | | Date | Wed, 14 May 2003 16:13:15 +0200 (CEST) | From | Maciej Soltysiak <> | Subject | Re: hdb: dma_timer_expiry: dma status == 0x64 [2.5.69] |
| |
> I'm seeing it too, only with recent kernels. Exactly like me. Someone suggested Bartlomiej Zolnierkiewicz's patch. Try this on for size. I haven't tested it yet, but please give it a shot.
Regards, Maciej
# Fix masked_irq arg handling for ide_do_request(). # Solves "hdx: lost interrupt" bug. # # Bartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl>
--- linux-2.5.68-bk6/drivers/ide/ide-io.c Fri Apr 25 16:08:53 2003 +++ linux/drivers/ide/ide-io.c Fri Apr 25 16:13:37 2003 @@ -850,14 +850,14 @@ * happens anyway when any interrupt comes in, IDE or otherwise * -- the kernel masks the IRQ while it is being handled. */ - if (hwif->irq != masked_irq) + if (masked_irq != IDE_NO_IRQ && hwif->irq != masked_irq) disable_irq_nosync(hwif->irq); spin_unlock(&ide_lock); local_irq_enable(); /* allow other IRQs while we start this request */ startstop = start_request(drive, rq); spin_lock_irq(&ide_lock); - if (hwif->irq != masked_irq) + if (masked_irq != IDE_NO_IRQ && hwif->irq != masked_irq) enable_irq(hwif->irq); if (startstop == ide_released) goto queue_next;# Fix masked_irq arg handling for ide_do_request(). # Solves "hdx: lost interrupt" bug. # # Bartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl>
--- linux-2.5.68-bk6/drivers/ide/ide-io.c Fri Apr 25 16:08:53 2003 +++ linux/drivers/ide/ide-io.c Fri Apr 25 16:13:37 2003 @@ -850,14 +850,14 @@ * happens anyway when any interrupt comes in, IDE or otherwise * -- the kernel masks the IRQ while it is being handled. */ - if (hwif->irq != masked_irq) + if (masked_irq != IDE_NO_IRQ && hwif->irq != masked_irq) disable_irq_nosync(hwif->irq); spin_unlock(&ide_lock); local_irq_enable(); /* allow other IRQs while we start this request */ startstop = start_request(drive, rq); spin_lock_irq(&ide_lock); - if (hwif->irq != masked_irq) + if (masked_irq != IDE_NO_IRQ && hwif->irq != masked_irq) enable_irq(hwif->irq); if (startstop == ide_released) goto queue_next; | ![\](/images/icornerr.gif) |