Skip to contentSkip to conversation

ide: Fix drive's DWORD-IO handling

PATCH In review Mario Schwalbe 2 participants 2 messages Dec 14, 2008 – Dec 16, 2008 libata

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ide: Fix drive's DWORD-IO handling

According the documentation, id[ATA_ID_DWORD_IO] is non-zero if the drive supports dword IO, while the code disables support by setting IDE_DFLAG_NO_IO_32BIT. In addition, this word has been reused by the ATA8 specification. This patch fixes both cases.

---
 drivers/ide/ide-probe.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/ide/ide-probe.c +1 -1
index c55bdbd..859b0e5 100644
@@ -856,7 +856,7 @@ static void ide_port_tune_devices(ide_hwif_t *hwif)
 		ide_drive_t *drive = &hwif->drives[unit];
 
 		if ((hwif->host_flags & IDE_HFLAG_NO_IO_32BIT) ||
-		    drive->id[ATA_ID_DWORD_IO])
+		    !ata_id_has_dword_io(drive->id))
 			drive->dev_flags |= IDE_DFLAG_NO_IO_32BIT;
 		else
 			drive->dev_flags &= ~IDE_DFLAG_NO_IO_32BIT;
Signature · 1 line
1.5.6.3
#1 lore raw
Quoted 13 lines · Mario Schwalbe

According the documentation, id[ATA_ID_DWORD_IO] is non-zero if the drive supports dword IO, while the code disables support by setting IDE_DFLAG_NO_IO_32BIT. In addition, this word has been reused by the ATA8 specification. This patch fixes both cases.

---
 drivers/ide/ide-probe.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
drivers/ide/ide-probe.c +0 -0
index c55bdbd..859b0e5 100644

drivers/ide/ide-probe.c static void ide_port_tune_devices(ide_hwif_t *hwif) · line 862

Quoted 8 lines
drivers/ide/ide-probe.c +1 -1
@@ -856,7 +856,7 @@ static void ide_port_tune_devices(ide_hwif_t *hwif)
 		ide_drive_t *drive = &hwif->drives[unit];
 
 		if ((hwif->host_flags & IDE_HFLAG_NO_IO_32BIT) ||
-		    drive->id[ATA_ID_DWORD_IO])
+		    !ata_id_has_dword_io(drive->id))
 			drive->dev_flags |= IDE_DFLAG_NO_IO_32BIT;
 		else
 			drive->dev_flags &= ~IDE_DFLAG_NO_IO_32BIT;

This change is OK and I would happily apply the patch but...

ata_id_has_dword_io() itself has bugs that need fixing (which would have a nice side-effect of fixing some libata drivers that happen to use it directly). ATA_ID_DWORD_IO word is defined only in ATA-1 spec and devices confirming to the later versions of spec support dword IO just fine despite using zero value for the said word.

Thus could you please fix ata_id_has_dword_io() first (preferrably in a separate patch) and than re-submit this patch (btw please remember to include "Signed-off-by" line in your patches).

Thanks,
Bart