----- Original Message ----- From: "Luoqi Chen" <[EMAIL PROTECTED]> To: "David Xu" <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Wednesday, March 05, 2003 8:44 AM Subject: RE: ATA MODE_SENSE_BIG timeout
> > For those want to fix ATA code, I have another problem > > with CURRENT. I have a Tyan Tiger 230T which is based > > on VIA Apollo 133T, south bridge is VIA 686B. > > On second IDE, I have a Mitsubishi 52X cdrom as master, > > and a Sony 16X CD R/W as slave, when startup, kernel > > is always stuck at "MODE_SENSE_BIG timeout". > > I fortunately catched the dmesg text since ATA code past the > > probing stage. In most case, it will be stuck there forever. > > BTW, both Linux (2.2.14, Redhat) and MS Windows can probe > > these devices in few seconds without any problem. > > > I had more than a few machines behaved this way. I believe > the problem is with the probe and attach sequence of our > ata driver. After an ATA reset, according to spec, an ATAPI > device is supposed to present the ATAPI signature and deassert > the ready bit, until it receives its first packet command. > However when the ata driver issues the first mode sense command, > it polls first for the ready bit which never becomes set and > the operation times out. The most obviously solution is > sending the first command without checking for the ready bit. > > My solution is a little different, but works equally well, > instead I issue an ATAPI reset (what now called a device reset?), > because I don't want to write another or alter the current > ata_command function and we need an atapi_reset function anyway. > According spec, atapi devices SHOULD ONLY be reset via the > atapi reset command (our ata driver doesn't follow this rule). > > The patch is for -stable. I hope it's not too difficult to port > to -current. > I have applied the patch manually to CURRENT, it helps nothing. :( Then I booted kernel without the patch, waited for a very long time to let ata code retry, finally it found the Sony 16X CD RW, but I can not mount it. It is always timeout. David Xu To Unsubscribe: send mail to [EMAIL PROTECTED] with "unsubscribe freebsd-current" in the body of the message