Commit bba47a5d authored by Bartlomiej Zolnierkiewicz's avatar Bartlomiej Zolnierkiewicz Committed by Linus Torvalds

[PATCH] remove "biostimings" boot options

They were added by Torben to workaround ServerWorks driver problems
(fixed by previous patch), but depending on BIOS can be dangerous on
other chipsets and it is always better to fix specific driver.

Removal of these options was acked by Torben.
parent 2ede979b
...@@ -242,9 +242,6 @@ Summary of ide driver parameters for kernel command line ...@@ -242,9 +242,6 @@ 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=biostimings" : driver will NOT attempt to tune interface speed
(DMA/PIO) but always honour BIOS timings.
"hdx=slow" : insert a huge pause after each access to the data "hdx=slow" : insert a huge pause after each access to the data
port. Should be used only as a last resort. port. Should be used only as a last resort.
...@@ -293,9 +290,6 @@ Summary of ide driver parameters for kernel command line ...@@ -293,9 +290,6 @@ Summary of ide driver parameters for kernel command line
This is the default for most chipsets, This is the default for most chipsets,
except the cmd640. except the cmd640.
"idex=biostimings" : driver will NOT attempt to tune interface speed
(DMA/PIO) but always honour BIOS timings.
"idex=serialize" : do not overlap operations on idex. Please note "idex=serialize" : do not overlap operations on idex. Please note
that you will have to specify this option for that you will have to specify this option for
both the respecitve primary and secondary channel both the respecitve primary and secondary channel
......
...@@ -1105,18 +1105,9 @@ void ide_setup_dma (ide_hwif_t *hwif, unsigned long dma_base, unsigned int num_p ...@@ -1105,18 +1105,9 @@ void ide_setup_dma (ide_hwif_t *hwif, unsigned long dma_base, unsigned int num_p
if (hwif->chipset != ide_trm290) { if (hwif->chipset != ide_trm290) {
u8 dma_stat = hwif->INB(hwif->dma_status); u8 dma_stat = hwif->INB(hwif->dma_status);
printk(", BIOS settings: %s:%s%s, %s:%s%s", printk(", BIOS settings: %s:%s, %s:%s",
hwif->drives[0].name, (dma_stat & 0x20) ? "DMA" : "pio", hwif->drives[0].name, (dma_stat & 0x20) ? "DMA" : "pio",
hwif->drives[0].autotune == IDE_TUNE_BIOS ? hwif->drives[1].name, (dma_stat & 0x40) ? "DMA" : "pio");
" (used)" : "",
hwif->drives[1].name, (dma_stat & 0x40) ? "DMA" : "pio",
hwif->drives[1].autotune == IDE_TUNE_BIOS ?
" (used)" : "");
if (hwif->drives[0].autotune == IDE_TUNE_BIOS)
hwif->drives[0].using_dma = (dma_stat & 0x20);
if (hwif->drives[1].autotune == IDE_TUNE_BIOS)
hwif->drives[1].using_dma = (dma_stat & 0x40);
} }
printk("\n"); printk("\n");
......
...@@ -1846,8 +1846,6 @@ static int __initdata is_chipset_set[MAX_HWIFS]; ...@@ -1846,8 +1846,6 @@ static int __initdata is_chipset_set[MAX_HWIFS];
* Not fully supported by all chipset types, * Not fully supported by all chipset types,
* and quite likely to cause trouble with * and quite likely to cause trouble with
* older/odd IDE drives. * older/odd IDE drives.
* "hdx=biostimings" : driver will NOT attempt to tune interface speed
* (DMA/PIO) but always honour BIOS timings.
* "hdx=slow" : insert a huge pause after each access to the data * "hdx=slow" : insert a huge pause after each access to the data
* port. Should be used only as a last resort. * port. Should be used only as a last resort.
* *
...@@ -1884,8 +1882,6 @@ static int __initdata is_chipset_set[MAX_HWIFS]; ...@@ -1884,8 +1882,6 @@ static int __initdata is_chipset_set[MAX_HWIFS];
* "idex=noautotune" : driver will NOT attempt to tune interface speed * "idex=noautotune" : driver will NOT attempt to tune interface speed
* This is the default for most chipsets, * This is the default for most chipsets,
* except the cmd640. * except the cmd640.
* "idex=biostimings" : driver will NOT attempt to tune interface speed
* (DMA/PIO) but always honour BIOS timings.
* "idex=serialize" : do not overlap operations on idex and ide(x^1) * "idex=serialize" : do not overlap operations on idex and ide(x^1)
* "idex=four" : four drives on idex and ide(x^1) share same ports * "idex=four" : four drives on idex and ide(x^1) share same ports
* "idex=reset" : reset interface before first use * "idex=reset" : reset interface before first use
...@@ -1961,8 +1957,7 @@ int __init ide_setup (char *s) ...@@ -1961,8 +1957,7 @@ int __init ide_setup (char *s)
const char *hd_words[] = { const char *hd_words[] = {
"none", "noprobe", "nowerr", "cdrom", "serialize", "none", "noprobe", "nowerr", "cdrom", "serialize",
"autotune", "noautotune", "slow", "swapdata", "bswap", "autotune", "noautotune", "slow", "swapdata", "bswap",
"flash", "remap", "remap63", "scsi", "biostimings", "flash", "remap", "remap63", "scsi", NULL };
NULL };
unit = s[2] - 'a'; unit = s[2] - 'a';
hw = unit / MAX_DRIVES; hw = unit / MAX_DRIVES;
unit = unit % MAX_DRIVES; unit = unit % MAX_DRIVES;
...@@ -2028,9 +2023,6 @@ int __init ide_setup (char *s) ...@@ -2028,9 +2023,6 @@ int __init ide_setup (char *s)
case -14: /* "scsi" */ case -14: /* "scsi" */
drive->scsi = 1; drive->scsi = 1;
goto done; goto done;
case -15: /* "biostimings" */
drive->autotune = IDE_TUNE_BIOS;
goto done;
case 3: /* cyl,head,sect */ case 3: /* cyl,head,sect */
drive->media = ide_disk; drive->media = ide_disk;
drive->cyl = drive->bios_cyl = vals[0]; drive->cyl = drive->bios_cyl = vals[0];
...@@ -2065,11 +2057,11 @@ int __init ide_setup (char *s) ...@@ -2065,11 +2057,11 @@ int __init ide_setup (char *s)
if (s[3] >= '0' && s[3] <= max_hwif) { if (s[3] >= '0' && s[3] <= max_hwif) {
/* /*
* Be VERY CAREFUL changing this: note hardcoded indexes below * Be VERY CAREFUL changing this: note hardcoded indexes below
* -9,-10 : are reserved for future idex calls to ease the hardcoding. * (-8, -9, -10) are reserved to ease the hardcoding.
*/ */
const char *ide_words[] = { const char *ide_words[] = {
"noprobe", "serialize", "autotune", "noautotune", "noprobe", "serialize", "autotune", "noautotune",
"reset", "dma", "ata66", "biostimings", "minus9", "reset", "dma", "ata66", "minus8", "minus9",
"minus10", "four", "qd65xx", "ht6560b", "cmd640_vlb", "minus10", "four", "qd65xx", "ht6560b", "cmd640_vlb",
"dtc2278", "umc8672", "ali14xx", "dc4030", NULL }; "dtc2278", "umc8672", "ali14xx", "dc4030", NULL };
hw = s[3] - '0'; hw = s[3] - '0';
...@@ -2149,11 +2141,8 @@ int __init ide_setup (char *s) ...@@ -2149,11 +2141,8 @@ int __init ide_setup (char *s)
#endif /* CONFIG_BLK_DEV_4DRIVES */ #endif /* CONFIG_BLK_DEV_4DRIVES */
case -10: /* minus10 */ case -10: /* minus10 */
case -9: /* minus9 */ case -9: /* minus9 */
case -8: /* minus8 */
goto bad_option; goto bad_option;
case -8: /* "biostimings" */
hwif->drives[0].autotune = IDE_TUNE_BIOS;
hwif->drives[1].autotune = IDE_TUNE_BIOS;
goto done;
case -7: /* ata66 */ case -7: /* ata66 */
#ifdef CONFIG_BLK_DEV_IDEPCI #ifdef CONFIG_BLK_DEV_IDEPCI
hwif->udma_four = 1; hwif->udma_four = 1;
......
...@@ -587,7 +587,6 @@ void ide_pci_setup_ports(struct pci_dev *dev, ide_pci_device_t *d, int autodma, ...@@ -587,7 +587,6 @@ void ide_pci_setup_ports(struct pci_dev *dev, ide_pci_device_t *d, int autodma,
int at_least_one_hwif_enabled = 0; int at_least_one_hwif_enabled = 0;
ide_hwif_t *hwif, *mate = NULL; ide_hwif_t *hwif, *mate = NULL;
static int secondpdc = 0; static int secondpdc = 0;
int drive0_tune, drive1_tune;
u8 tmp; u8 tmp;
index->all = 0xf0f0; index->all = 0xf0f0;
...@@ -648,27 +647,12 @@ void ide_pci_setup_ports(struct pci_dev *dev, ide_pci_device_t *d, int autodma, ...@@ -648,27 +647,12 @@ void ide_pci_setup_ports(struct pci_dev *dev, ide_pci_device_t *d, int autodma,
else else
ide_hwif_setup_dma(dev, d, hwif); ide_hwif_setup_dma(dev, d, hwif);
bypass_legacy_dma: bypass_legacy_dma:
drive0_tune = hwif->drives[0].autotune;
drive1_tune = hwif->drives[1].autotune;
if (d->init_hwif) if (d->init_hwif)
/* Call chipset-specific routine /* Call chipset-specific routine
* for each enabled hwif * for each enabled hwif
*/ */
d->init_hwif(hwif); d->init_hwif(hwif);
/*
* This is in the wrong place. The driver may
* do set up based on the autotune value and this
* will then trash it. Torben please move it and
* propagate the fixes into the drivers
*/
if (drive0_tune == IDE_TUNE_BIOS) /* biostimings */
hwif->drives[0].autotune = IDE_TUNE_BIOS;
if (drive1_tune == IDE_TUNE_BIOS)
hwif->drives[1].autotune = IDE_TUNE_BIOS;
mate = hwif; mate = hwif;
at_least_one_hwif_enabled = 1; at_least_one_hwif_enabled = 1;
} }
......
...@@ -107,7 +107,6 @@ typedef unsigned char byte; /* used everywhere */ ...@@ -107,7 +107,6 @@ typedef unsigned char byte; /* used everywhere */
/* /*
* Tune flags * Tune flags
*/ */
#define IDE_TUNE_BIOS 3
#define IDE_TUNE_NOAUTO 2 #define IDE_TUNE_NOAUTO 2
#define IDE_TUNE_AUTO 1 #define IDE_TUNE_AUTO 1
#define IDE_TUNE_DEFAULT 0 #define IDE_TUNE_DEFAULT 0
...@@ -722,8 +721,7 @@ typedef struct ide_drive_s { ...@@ -722,8 +721,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 autotune : 3; /* 1=autotune, 2=noautotune, unsigned autotune : 2; /* 0=default, 1=autotune, 2=noautotune */
3=biostimings, 0=default */
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 ata_flash : 1; /* 1=present, 0=default */ unsigned ata_flash : 1; /* 1=present, 0=default */
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 */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment