From: Maciej Soltysiak <solt@dns.toxicfilms.tv>,
      Bartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl>

(David Coulson <david@davidcoulson.net> says that this fixes his Promise 20269
PCI IDE DMA problems)

Fix masked_irq arg handling for ide_do_request().  Solves "hdx: lost
interrupt" bug.

Bartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl>

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/drivers/ide/ide-io.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff -puN drivers/ide/ide-io.c~ide-fix-masked_irq-arg-handling-for-ide_do_request drivers/ide/ide-io.c
--- 25/drivers/ide/ide-io.c~ide-fix-masked_irq-arg-handling-for-ide_do_request	2005-02-22 18:52:42.000000000 -0800
+++ 25-akpm/drivers/ide/ide-io.c	2005-02-22 18:52:42.000000000 -0800
@@ -1353,14 +1353,14 @@ static void ide_do_request (ide_hwgroup_
 		 * 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_stopped)
 			hwgroup->busy = 0;
_