Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=c223701cf6c706f42840631c1ca919a18e6e2800
Commit:     c223701cf6c706f42840631c1ca919a18e6e2800
Parent:     9ff6f72f432364991d68e99cae72cb141c166e70
Author:     Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
AuthorDate: Tue Oct 16 22:29:58 2007 +0200
Committer:  Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
CommitDate: Tue Oct 16 22:29:58 2007 +0200

    ide: add "hdx=nodma" kernel parameter
    
    * Add "hdx=nodma" option allowing user to disallow DMA for a given device.
    
    * Obsolete "ide=nodma" option.
    
    Acked-by: Sergei Shtylyov <[EMAIL PROTECTED]>
    Signed-off-by: Bartlomiej Zolnierkiewicz <[EMAIL PROTECTED]>
---
 Documentation/ide.txt |    4 ++--
 drivers/ide/ide-dma.c |    2 +-
 drivers/ide/ide.c     |    7 +++++--
 include/linux/ide.h   |    1 +
 4 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/Documentation/ide.txt b/Documentation/ide.txt
index c1640e3..1d50f23 100644
--- a/Documentation/ide.txt
+++ b/Documentation/ide.txt
@@ -242,6 +242,8 @@ Summary of ide driver parameters for kernel command line
                          and quite likely to cause trouble with
                          older/odd IDE drives.
 
+ "hdx=nodma"           : disallow DMA
+
  "hdx=swapdata"                : when the drive is a disk, byte swap all data
 
  "hdx=bswap"           : same as above..........
@@ -286,8 +288,6 @@ Summary of ide driver parameters for kernel command line
 
  "ide=reverse"         : formerly called to pci sub-system, but now local.
 
- "ide=nodma"           : disable DMA globally for the IDE subsystem.
-
 The following are valid ONLY on ide0, which usually corresponds
 to the first ATA interface found on the particular host, and the defaults for
 the base,ctl ports must not be altered.
diff --git a/drivers/ide/ide-dma.c b/drivers/ide/ide-dma.c
index 45fa1ef..bc57ce6 100644
--- a/drivers/ide/ide-dma.c
+++ b/drivers/ide/ide-dma.c
@@ -759,7 +759,7 @@ static int ide_tune_dma(ide_drive_t *drive)
 {
        u8 speed;
 
-       if (noautodma || (drive->id->capability & 1) == 0)
+       if (noautodma || drive->nodma || (drive->id->capability & 1) == 0)
                return 0;
 
        /* consult the list of known "bad" drives */
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index 27c4fe2..5b09066 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -1272,7 +1272,7 @@ static int __init ide_setup(char *s)
        if (!strcmp(s, "ide=nodma")) {
                printk(" : Prevented DMA\n");
                noautodma = 1;
-               return 1;
+               goto obsolete_option;
        }
 
 #ifdef CONFIG_IDEPCI_PCIBUS_ORDER
@@ -1306,7 +1306,7 @@ static int __init ide_setup(char *s)
         */
        if (s[0] == 'h' && s[1] == 'd' && s[2] >= 'a' && s[2] <= max_drive) {
                const char *hd_words[] = {
-                       "none", "noprobe", "nowerr", "cdrom", "minus5",
+                       "none", "noprobe", "nowerr", "cdrom", "nodma",
                        "autotune", "noautotune", "minus8", "swapdata", "bswap",
                        "noflush", "remap", "remap63", "scsi", NULL };
                unit = s[2] - 'a';
@@ -1334,6 +1334,9 @@ static int __init ide_setup(char *s)
                                drive->ready_stat = 0;
                                hwif->noprobe = 0;
                                goto done;
+                       case -5: /* nodma */
+                               drive->nodma = 1;
+                               goto done;
                        case -6: /* "autotune" */
                                drive->autotune = IDE_TUNE_AUTO;
                                goto obsolete_option;
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 79652c5..e39ee2f 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -599,6 +599,7 @@ typedef struct ide_drive_s {
        unsigned nice0          : 1;    /* give obvious excess bandwidth */
        unsigned nice2          : 1;    /* give a share in our own bandwidth */
        unsigned doorlocking    : 1;    /* for removable only: door lock/unlock 
works */
+       unsigned nodma          : 1;    /* disallow DMA */
        unsigned autotune       : 2;    /* 0=default, 1=autotune, 2=noautotune 
*/
        unsigned remap_0_to_1   : 1;    /* 0=noremap, 1=remap 0->1 (for 
EZDrive) */
        unsigned blocked        : 1;    /* 1=powermanagment told us not to do 
anything, so sleep nicely */
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to