diff options
author | Alan Cox <alan@lxorguk.ukuu.org.uk> | 2006-06-28 07:27:01 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-28 17:59:06 -0400 |
commit | da574af755bcb1d604e01feadf2a8c31b364447c (patch) | |
tree | de8548adf6ea7205314f0813afb3fb83a9e7da6a /drivers/ide | |
parent | 2930d1bed7ffea3062e43b8acdeb9e0587bfc6a9 (diff) |
[PATCH] ide: fix error handling for drives which clear the FIFO on error
If the controller FIFO cleared automatically on error we must not try
and drain it as this will hang some chips.
Based in concept on a broken patch from -mm some while back
Signed-off-by: Alan Cox <alan@redhat.com>
Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/ide')
-rw-r--r-- | drivers/ide/ide-io.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index 935cb258377..26ceab1e90b 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
@@ -505,7 +505,7 @@ static ide_startstop_t ide_ata_error(ide_drive_t *drive, struct request *rq, u8 | |||
505 | } | 505 | } |
506 | } | 506 | } |
507 | 507 | ||
508 | if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ) | 508 | if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ && hwif->err_stops_fifo == 0) |
509 | try_to_flush_leftover_data(drive); | 509 | try_to_flush_leftover_data(drive); |
510 | 510 | ||
511 | if (hwif->INB(IDE_STATUS_REG) & (BUSY_STAT|DRQ_STAT)) | 511 | if (hwif->INB(IDE_STATUS_REG) & (BUSY_STAT|DRQ_STAT)) |