Date: Sun, 10 Dec 2000 18:00:03 -0800 (PST) From: Eyal Soha <esoha@cisco.com> To: freebsd-bugs@FreeBSD.org Subject: Re: kern/23409: CD-RW driver fails unless CD in drive at boot up Message-ID: <200012110200.eBB203b73338@freefall.freebsd.org>
index | next in thread | raw e-mail
The following reply was made to PR kern/23409; it has been noted by GNATS.
From: Eyal Soha <esoha@cisco.com>
To: freebsd-gnats-submit@FreeBSD.org, esoha@cisco.com
Cc:
Subject: Re: kern/23409: CD-RW driver fails unless CD in drive at boot up
Date: Sun, 10 Dec 2000 17:53:21 -0800
The error is in sys/dev/ata/atapi-cd.c, line 122:
/* get drive capabilities, some drives needs this repeated */
for (count = 0 ; count < 5 ; count++) {
if (!(error = acd_mode_sense(cdp, ATAPI_CDROM_CAP_PAGE,
(caddr_t)&cdp->cap, sizeof(cdp->cap))))
break;
}
For debugging purposes, I changed 5 to 0xffffff.
When I have a CD installed in the drive or the CD-RW tray is open, I
usually need only two or three retries. When the CD-RW drive is
closed and there is no CD in it, I need between 6400 and 6500 retries.
The number of retries required fluctuates and drops significantly if I
put a delay before the for() loop. The drive is likely not ready by
the time the ATAPI_CDROM_CAP_PAGE command is being issued.
When the bug isn't being exhibited, the error returned by
acd_mode_sense is 0x5. (After getting error 0x5 once or twice, the
drive responds properly.)
When in the bug case (closed and empty CD-RW drive), the error
returned on the first call to acd_mode_sense() is 0x5. Subsequent
calls all return 0x10 (between 0x400 and 0x440 times) until the final
call which returns 0.
--
Eyal Soha <esoha@cisco.com> Work: (408) 527-9276
Software Engineer Page: (800) 365-4578
Cisco Systems <http://www.cisco.com> Epage: esoha@epage.cisco.com
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200012110200.eBB203b73338>
