change CONFIG_IDEDISK_STOKE to a runtime option
Subsystems (2)
PATCH 1/1 change CONFIG_IDEDISK_STOKE to a runtime option
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.
Documentation/ide.txt +7 -0
@@ -248,6 +248,13 @@ 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.
drivers/ide/Kconfig +0 -14
@@ -157,20 +157,6 @@ 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
drivers/ide/ide-disk.c +10 -13
@@ -963,7 +963,6 @@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 @@return addr_set; } -#endif /* CONFIG_IDEDISK_STROKE */ -static unsigned long long sectors_to_MB (unsigned long long n) { n <<=9 ;/* make it bytes */
@@ -1080,17 +1077,17 @@ drive->name, capacity,sectors_to_MB (capacity), set_max, sectors_to_MB(set_max)); -#ifdef CONFIG_IDEDISK_STROKE -if (lba48) - set_max =idedisk_set_max_address_ext (drive, set_max); -else - set_max =idedisk_set_max_address (drive, set_max); -if (set_max) { - drive->capacity64 = set_max; -printk (KERN_INFO "%s: Host Protected Area disabled.\n" , - drive->name); +if (drive->stroke) { +if (lba48) + set_max =idedisk_set_max_address_ext (drive, set_max); +else + set_max =idedisk_set_max_address (drive, set_max); +if (set_max) { + drive->capacity64 = set_max; +printk (KERN_INFO "%s: Host Protected Area disabled.\n" , + drive->name); + } } -#endif }/*
drivers/ide/ide.c +4 -1
@@ -1806,7 +1806,7 @@const char *hd_words[] = {"none" ,"noprobe" ,"nowerr" ,"cdrom" ,"serialize" ,"autotune" ,"noautotune" ,"minus8" ,"swapdata" ,"bswap" , -"minus11" ,"remap" ,"remap63" ,"scsi" ,NULL }; +"minus11" ,"remap" ,"remap63" ,"scsi" ,"stroke" ,NULL }; unit = s[2 ] -'a' ; hw = unit /MAX_DRIVES ; unit = unit %MAX_DRIVES ;
@@ -1851,6 +1851,9 @@ goto done;case -14 :/* "scsi" */ drive->scsi =1 ; + goto done; +case -15 :/* "stroke" */ + drive->stroke =1 ; goto done;case 3 :/* cyl,head,sect */ drive->media = ide_disk;
include/linux/ide.h +1 -0
@@ -742,6 +742,7 @@ 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