Message ID | 1259063450-21049-1-git-send-email-hemantp@ti.com |
---|---|
State | Accepted |
Delegated to: | David Miller |
Headers | show |
From: Hemant Pedanekar <hemantp@ti.com> Date: Tue, 24 Nov 2009 17:20:50 +0530 > Currently, ide_cmd_ioctl when invoked for setting DMA transfer mode calls > ide_find_dma_mode with requested mode as XFER_UDMA_6. This prevents setting DMA > mode to any other value than the default (maximum) supported by the device (or > UDMA6, if supported) irrespective of the actual requested transfer mode and > returns error. > > For example, setting mode to UDMA2 using hdparm, where UDMA4 is the default > transfer mode gives following error: > # ./hdparm -d1 -Xudma2 /dev/hda > /dev/hda:hda: UDMA/66 mode selected > setting using_dma to 1 (on) > hda: UDMA/66 mode selected > setting xfermode to 66 (UltraDMA mode2) > HDIO_DRIVE_CMD(setxfermode) failed: Invalid argument > using_dma = 1 (on) > > This patch fixes the issue. > > Signed-off-by: Hemant Pedanekar <hemantp@ti.com> > Acked-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> > Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com> Applied and queued up for -stable, thanks! -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/ide/ide-ioctls.c b/drivers/ide/ide-ioctls.c index d3440b5..6e7ae2b 100644 --- a/drivers/ide/ide-ioctls.c +++ b/drivers/ide/ide-ioctls.c @@ -162,7 +162,7 @@ static int ide_cmd_ioctl(ide_drive_t *drive, unsigned long arg) if (tf->command == ATA_CMD_SET_FEATURES && tf->feature == SETFEATURES_XFER && tf->nsect >= XFER_SW_DMA_0) { - xfer_rate = ide_find_dma_mode(drive, XFER_UDMA_6); + xfer_rate = ide_find_dma_mode(drive, tf->nsect); if (xfer_rate != tf->nsect) { err = -EINVAL; goto abort;