Messages in this thread | ![/](/images/icornerl.gif) | | From | Bartlomiej Zolnierkiewicz <> | Subject | Re: [RFC][PATCH] 2.4 IDE Serverworks OSB4 DMA patch | Date | Fri, 30 Apr 2004 23:27:56 +0200 |
| |
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@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| ![\](/images/icornerr.gif) |