Skip to contentSkip to conversation

ide: preserve HPA by default

PATCH In review Bartlomiej Zolnierkiewicz 2 participants 2 messages May 25, 2009

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

PATCH 2/3 ide: preserve HPA by default

Add CONFIG_IDE_PRESERVE_HPA config option (enabled by default) to streamline the transition.

The config option help text is heavily based on Alan's feedback about the issue.

---
 Documentation/kernel-parameters.txt |    4 ++--
 drivers/ide/Kconfig                 |   22 ++++++++++++++++++++++
 drivers/ide/ide.c                   |    4 ++++
 3 files changed, 28 insertions(+), 2 deletions(-)
Documentation/kernel-parameters.txt +2 -2
Index: b/Documentation/kernel-parameters.txt
===================================================================
@@ -843,8 +843,8 @@ and is between 256 and 4096 characters. 
 			[HW] (E)IDE subsystem
 			Ignore HPA limit
 			Format: { "0" | "1" }
-			0 -- keep BIOS limits
-			1 -- ignore limits, using full disk (default)
+			0 -- keep BIOS limits (default)
+			1 -- ignore limits, using full disk
 
 	ide-pci-generic.all-generic-ide [HW] (E)IDE subsystem
 			Claim all unknown PCI IDE storage controllers.
drivers/ide/Kconfig +22 -0
Index: b/drivers/ide/Kconfig
===================================================================
@@ -91,6 +91,28 @@ config BLK_DEV_IDE_SATA
 
 	  If unsure, say N.
 
+config IDE_PRESERVE_HPA
+	bool "Preserve Host Protected Area (please read help)"
+	default y
+	help
+	  From the majority of modern users perspectives ignoring the HPA
+	  breaks vendor RAID formats, GPT partitions or risks corrupting
+	  firmware.
+
+	  Unfortunately the original (kernel versions < 2.6.30) behavior
+	  (ignoring HPA, using full disk capacity) was introduced at the
+	  time when the main HPA use was with the jumper (or software)
+	  to make the drive look small enough for the BIOS to allow boot
+	  with big drives.
+
+	  To allow the maximum compatibility with the existing setups
+	  (using HPA and partitioned with HPA disabled) the default HPA
+	  behavior can be also later adjusted using "ignore_hpa" module
+	  parameter (i.e. "ide_core.ignore_hpa=1").
+
+	  Say Y unless you have such setup and for some reason cannot
+	  use "ignore_hpa" module parameter.
+
 config IDE_GD
 	tristate "generic ATA/ATAPI disk support"
 	default y
drivers/ide/ide.c +4 -0
Index: b/drivers/ide/ide.c
===================================================================
@@ -166,7 +166,11 @@ struct bus_type ide_bus_type = {
 
 EXPORT_SYMBOL_GPL(ide_bus_type);
 
+#ifdef CONFIG_IDE_PRESERVE_HPA
+int ide_ignore_hpa = 0;
+#else
 int ide_ignore_hpa = 1;
+#endif
 EXPORT_SYMBOL_GPL(ide_ignore_hpa);
 
 module_param_named(ignore_hpa, ide_ignore_hpa, int, 0);
#1 lore raw
Quoted 3 lines · Bartlomiej Zolnierkiewicz
drivers/ide/Kconfig +0 -0
@@ -91,6 +91,28 @@ config BLK_DEV_IDE_SATA

[...]

drivers/ide/Kconfig config BLK_DEV_IDE_SATA · line 100

Quoted 7 lines
drivers/ide/Kconfig +7 -0
+config IDE_PRESERVE_HPA
+       bool "Preserve Host Protected Area (please read help)"
+       default y
+       help
+         From the majority of modern users perspectives ignoring the HPA
+         breaks vendor RAID formats, GPT partitions or risks corrupting
+         firmware.

First sentence would IMO read better as:
"From the perspective of most users of recent systems, ignoring the
HPA can break ..."

Maybe add "risks overwriting vendor system recovery tools"?

drivers/ide/Kconfig config BLK_DEV_IDE_SATA · line 106

Quoted 5 lines
drivers/ide/Kconfig +5 -0
+         Unfortunately the original (kernel versions < 2.6.30) behavior
+         (ignoring HPA, using full disk capacity) was introduced at the
+         time when the main HPA use was with the jumper (or software)
+         to make the drive look small enough for the BIOS to allow boot
+         with big drives.

"... the main use of HPA was to make the drive look small enough for the
BIOS to allow the system to boot with large capacity drives."

I've dropped the "with the jumper (or software)" as it's confusing and IMHO does not really add anything for the user (but see suggestion below).

drivers/ide/Kconfig config BLK_DEV_IDE_SATA · line 111

Quoted 4 lines
drivers/ide/Kconfig +4 -0
+         To allow the maximum compatibility with the existing setups
+         (using HPA and partitioned with HPA disabled) the default HPA
+         behavior can be also later adjusted using "ignore_hpa" module
+         parameter (i.e. "ide_core.ignore_hpa=1").

"... can also be adjusted later using the "ignore_hpa" ..."

Maybe add a para here that explains what "Preserve Host Protected Area" actually does, something like:
"If you say Y, the driver will respect the Host Protected Area if one is
defined in the BIOS or (for older drives) through a jumper setting on the drive."

drivers/ide/Kconfig config BLK_DEV_IDE_SATA · line 114

Quoted 2 lines
drivers/ide/Kconfig +2 -0
+         Say Y unless you have such setup and for some reason cannot
+         use "ignore_hpa" module parameter.

"... use the "ignore_hpa" module parameter."

Cheers,
FJP