diff options
| author | Bartlomiej Zolnierkiewicz <b.zolnierkiewicz@elka.pw.edu.pl> | 2004-06-04 23:00:55 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-06-04 23:00:55 -0700 |
| commit | 8cf715b345651dac31ec7d6451d36bbe06807358 (patch) | |
| tree | ed51655b8694251cc7b3f045d4ebf7dbcf2fbd53 | |
| parent | da5aad2ecc57ce268b3f8421ac5e1cd759982c66 (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.txt | 7 | ||||
| -rw-r--r-- | drivers/ide/Kconfig | 14 | ||||
| -rw-r--r-- | drivers/ide/ide-disk.c | 9 | ||||
| -rw-r--r-- | drivers/ide/ide.c | 5 | ||||
| -rw-r--r-- | include/linux/ide.h | 1 |
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 |
