Re: [RFC][PATCH] 2.4 IDE Serverworks OSB4 DMA patch

From: Bartlomiej Zolnierkiewicz
Date: Fri Apr 30 2004 - 16:29:00 EST


On Friday 30 of April 2004 18:44, Patrick Wildi wrote:
> On Fri, 30 Apr 2004, Bartlomiej Zolnierkiewicz wrote:
> > On Friday 30 of April 2004 00:09, Patrick Wildi wrote:
> > > On Thu, 29 Apr 2004, Bartlomiej Zolnierkiewicz wrote:
> > > > On Thursday 29 of April 2004 21:04, Patrick Wildi wrote:
> > > > > I have been using a OSB4 chipset based system with a CompactFlash
> > > > > that supports PIO only and a laptop IBM/Hitachi Travelstar HDD
> > > > > that supports UDMA.
> > > > > For both drives, the serverworks code misconfigures the drives:
> > > > >
> > > > > - for the CF (hooked up as /dev/hda),
> > > > > svwks_config_drive_xfer_rate() will not match any tests
> > > > > (drive->autodma = 0, id->capability = 2, id->field_valid = 1), but
> > > > > the function will then call
> > > > > hwif->ide_dma_on(drive), which it should not do for this drive.
> > > > > This patch moves the enabling of DMA up into the DMA section of
> > > > > the code.
> > > >
> > > > Yep, known bug, it is fixed in 2.6.
> > > >
> > > > It is present in many other drivers, my 2.6 patch needs to be
> > > > backported.
> > >
> > > Are you the maintainer for 2.4 or to whom should I send the changes?
> >
> > Send them to me.
> >
> > > > > - for the Travelstart HDD, the settings coming into
> > > > > svwks_config_drive_xfer_rate() are: drive->autodma = 32,
> > > > > id->capability = 15, id->field_valid = 7, id->dma_ultra = 0x43f.
> > > > > But as this is an OSB4, the hwif->ultra_mask is set to not
> > > > > support UDMA. Unfortunately in that case
> > > > > svwks_config_drive_xfer_rate() falls through to the end of the
> > > > > function, instead of trying other DMA modes.
> > > >
> > > > Good catch.
> > > >
> > > > It seems the same bug can be present in other drivers too (hint,
> > > > hint). ;)
> > >
> > > I noticed that the piix driver uses the exact same logic. I could
> > > replicate this part of the patch for other 2.4 drivers. I have no
> > > way of testing them.
> > > I can send you a combined patch for 2.4. I am not yet using 2.6.
> >
> > No problem. :)
>
> Below is the 2.4 patch. I believe I updated all drivers that use
> similar code.

This is not needed. I've just checked all drivers:

- no IORDY fix is not necessary for alim15x3.c

- hwif->ultra_mask fix is only needed for OSB4

[ I discovered another bug in the process - some drivers are using
hwif->ultra_mask == 0x80 to indicate that UDMA is unsupported
but bit 0x80 means UDMA7 (UDMA150) now, oh well. ]

Therefore I will send Marcelo backport of 2.6 patch for no IORDY support
+ your OSB4 fix and Linus will get only your OSB4 fix. Thanks!

Cheers,
Bartlomiej

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/