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