Date: Wed, 29 Jan 2003 11:14:17 -0800 From: David Schultz <dschultz@uclink.Berkeley.EDU> To: jjramsey@pobox.com Cc: freebsd-bugs@FreeBSD.ORG Subject: Re: Revisiting the semirandom bug/issue in FreeBSD's ATA querying Message-ID: <20030129191417.GA5337@HAL9000.homeunix.com> In-Reply-To: <20030129184945.38654.qmail@web10706.mail.yahoo.com> References: <20030129183150.GB3139@HAL9000.homeunix.com> <20030129184945.38654.qmail@web10706.mail.yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Thus spake James J. Ramsey <jjramsey_6x9eq42@yahoo.com>:
> --- David Schultz <dschultz@uclink.Berkeley.EDU>
> wrote:
> > No delay is supposed to be
> > required between
> > probing the slave and probing the master, other than
> > waiting for
> > the command to complete, but the Linux driver has
> > one anyway.
>
> I guess the next question is whether FreeBSD has a
> delay between probing of master and slave as Linux
> does.
No, it doesn't, although the kernel image I sent you a link to
earlier does. Alternatively, you can add one yourself. The patch
below won't apply cleanly on -CURRENT, but it's easy enough to add
the lines manually.
Index: ata-all.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/ata/ata-all.c,v
retrieving revision 1.50.2.42
diff -p -u -r1.50.2.42 ata-all.c
--- src/sys/dev/ata/ata-all.c 2002/11/01 22:04:06 1.50.2.42
+++ src/sys/dev/ata/ata-all.c 2003/01/29 19:12:43
@@ -501,6 +501,7 @@ ata_getparam(struct ata_device *atadev,
/* apparently some devices needs this repeated */
do {
+ DELAY(50000);
if (ata_command(atadev, command, 0, 0, 0, ATA_IMMEDIATE)) {
ata_prtdev(atadev, "%s identify failed\n",
command == ATA_C_ATAPI_IDENTIFY ? "ATAPI" : "ATA");
@@ -515,6 +516,7 @@ ata_getparam(struct ata_device *atadev,
}
} while (ata_wait(atadev, ((command == ATA_C_ATAPI_IDENTIFY) ?
ATA_S_DRQ : (ATA_S_READY|ATA_S_DSC|ATA_S_DRQ))));
+ DELAY(50000);
ATA_INSW(atadev->channel->r_io, ATA_DATA, (int16_t *)ata_parm,
sizeof(struct ata_params)/sizeof(int16_t));
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20030129191417.GA5337>
