diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/ide/ide-disk.c | 8 | ||||
-rw-r--r-- | drivers/ide/ide.c | 10 |
2 files changed, 17 insertions, 1 deletions
diff --git a/drivers/ide/ide-disk.c b/drivers/ide/ide-disk.c index 61a6d3546221..3d92c9d54d47 100644 --- a/drivers/ide/ide-disk.c +++ b/drivers/ide/ide-disk.c | |||
@@ -350,6 +350,9 @@ static void idedisk_check_hpa(ide_drive_t *drive) | |||
350 | capacity, sectors_to_MB(capacity), | 350 | capacity, sectors_to_MB(capacity), |
351 | set_max, sectors_to_MB(set_max)); | 351 | set_max, sectors_to_MB(set_max)); |
352 | 352 | ||
353 | if ((drive->dev_flags & IDE_DFLAG_NOHPA) == 0) | ||
354 | return; | ||
355 | |||
353 | set_max = ide_disk_hpa_set_capacity(drive, set_max, lba48); | 356 | set_max = ide_disk_hpa_set_capacity(drive, set_max, lba48); |
354 | if (set_max) | 357 | if (set_max) |
355 | printk(KERN_INFO "%s: Host Protected Area disabled.\n", | 358 | printk(KERN_INFO "%s: Host Protected Area disabled.\n", |
@@ -430,8 +433,11 @@ static u64 ide_disk_set_capacity(ide_drive_t *drive, u64 capacity) | |||
430 | goto out; | 433 | goto out; |
431 | 434 | ||
432 | set = ide_disk_hpa_set_capacity(drive, set, lba48); | 435 | set = ide_disk_hpa_set_capacity(drive, set, lba48); |
433 | if (set) | 436 | if (set) { |
437 | /* needed for ->resume to disable HPA */ | ||
438 | drive->dev_flags |= IDE_DFLAG_NOHPA; | ||
434 | return set; | 439 | return set; |
440 | } | ||
435 | out: | 441 | out: |
436 | return drive->capacity64; | 442 | return drive->capacity64; |
437 | } | 443 | } |
diff --git a/drivers/ide/ide.c b/drivers/ide/ide.c index 92c9b90931e7..16d056939f9f 100644 --- a/drivers/ide/ide.c +++ b/drivers/ide/ide.c | |||
@@ -211,6 +211,11 @@ static unsigned int ide_noflush; | |||
211 | module_param_call(noflush, ide_set_dev_param_mask, NULL, &ide_noflush, 0); | 211 | module_param_call(noflush, ide_set_dev_param_mask, NULL, &ide_noflush, 0); |
212 | MODULE_PARM_DESC(noflush, "disable flush requests for a device"); | 212 | MODULE_PARM_DESC(noflush, "disable flush requests for a device"); |
213 | 213 | ||
214 | static unsigned int ide_nohpa; | ||
215 | |||
216 | module_param_call(nohpa, ide_set_dev_param_mask, NULL, &ide_nohpa, 0); | ||
217 | MODULE_PARM_DESC(nohpa, "disable Host Protected Area for a device"); | ||
218 | |||
214 | static unsigned int ide_noprobe; | 219 | static unsigned int ide_noprobe; |
215 | 220 | ||
216 | module_param_call(noprobe, ide_set_dev_param_mask, NULL, &ide_noprobe, 0); | 221 | module_param_call(noprobe, ide_set_dev_param_mask, NULL, &ide_noprobe, 0); |
@@ -281,6 +286,11 @@ static void ide_dev_apply_params(ide_drive_t *drive, u8 unit) | |||
281 | drive->name); | 286 | drive->name); |
282 | drive->dev_flags |= IDE_DFLAG_NOFLUSH; | 287 | drive->dev_flags |= IDE_DFLAG_NOFLUSH; |
283 | } | 288 | } |
289 | if (ide_nohpa & (1 << i)) { | ||
290 | printk(KERN_INFO "ide: disabling Host Protected Area for %s\n", | ||
291 | drive->name); | ||
292 | drive->dev_flags |= IDE_DFLAG_NOHPA; | ||
293 | } | ||
284 | if (ide_noprobe & (1 << i)) { | 294 | if (ide_noprobe & (1 << i)) { |
285 | printk(KERN_INFO "ide: skipping probe for %s\n", drive->name); | 295 | printk(KERN_INFO "ide: skipping probe for %s\n", drive->name); |
286 | drive->dev_flags |= IDE_DFLAG_NOPROBE; | 296 | drive->dev_flags |= IDE_DFLAG_NOPROBE; |