Hello. Jeff Garzik wrote:
This patch fixes ata_id_has_dword_io to return 1 (supported) if the drive is compliant to ATA2 or newer and evaluates the config word for older drives.
Signed-off-by: Mario Schwalbe <schwalbe@xxxxxxxxxxxxxxxxx>
diff --git a/include/linux/ata.h b/include/linux/ata.h index a53318b..d0d6a9c 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h @@ -700,12 +700,12 @@ static inline int ata_id_has_tpm(const u16 *id)
static inline int ata_id_has_dword_io(const u16 *id) { - /* ATA 8 reuses this flag for "trusted" computing */ - if (ata_id_major_version(id) > 7) - return 0; - if (id[ATA_ID_DWORD_IO] & (1 << 0)) - return 1; - return 0; + /* This flag is defined up to ATA1 and deprecated since then + (ATA 8 reuses this flag for "trusted" computing). */ + if (ata_id_major_version(id) <= 1) + return (id[ATA_ID_DWORD_IO] & (1 << 0)) != 0; + /* later revision drives support DWORD I/O just fine */ + return 1;
This seems like a risky assumption...
Not at all, I think. It's total mystery how "DWORD I/O" could've been even (not) supported by a *drive* at all. Support of "DWORD I/O" is a property of the PATA controller. Frankly speaking, I don't think that this function is at all useful...
Jeff
MBR, Sergei -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html