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 <sshtylyov@ru.mvista.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
parent
9ff6f72f43
commit
c223701cf6
|
@ -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.
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in New Issue