From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
To: Suleiman Souhlal <ssouhlal@freebsd.org>
Cc: linux-ide@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 3/3] Use correct IDE error recovery
Date: Thu, 8 Mar 2007 21:34:47 +0100 [thread overview]
Message-ID: <200703082134.47530.bzolnier@gmail.com> (raw)
In-Reply-To: <B2D4536E-D449-4D10-B745-30D25CAC40A4@freebsd.org>
Hi,
On Thursday 08 March 2007, Suleiman Souhlal wrote:
>
> On Mar 7, 2007, at 1:16 PM, Bartlomiej Zolnierkiewicz wrote:
>
> >
> > Hi,
> >
> > (sorry for the long delay)
> >
> > On Wednesday 21 February 2007, Suleiman Souhlal wrote:
> >> IDE error recovery is using WIN_IDLEIMMEDIATE which was only valid for
> >> IDE V1 and IDE V2. Modern drives will not be able to recover using
> >> this error handling. The correct thing to do is issue a SRST followed
> >> by a SET_FEATURES.
> >
> > This change looks fine, indeed we are better of using SRST +
> > SET_FEATURES than IDLE_IMMEDIATE.
> >
> >> Signed-off-by: Suleiman Souhlal <suleiman@google.com>
> >>
> >> ---
> >> drivers/ide/ide-io.c | 35 +++++++++++-----
> >> drivers/ide/ide-iops.c | 105 ++++++++++++++++++++++++++++--------------------
> >> include/linux/ide.h | 2 +
> >> 3 files changed, 88 insertions(+), 54 deletions(-)
> >>
> >> diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c
> >> index c193553..2f05b4d 100644
> >> --- a/drivers/ide/ide-io.c
> >> +++ b/drivers/ide/ide-io.c
> >> @@ -519,21 +519,21 @@ static ide_startstop_t ide_ata_error(ide
> >> if ((stat & DRQ_STAT) && rq_data_dir(rq) == READ && hwif-
> >> >err_stops_fifo == 0)
> >> try_to_flush_leftover_data(drive);
> >>
> >> + if (rq->errors >= ERROR_MAX || blk_noretry_request(rq)) {
> >> + ide_kill_rq(drive, rq);
> >> + return ide_stopped;
> >> + }
> >> +
> >> if (hwif->INB(IDE_STATUS_REG) & (BUSY_STAT|DRQ_STAT))
> >> - /* force an abort */
> >> - hwif->OUTB(WIN_IDLEIMMEDIATE, IDE_COMMAND_REG);
> >> + rq->errors |= ERROR_RESET;
> >>
> >> - if (rq->errors >= ERROR_MAX || blk_noretry_request(rq))
> >> - ide_kill_rq(drive, rq);
> >> - else {
> >> - if ((rq->errors & ERROR_RESET) == ERROR_RESET) {
> >> - ++rq->errors;
> >> - return ide_do_reset(drive);
> >> - }
> >> - if ((rq->errors & ERROR_RECAL) == ERROR_RECAL)
> >> - drive->special.b.recalibrate = 1;
> >
> > Is the removal of ERROR_RECAL handling intentional?
> > There is nothing about it in the patch description...
>
> Yes, it was intentional, but I forgot to add "while there remove some
Why is it useless? What am I missing?
> useless code" to the description. Maybe it's better if I send this as
> a separate patch.
Yes, please do so.
[ ... ]
> > The patch fixes code in ide_ata_error() and updates the comment
> > for ide_error() but ide_atapi_error() is not left untouched
> > (it still uses IDLE IMMEDIATE).
> >
> > I suppose that ide_atapi_error() (for ATAPI devices) needs similar
> > fix?
>
> I'm not sure.. I don't have any ATAPI hardware to test this on
> either, so I preferred not to touch it.
OK, this could be fixed later in the incremental patch.
> >> ide_startstop_t ide_error (ide_drive_t *drive, const char *msg, u8 stat)
> >> @@ -1004,6 +1011,12 @@ #endif
> >> goto kill_rq;
> >> }
> >>
> >> + /* We reset the drive so we need to issue a SETFEATURES. */
> >> + if ((drive->current_speed == 0xff) &&
> >> + ((rq->cmd_type == REQ_TYPE_ATA_CMD) ||
> >> + (rq->cmd_type == REQ_TYPE_ATA_TASK)))
> >> + ide_config_drive_speed_irq(drive, drive->desired_speed);
> >
> > Please update the patch to not depend on ide_config_drive_speed() fixes
> > [PATCH 2/3] which need more work (shouldn't be a problem as the code here
> > uses _irq variant anyway).
> >
> > Please respin the patch so I could merge it.
>
> Ok.
Thanks,
Bart
next prev parent reply other threads:[~2007-03-08 20:27 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-21 1:23 [PATCH 3/3] Use correct IDE error recovery Suleiman Souhlal
2007-03-07 21:16 ` Bartlomiej Zolnierkiewicz
2007-03-08 1:05 ` Alan Cox
2007-03-08 20:16 ` Suleiman Souhlal
2007-03-08 20:34 ` Bartlomiej Zolnierkiewicz [this message]
2007-03-08 20:53 ` Suleiman Souhlal
2007-03-23 23:53 ` Bartlomiej Zolnierkiewicz
2007-03-24 14:07 ` Sergei Shtylyov
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=200703082134.47530.bzolnier@gmail.com \
--to=bzolnier@gmail.com \
--cc=linux-ide@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ssouhlal@freebsd.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).