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.
-Steve