All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Anders Eriksson <aeriksson@fastmail.fm>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	Jens Axboe <jens.axboe@oracle.com>, Ingo Molnar <mingo@elte.hu>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Linux 2.6.25-rc4
Date: Sun, 16 Mar 2008 20:54:04 +0100	[thread overview]
Message-ID: <200803162054.04757.bzolnier@gmail.com> (raw)
In-Reply-To: <alpine.LFD.1.00.0803161111000.3020@woody.linux-foundation.org>

On Sunday 16 March 2008, Linus Torvalds wrote:
> 
> On Sun, 16 Mar 2008, Bartlomiej Zolnierkiewicz wrote:
> > 
> > We don't do error handling for special commands (REQ_TYPE_ATA_*) at all,
> > ide_error() just dumps device's status/error register(s) and finishes early:
> 
> Well that sounds bogus too, for all the same reasons already outlined. The 
> DRQ flag needs to be cleared up on error!

OK, lets try it.

From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
Subject: [PATCH] ide: correctly handle DRQ bit set on error also for special requests

commit 4d977e43d8ae758434e603cf2455d955f71c77c4 ("ide: check BUSY and ERROR 
status bits before reading data in drive_cmd_intr()") changed DRQ handling
logic (as pointed out by Linus).

Fix it by flushing leftover data for commands using PIO-in protocol
and special requests (rq->cmd_type == REQ_TYPE_ATA_TASKFILE).

Cc: Anders Eriksson <aeriksson@fastmail.fm>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
---
against 2.6.25-rc5, untested

 drivers/ide/ide-io.c |   11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

Index: b/drivers/ide/ide-io.c
===================================================================
--- a/drivers/ide/ide-io.c
+++ b/drivers/ide/ide-io.c
@@ -540,12 +540,19 @@ EXPORT_SYMBOL_GPL(__ide_error);
  
 ide_startstop_t ide_error (ide_drive_t *drive, const char *msg, u8 stat)
 {
-	struct request *rq;
+	ide_hwif_t *hwif = drive->hwif;
+	struct request *rq = hwif->hwgroup->rq;
 	u8 err;
 
+	if (rq && rq->cmd_type == REQ_TYPE_ATA_TASKFILE) {
+		if (hwif->data_phase == TASKFILE_IN && (stat & DRQ_STAT) &&
+		    (hwif->host_flags & IDE_HFLAG_ERROR_STOPS_FIFO) == 0)
+			try_to_flush_leftover_data(drive);
+	}
+
 	err = ide_dump_status(drive, msg, stat);
 
-	if ((rq = HWGROUP(drive)->rq) == NULL)
+	if (rq == NULL)
 		return ide_stopped;
 
 	/* retry only "normal" I/O: */

  parent reply	other threads:[~2008-03-16 19:45 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-05  5:03 Linux 2.6.25-rc4 Linus Torvalds
2008-03-05  8:09 ` FUJITA Tomonori
2008-03-05 16:46   ` Grant Grundler
2008-03-06  9:00 ` Ingo Molnar
2008-03-06 12:59   ` Jens Axboe
2008-03-06 13:06     ` Ingo Molnar
2008-03-06 13:12       ` Jens Axboe
2008-03-07  8:53       ` Ingo Molnar
2008-03-07  8:57         ` Jens Axboe
2008-03-07  9:02           ` Ingo Molnar
2008-03-07  9:59             ` Paul Mackerras
2008-03-07 15:20           ` Valdis.Kletnieks
2008-03-08 23:36         ` Pavel Machek
2008-03-09 11:59           ` Ingo Molnar
2008-03-09 12:55           ` Andi Kleen
2008-03-10 10:10             ` Pavel Machek
2008-03-10 11:52               ` Andi Kleen
2008-03-06 13:38     ` Bartlomiej Zolnierkiewicz
2008-03-06 13:33       ` Ingo Molnar
2008-03-06 14:06         ` Bartlomiej Zolnierkiewicz
2008-03-06 13:55           ` Jens Axboe
2008-03-06 21:17             ` Anders Eriksson
2008-03-07  8:48               ` Jens Axboe
2008-03-07 22:04                 ` Anders Eriksson
2008-03-08 20:22                   ` Linus Torvalds
2008-03-08 21:05                     ` Anders Eriksson
2008-03-10  8:55                       ` Anders Eriksson
2008-03-10 12:36                         ` Bartlomiej Zolnierkiewicz
2008-03-10 13:10                           ` Rafael J. Wysocki
2008-03-10 14:04                             ` Bartlomiej Zolnierkiewicz
2008-03-16 14:01                               ` Anders Eriksson
2008-03-16 14:29                                 ` Bartlomiej Zolnierkiewicz
2008-03-16 14:29                                   ` Anders Eriksson
2008-03-16 15:14                                     ` Bartlomiej Zolnierkiewicz
2008-03-16 16:56                                 ` Linus Torvalds
2008-03-16 17:13                                   ` Linus Torvalds
2008-03-16 18:18                                     ` Anders Eriksson
2008-03-16 18:07                                   ` Bartlomiej Zolnierkiewicz
2008-03-16 18:13                                     ` Linus Torvalds
2008-03-16 18:36                                       ` Bartlomiej Zolnierkiewicz
2008-03-16 19:08                                         ` Anders Eriksson
2008-03-16 18:56                                       ` Alan Cox
2008-03-16 19:39                                         ` Linus Torvalds
2008-03-16 20:31                                           ` Alan Cox
2008-03-16 21:06                                             ` Linus Torvalds
2008-03-21 15:03                                             ` Mark Lord
2008-03-21 14:49                                               ` Alan Cox
2008-03-16 19:54                                       ` Bartlomiej Zolnierkiewicz [this message]
2008-03-16 22:59                                         ` Anders Eriksson
2008-03-16 23:27                                           ` Linus Torvalds
2008-03-17 21:09                                             ` Anders Eriksson
2008-03-17 22:52                                               ` Linus Torvalds
2008-03-18  0:18                                                 ` Anders Eriksson
2008-03-18 13:03                                                   ` Bartlomiej Zolnierkiewicz
2008-03-18 13:32                                                     ` Anders Eriksson
2008-03-18 14:48                                                       ` Bartlomiej Zolnierkiewicz
2008-03-18 15:10                                                         ` Anders Eriksson
2008-03-18 15:41                                                       ` Linus Torvalds
2008-03-18 16:30                                                         ` Anders Eriksson
2008-03-18 16:47                                                           ` Linus Torvalds
2008-03-18 21:02                                                             ` Anders Eriksson
2008-03-19  1:21                                                         ` Bartlomiej Zolnierkiewicz
2008-03-19  1:28                                                           ` Linus Torvalds
2008-03-19  3:24                                                             ` Bartlomiej Zolnierkiewicz
2008-03-19  3:28                                                               ` Linus Torvalds
2008-03-19  3:56                                                                 ` Linus Torvalds
2008-03-19  4:03                                                                 ` Bartlomiej Zolnierkiewicz
2008-03-19  4:48                                                                   ` Linus Torvalds
2008-03-19 11:14                                                                     ` Bartlomiej Zolnierkiewicz
2008-03-16 18:23                                     ` Anders Eriksson
2008-03-16 18:26                                     ` Bartlomiej Zolnierkiewicz
2008-03-16 18:25                                       ` Anders Eriksson
2008-03-17  7:23                                       ` Jens Axboe
2008-03-16 18:44                                   ` Alan Cox
2008-03-10 13:19                           ` Anders Eriksson
2008-03-10 13:56                             ` Bartlomiej Zolnierkiewicz
2008-03-16 18:59     ` Andrey Borzenkov
2008-03-07 10:08 ` [patch] drivers/char/esp.c: fix bootup lockup (was: Re: Linux 2.6.25-rc4) Ingo Molnar
2008-03-09 13:41   ` [patch] drivers/char/esp.c: fix bootup lockup Jiri Slaby
2008-03-09 22:49     ` Rafael J. Wysocki
2008-03-09 23:04       ` Jiri Slaby
  -- strict thread matches above, loose matches on Subject: below --
2008-03-05 22:30 Linux 2.6.25-rc4 Jonathan McDowell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200803162054.04757.bzolnier@gmail.com \
    --to=bzolnier@gmail.com \
    --cc=aeriksson@fastmail.fm \
    --cc=jens.axboe@oracle.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rjw@sisk.pl \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.