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

From: Bartlomiej Zolnierkiewicz (B.Zolnierkiewicz_at_elka.pw.edu.pl)
Date: 04/29/04

  • Next message: Paul Jackson: "Re: [PATCH] Process Aggregates (PAGG) support for the 2.6 kernel"
    To: Patrick Wildi <patrick@wildi.com>
    Date:	Thu, 29 Apr 2004 21:32:26 +0200
    
    

    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.

    > - 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). ;)

    > By adding a jump to try_dma_modes in the case that the drive
    > is UDMA capable but the mask does not allow UDMA, the drive
    > will be setup up for MWDMA.
    >
    > The logic in svwks_config_drive_xfer_rate() could probably be
    > improved a bit, but I kept the changes to an absolute minium
    > to reduce the risk of breakage.

    OK, thanks.

    > The patch is against 2.4.24, but the file has not changed in
    > 2.4.25 and 2.4.26.
    >
    > Patrick
    >
    >
    > --- linux-2.4.24-nam/drivers/ide/pci/serverworks.c.orig Thu Apr 22 17:31:28
    > 2004 +++ linux-2.4.24-nam/drivers/ide/pci/serverworks.c Thu Apr 29 11:02:05
    > 2004 @@ -473,7 +473,9 @@
    > int dma = config_chipset_for_dma(drive);
    > if ((id->field_valid & 2) && !dma)
    > goto try_dma_modes;
    > - }
    > + } else
    > + /* UDMA disabled by mask, try other DMA modes */
    > + goto try_dma_modes;
    > } else if (id->field_valid & 2) {
    > try_dma_modes:
    > if ((id->dma_mword & hwif->mwdma_mask) ||
    > @@ -490,6 +492,7 @@
    > } else {
    > goto no_dma_set;
    > }
    > + return hwif->ide_dma_on(drive);
    > } else if ((id->capability & 8) || (id->field_valid & 2)) {
    > fast_ata_pio:
    > no_dma_set:
    > @@ -497,7 +500,7 @@
    > // hwif->tuneproc(drive, 5);
    > return hwif->ide_dma_off_quietly(drive);
    > }
    > - return hwif->ide_dma_on(drive);
    > + return 0;
    > }
    >
    > /* This can go soon */

    -
    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/


  • Next message: Paul Jackson: "Re: [PATCH] Process Aggregates (PAGG) support for the 2.6 kernel"

    Relevant Pages

    • Re: UDMA goofed up (I think)
      ... At the get-go, if implementing UDMA, 3 things must be in place for max I/O ... cable of proper length must be in place, next, the bios must be UDMA capable ... restricts usage to four of six possible drives, ... For repeated DMA errors. ...
      (microsoft.public.windowsxp.hardware)
    • Re: Starting with Linux
      ... I rather felt that the drives would support this DMA. ... I have looked, yet again, at the configuration of this DMA. ... When I got to this stage before, I did try switching it to ON. ... I tried the first version of UDMA. ...
      (alt.os.linux.suse)
    • Re: Another DMA Problem (question)
      ... Take each drive out and see if each drive on there own has udma enabled. ... Here's a web site that will help explain how to re-enable dma if its ... The cd and dvd drives report ultra dma 2 in device manager. ... Swapped cables (40 wire) no difference. ...
      (microsoft.public.windowsxp.hardware)