Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartlomiej Zolnierkiewicz <b.zolnierkiewicz@elka.pw.edu.pl>2004-06-04 23:00:55 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-06-04 23:00:55 -0700
commit8cf715b345651dac31ec7d6451d36bbe06807358 (patch)
treeed51655b8694251cc7b3f045d4ebf7dbcf2fbd53
parentda5aad2ecc57ce268b3f8421ac5e1cd759982c66 (diff)
[PATCH] ide: change CONFIG_IDEDISK_STOKE to a runtime option
From: Christoph Hellwig <hch@lst.de> To be useful for distribution kernels it needs to be a runtime option. The original patch is from Joerg Platte via the Debian kernel package, with some adjustments from me (and me too - Bart). Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@elka.pw.edu.pl> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--Documentation/ide.txt7
-rw-r--r--drivers/ide/Kconfig14
-rw-r--r--drivers/ide/ide-disk.c9
-rw-r--r--drivers/ide/ide.c5
-rw-r--r--include/linux/ide.h1
5 files changed, 16 insertions, 20 deletions
diff --git a/Documentation/ide.txt b/Documentation/ide.txt
index 07811d2df557..58853a4ef4f0 100644
--- a/Documentation/ide.txt
+++ b/Documentation/ide.txt
@@ -248,6 +248,13 @@ Summary of ide driver parameters for kernel command line
allowing ide-floppy, ide-tape, and ide-cdrom|writers
to use ide-scsi emulation on a device specific option.
+ "hdx=stroke" : Should you have a system w/ an AWARD Bios and your
+ drives are larger than 32GB and it will not boot,
+ one is required to perform a few OEM operations first.
+ The option is called "stroke" because it allows one
+ to "soft clip" the drive to work around a barrier
+ limit.
+
"idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz,
where "xx" is between 20 and 66 inclusive,
used when tuning chipset PIO modes.
diff --git a/drivers/ide/Kconfig b/drivers/ide/Kconfig
index c43ac493de25..88cf3fa9a19c 100644
--- a/drivers/ide/Kconfig
+++ b/drivers/ide/Kconfig
@@ -157,20 +157,6 @@ config IDEDISK_MULTI_MODE
If in doubt, say N.
-config IDEDISK_STROKE
- bool "Auto-Geometry Resizing support"
- depends on BLK_DEV_IDEDISK
- help
- Should you have a system w/ an AWARD Bios and your drives are larger
- than 32GB and it will not boot, one is required to perform a few OEM
- operations first. The option is called "STROKE" because it allows
- one to "soft clip" the drive to work around a barrier limit. For
- Maxtor drives it is called "jumpon.exe". Please search Maxtor's
- web-site for "JUMPON.EXE". IBM has a similar tool at:
- <http://www.storage.ibm.com/hdd/support/download.htm>.
-
- If you are unsure, say N here.
-
config BLK_DEV_IDECS
tristate "PCMCIA IDE support"
depends on PCMCIA
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c
index 47761a0a5486..c10cfe589817 100644
--- a/drivers/ide/ide-disk.c
+++ b/drivers/ide/ide-disk.c
@@ -963,7 +963,6 @@ static unsigned long long idedisk_read_native_max_address_ext(ide_drive_t *drive
return addr;
}
-#ifdef CONFIG_IDEDISK_STROKE
/*
* Sets maximum virtual LBA address of the drive.
* Returns new maximum virtual LBA address (> 0) or 0 on failure.
@@ -1032,8 +1031,6 @@ static unsigned long long idedisk_set_max_address_ext(ide_drive_t *drive, unsign
return addr_set;
}
-#endif /* CONFIG_IDEDISK_STROKE */
-
static unsigned long long sectors_to_MB(unsigned long long n)
{
n <<= 9; /* make it bytes */
@@ -1080,7 +1077,10 @@ static inline void idedisk_check_hpa(ide_drive_t *drive)
drive->name,
capacity, sectors_to_MB(capacity),
set_max, sectors_to_MB(set_max));
-#ifdef CONFIG_IDEDISK_STROKE
+
+ if (!drive->stroke)
+ return;
+
if (lba48)
set_max = idedisk_set_max_address_ext(drive, set_max);
else
@@ -1090,7 +1090,6 @@ static inline void idedisk_check_hpa(ide_drive_t *drive)
printk(KERN_INFO "%s: Host Protected Area disabled.\n",
drive->name);
}
-#endif
}
/*
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c
index bc60dfb78c0a..a140efb2110b 100644
--- a/drivers/ide/ide.c
+++ b/drivers/ide/ide.c
@@ -1806,7 +1806,7 @@ 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", "serialize",
- "autotune", "noautotune", "minus8", "swapdata", "bswap",
+ "autotune", "noautotune", "stroke", "swapdata", "bswap",
"minus11", "remap", "remap63", "scsi", NULL };
unit = s[2] - 'a';
hw = unit / MAX_DRIVES;
@@ -1840,6 +1840,9 @@ int __init ide_setup (char *s)
case -7: /* "noautotune" */
drive->autotune = IDE_TUNE_NOAUTO;
goto done;
+ case -8: /* stroke */
+ drive->stroke = 1;
+ goto done;
case -9: /* "swapdata" */
case -10: /* "bswap" */
drive->bswap = 1;
diff --git a/include/linux/ide.h b/include/linux/ide.h
index 8a773de2c037..25eedd92f090 100644
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -751,6 +751,7 @@ typedef struct ide_drive_s {
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 vdma : 1; /* 1=doing PIO over DMA 0=doing normal DMA */
+ unsigned stroke : 1; /* from: hdx=stroke */
unsigned addressing; /* : 3;
* 0=28-bit
* 1=48-bit