From a05f5efa95316b20ed2051a5ee0c2d2bfdf996a0 Mon Sep 17 00:00:00 2001 From: Bartlomiej Zolnierkiewicz Date: Wed, 14 Jul 2004 03:41:21 -0700 Subject: [PATCH] [PATCH] ide: PIO-out error handling fixes (CONFIG_IDE_TASKFILE_IO=y) We shouldn't ever get into ->handler() if drive is busy so just call ->error() unconditionally if status check fails. Signed-off-by: Bartlomiej Zolnierkiewicz Signed-off-by: Linus Torvalds --- drivers/ide/ide-taskfile.c | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/drivers/ide/ide-taskfile.c b/drivers/ide/ide-taskfile.c index ee6d885dc2b83..74339e6f16b4c 100644 --- a/drivers/ide/ide-taskfile.c +++ b/drivers/ide/ide-taskfile.c @@ -646,16 +646,8 @@ ide_startstop_t task_out_intr (ide_drive_t *drive) u8 stat; stat = HWIF(drive)->INB(IDE_STATUS_REG); - if (!OK_STAT(stat, DRIVE_READY, drive->bad_wstat)) { - if ((stat & (ERR_STAT | DRQ_STAT)) || - ((stat & WRERR_STAT) && !drive->nowerr)) - return DRIVER(drive)->error(drive, __FUNCTION__, stat); - if (stat & BUSY_STAT) { - /* Not ready yet, so wait for another IRQ. */ - ide_set_handler(drive, &task_out_intr, WAIT_WORSTCASE, NULL); - return ide_started; - } - } + if (!OK_STAT(stat, DRIVE_READY, drive->bad_wstat)) + return DRIVER(drive)->error(drive, __FUNCTION__, stat); /* Deal with unexpected ATA data phase. */ if ((!(stat & DATA_READY) && rq->nr_sectors) || @@ -714,16 +706,8 @@ ide_startstop_t task_mulout_intr (ide_drive_t *drive) u8 stat; stat = HWIF(drive)->INB(IDE_STATUS_REG); - if (!OK_STAT(stat, DRIVE_READY, drive->bad_wstat)) { - if ((stat & (ERR_STAT | DRQ_STAT)) || - ((stat & WRERR_STAT) && !drive->nowerr)) - return DRIVER(drive)->error(drive, __FUNCTION__, stat); - if (stat & BUSY_STAT) { - /* Not ready yet, so wait for another IRQ. */ - ide_set_handler(drive, &task_mulout_intr, WAIT_WORSTCASE, NULL); - return ide_started; - } - } + if (!OK_STAT(stat, DRIVE_READY, drive->bad_wstat)) + return DRIVER(drive)->error(drive, __FUNCTION__, stat); /* Deal with unexpected ATA data phase. */ if ((!(stat & DATA_READY) && rq->nr_sectors) || -- 2.53.0