ATA ident command

Chris Johns chrisj at rtems.org
Thu Aug 27 09:26:02 UTC 2009


Hi all,

I have found the ATA driver's handling of the ident command seems a 
little suspect but I did not want to change the driver without some 
feedback.

If you look around line 1470 in the ata.c driver the LBA sectors is 
passed to the rtems_disk_create_phys call. This value comes from the 
handling of the ident table returned from the drive (line 1419). I found 
the value returned by qemu for its drive was word reversed. I now have this:

      ATA_DEV_INFO(ctrl_minor, dev).lba_sectors =
          (CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_USR_SECS1]) << 16) +
           CF_LE_W(buffer[ATA_IDENT_WORD_NUM_OF_USR_SECS0]);

and it is working with qemu.

If any one has an ATA standard handy could they please check if this 
change is ok ?

Regards
Chris



More information about the users mailing list