Mark Lord wrote: > Tejun Heo wrote: >> .. >> Then, PACKET_IDENTIFY after configuring transfer mode fails with >> -ENOENT. Meaning it saw (status & (ATA_BUSY|ATA_DRQ|ATA_ERR|ATA_DF)) == >> 0 in HSM_ST. > .. >> So, PATA gurus, can you bless us with enlightenment? :-) > > Heh.. guaranteeing detection of all the strange implementations out there > is part black magic. > > But the simple thing to do here is, just for fun, hack the code > to do the infamous 50 millisecond hard wait before issuing the > PACKET_IDENTIFY. > If that fixes it, then it's just a matter of tuning to discover the real > amount of delay required, and a nicer way of doing the delay. Okay. > Also, zero out the features register before issuing PACKET_IDENTIFY, > if the code isn't already doing that. Okay. > After the drive asserts BUSY, and later deasserts BUSY, > there might be a slight delay before the drive asserts DRQ. > So, it is possible for the status to read zeros in the important bits. > > My suggestion is to wait up to the infamous 50 milliseconds again here, > if needed. Okay, the attached patch does what Mark suggested. Art, can you please give it a shot and report dmesg? My thanks for sticking around till now. -- tejun