All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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 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.