Re: [PATCH] ide: Fix drive's DWORD-IO handling
From: Bartlomiej Zolnierkiewicz
Date: Mon Dec 29 2008 - 14:02:41 EST
On Friday 19 December 2008, Bartlomiej Zolnierkiewicz wrote:
> On Thursday 18 December 2008, Mario Schwalbe wrote:
> > Resubmitted on request.
> >
> > 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.
> >
> > Signed-off-by: Mario Schwalbe <schwalbe@xxxxxxxxxxxxxxxxx>
> > ---
> > drivers/ide/ide-probe.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/ide/ide-probe.c b/drivers/ide/ide-probe.c
> > index c55bdbd..859b0e5 100644
> > --- a/drivers/ide/ide-probe.c
> > +++ b/drivers/ide/ide-probe.c
> > @@ -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;
>
> Since it seems that libata developers need more time to fully analyze
> issues with ata_id_has_dword_io() and I don't want to delay this fix
> because if it could you please modify the patch according to Sergei's
> suggestion of removing id[ATA_ID_DWORD_IO] check altogether?
>
> [ It is a safe thing to do since the old code has been enabling 32-bit
> I/O _unless_ the ATA-1 dword I/O bit for VU compatibility was set... ]
I merged the patch and did the modification while at it:
From: Mario Schwalbe <schwalbe@xxxxxxxxxxxxxxxxx>
Subject: [PATCH] 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.
Signed-off-by: Mario Schwalbe <schwalbe@xxxxxxxxxxxxxxxxx>
Cc: Sergei Shtylyov <sshtylyov@xxxxxxxxxxxxx>
[bart: remove id[ATA_ID_DWORD_IO] check altogether per Sergei's suggestion]
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
---
drivers/ide/ide-probe.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
Index: b/drivers/ide/ide-probe.c
===================================================================
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -849,8 +849,7 @@ static void ide_port_tune_devices(ide_hw
}
ide_port_for_each_dev(i, drive, hwif) {
- if ((hwif->host_flags & IDE_HFLAG_NO_IO_32BIT) ||
- drive->id[ATA_ID_DWORD_IO])
+ if (hwif->host_flags & IDE_HFLAG_NO_IO_32BIT)
drive->dev_flags |= IDE_DFLAG_NO_IO_32BIT;
else
drive->dev_flags &= ~IDE_DFLAG_NO_IO_32BIT;
¢éì¹»®&Þ~º&¶¬?+-±éݶ¥?w®?Ë?±Êâméb?ìdz¹Þ?)í?æèw*jg¬±š¶????Ý¢j/?êäz¹Þ??à2?Þ?šèÚ&¢)ß¡«a¶Úþø®G«?éh®æj:+v?š?wè?Ù¥>W?±êÞiÛaxPjØm¶?ÿÃ-»+?ùd?_