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
|
and quite likely to cause trouble with
|
||||||
older/odd IDE drives.
|
older/odd IDE drives.
|
||||||
|
|
||||||
|
"hdx=nodma" : disallow DMA
|
||||||
|
|
||||||
"hdx=swapdata" : when the drive is a disk, byte swap all data
|
"hdx=swapdata" : when the drive is a disk, byte swap all data
|
||||||
|
|
||||||
"hdx=bswap" : same as above..........
|
"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=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
|
The following are valid ONLY on ide0, which usually corresponds
|
||||||
to the first ATA interface found on the particular host, and the defaults for
|
to the first ATA interface found on the particular host, and the defaults for
|
||||||
the base,ctl ports must not be altered.
|
the base,ctl ports must not be altered.
|
||||||
|
|
|
@ -759,7 +759,7 @@ static int ide_tune_dma(ide_drive_t *drive)
|
||||||
{
|
{
|
||||||
u8 speed;
|
u8 speed;
|
||||||
|
|
||||||
if (noautodma || (drive->id->capability & 1) == 0)
|
if (noautodma || drive->nodma || (drive->id->capability & 1) == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* consult the list of known "bad" drives */
|
/* consult the list of known "bad" drives */
|
||||||
|
|
|
@ -1272,7 +1272,7 @@ static int __init ide_setup(char *s)
|
||||||
if (!strcmp(s, "ide=nodma")) {
|
if (!strcmp(s, "ide=nodma")) {
|
||||||
printk(" : Prevented DMA\n");
|
printk(" : Prevented DMA\n");
|
||||||
noautodma = 1;
|
noautodma = 1;
|
||||||
return 1;
|
goto obsolete_option;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_IDEPCI_PCIBUS_ORDER
|
#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) {
|
if (s[0] == 'h' && s[1] == 'd' && s[2] >= 'a' && s[2] <= max_drive) {
|
||||||
const char *hd_words[] = {
|
const char *hd_words[] = {
|
||||||
"none", "noprobe", "nowerr", "cdrom", "minus5",
|
"none", "noprobe", "nowerr", "cdrom", "nodma",
|
||||||
"autotune", "noautotune", "minus8", "swapdata", "bswap",
|
"autotune", "noautotune", "minus8", "swapdata", "bswap",
|
||||||
"noflush", "remap", "remap63", "scsi", NULL };
|
"noflush", "remap", "remap63", "scsi", NULL };
|
||||||
unit = s[2] - 'a';
|
unit = s[2] - 'a';
|
||||||
|
@ -1334,6 +1334,9 @@ static int __init ide_setup(char *s)
|
||||||
drive->ready_stat = 0;
|
drive->ready_stat = 0;
|
||||||
hwif->noprobe = 0;
|
hwif->noprobe = 0;
|
||||||
goto done;
|
goto done;
|
||||||
|
case -5: /* nodma */
|
||||||
|
drive->nodma = 1;
|
||||||
|
goto done;
|
||||||
case -6: /* "autotune" */
|
case -6: /* "autotune" */
|
||||||
drive->autotune = IDE_TUNE_AUTO;
|
drive->autotune = IDE_TUNE_AUTO;
|
||||||
goto obsolete_option;
|
goto obsolete_option;
|
||||||
|
|
|
@ -599,6 +599,7 @@ typedef struct ide_drive_s {
|
||||||
unsigned nice0 : 1; /* give obvious excess bandwidth */
|
unsigned nice0 : 1; /* give obvious excess bandwidth */
|
||||||
unsigned nice2 : 1; /* give a share in our own bandwidth */
|
unsigned nice2 : 1; /* give a share in our own bandwidth */
|
||||||
unsigned doorlocking : 1; /* for removable only: door lock/unlock works */
|
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 autotune : 2; /* 0=default, 1=autotune, 2=noautotune */
|
||||||
unsigned remap_0_to_1 : 1; /* 0=noremap, 1=remap 0->1 (for EZDrive) */
|
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 */
|
unsigned blocked : 1; /* 1=powermanagment told us not to do anything, so sleep nicely */
|
||||||
|
|
Loading…
Reference in New Issue