Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Sep 2005 13:50:11 +0200
From:      =?ISO-8859-1?Q?S=F8ren_Schmidt?= <sos@FreeBSD.org>
To:        Patrick Bowen <pbowen@fastmail.fm>
Cc:        Freebsd-current@FreeBSD.org
Subject:   Re: ATA error on 6.0-BETA4
Message-ID:  <F510A000-70D7-4ED8-9903-EC5CEE527DC5@FreeBSD.org>
In-Reply-To: <432B2985.50302@fastmail.fm>
References:  <1126047871.687.1.camel@localhost> <E52963F6-A762-4719-A6AD-4412C0011C17@FreeBSD.org> <4328D0F7.2090501@fastmail.fm> <2B22BF98-3FF4-4BE5-B8FF-56BB07CDB4D9@FreeBSD.org> <432B2985.50302@fastmail.fm>

next in thread | previous in thread | raw e-mail | index | archive | help
On 16/09/2005, at 22:22, Patrick Bowen wrote:
> S=F8ren Schmidt wrote:
>> On 15/09/2005, at 3:40, Patrick Bowen wrote:
>>> I've notice the same behaviour on my Dell C600. I've attached  =20
>>> verbose dmesg's for -current and 5.4. When I boot 5.4 the CD-RW =20
>>> is  found and I have no problems using it for either reading or  =20
>>> writing. I hope they're useful for you.
>> OK, please try the below patch and let me know if that helps any.
>>> I'd like to say that I have the greatest respect for *all* of =20
>>> you  that work at making FreeBSD the great OS that it is. I just =20
>>> wonder  where you find the time to work on it, what with your day =20=

>>> jobs,  family responsibilities and all...
>> I guess we have understanding environments and need for less =20
>> sleep  than usual :)
>>
>> Index: ata-lowlevel.c
>> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
>> RCS file: /home/ncvs/src/sys/dev/ata/ata-lowlevel.c,v
>> retrieving revision 1.71
>> diff -u -r1.71 ata-lowlevel.c
>> --- ata-lowlevel.c      14 Sep 2005 12:45:06 -0000      1.71
>> +++ ata-lowlevel.c      15 Sep 2005 07:35:41 -0000
>> @@ -278,7 +278,7 @@
>>             /* if read data get it */
>>             if (request->flags & ATA_R_READ) {
>> -               if (ata_wait(ch, atadev, (ATA_S_READY | =20
>> ATA_S_DRQ)) <  0) {
>> +               if (ata_wait(ch, atadev, ATA_S_DRQ) < 0) {
>>                     device_printf(request->dev,
>>                                   "timeout waiting for read DRQ\n");
>>                     request->result =3D EIO;
>>
>>
>> S=F8ren Schmidt
>> sos@FreeBSD.org
>>
>>
>>
>>
>>
> S=F8ren:
>
> Outstanding! The drive is now recognized at boot, I can read and =20
> write CD's, and even listen to audio CD's. It all seems to work! =20
> Such a small change had a huge impact.

Good, I'll get this committed ASAP when I have a little more testing =20
done.

> If you don't mind, what exactly was the purpose for making the =20
> change (other than to make things work)?

ATAPI devices doesn't always set the READY flag, the reason being =20
that they should not be picked up as ATA devices back when there was =20
systems that didn't know about ATAPI.

ATA mkIII originally did the identify by polling the device so this =20
wasn't used. Later I changed things to use the generic request =20
processing logic but newer encountered this problem on any of the =20
devices I routinely test with. Now I've found an old ATAPI cdrom that =20=

exhibits this behavior and added it to the pool of "must test these" =20
device :)

S=F8ren Schmidt
sos@FreeBSD.org






Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?F510A000-70D7-4ED8-9903-EC5CEE527DC5>