Steve Gehlbach steve@nexpath.com writes:
Eric W. Biederman wrote:
Steve how does your 1.2G Caviar fail? Is it not detected or is the problem something else?
Everything works fine, it just gets the wrong data. I put in lots of printf's, it is using ide_read_sector_lba, all results are normal AFAICT. I printed out the sector (sector 0) that it read, it had about 50 initial values, then all zeros. The real sector 0 is pretty much all filled. I grep'ed for a couple of bytes from the bogus sector and they did not appear in the real sector, so I think all of the data is bogus, not just shifted or something.
The cmd.device byte (=0xe0) (and the others in this structure) appear correct in
comparing to ATA spec. Is there ever any confusion about what the first sector is (0 vs 1)? I could not find a specific statement in the ATA spec about this, but it is a long spec.
I was going to force it to use ide_read_sector_chs but did not have time.
I switched to using my CF drive and it worked fine, so I don't think it was cockpit trouble.
Right. My only other guess is that some of the lba48 support my be interacting in a strange way and causing problems. We always write the lba48 high registers but we don't set them in the lba case. It should not cause a problem.
But drives are diverse enough we might find some strange bugs.
At least we have not yet found a drive that we have spin up problems with yet.
Eric