ide-disk: fix IDE_DFLAG_LBA48 handling on resume
Some code in idedisk_setup() should be in idedisk_capacity() instead. Acked-by: Borislav Petkov <petkovbb@gmail.com> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
This commit is contained in:
@@ -403,6 +403,26 @@ static void init_idedisk_capacity(ide_drive_t *drive)
|
|||||||
if (ata_id_hpa_enabled(id))
|
if (ata_id_hpa_enabled(id))
|
||||||
idedisk_check_hpa(drive);
|
idedisk_check_hpa(drive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* limit drive capacity to 137GB if LBA48 cannot be used */
|
||||||
|
if ((drive->dev_flags & IDE_DFLAG_LBA48) == 0 &&
|
||||||
|
drive->capacity64 > 1ULL << 28) {
|
||||||
|
printk(KERN_WARNING "%s: cannot use LBA48 - full capacity "
|
||||||
|
"%llu sectors (%llu MB)\n",
|
||||||
|
drive->name, (unsigned long long)drive->capacity64,
|
||||||
|
sectors_to_MB(drive->capacity64));
|
||||||
|
drive->capacity64 = 1ULL << 28;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((drive->hwif->host_flags & IDE_HFLAG_NO_LBA48_DMA) &&
|
||||||
|
(drive->dev_flags & IDE_DFLAG_LBA48)) {
|
||||||
|
if (drive->capacity64 > 1ULL << 28) {
|
||||||
|
printk(KERN_INFO "%s: cannot use LBA48 DMA - PIO mode"
|
||||||
|
" will be used for accessing sectors "
|
||||||
|
"> %u\n", drive->name, 1 << 28);
|
||||||
|
} else
|
||||||
|
drive->dev_flags &= ~IDE_DFLAG_LBA48;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sector_t ide_disk_capacity(ide_drive_t *drive)
|
sector_t ide_disk_capacity(ide_drive_t *drive)
|
||||||
@@ -654,26 +674,6 @@ static void idedisk_setup(ide_drive_t *drive)
|
|||||||
/* calculate drive capacity, and select LBA if possible */
|
/* calculate drive capacity, and select LBA if possible */
|
||||||
init_idedisk_capacity(drive);
|
init_idedisk_capacity(drive);
|
||||||
|
|
||||||
/* limit drive capacity to 137GB if LBA48 cannot be used */
|
|
||||||
if ((drive->dev_flags & IDE_DFLAG_LBA48) == 0 &&
|
|
||||||
drive->capacity64 > 1ULL << 28) {
|
|
||||||
printk(KERN_WARNING "%s: cannot use LBA48 - full capacity "
|
|
||||||
"%llu sectors (%llu MB)\n",
|
|
||||||
drive->name, (unsigned long long)drive->capacity64,
|
|
||||||
sectors_to_MB(drive->capacity64));
|
|
||||||
drive->capacity64 = 1ULL << 28;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((hwif->host_flags & IDE_HFLAG_NO_LBA48_DMA) &&
|
|
||||||
(drive->dev_flags & IDE_DFLAG_LBA48)) {
|
|
||||||
if (drive->capacity64 > 1ULL << 28) {
|
|
||||||
printk(KERN_INFO "%s: cannot use LBA48 DMA - PIO mode"
|
|
||||||
" will be used for accessing sectors "
|
|
||||||
"> %u\n", drive->name, 1 << 28);
|
|
||||||
} else
|
|
||||||
drive->dev_flags &= ~IDE_DFLAG_LBA48;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* if possible, give fdisk access to more of the drive,
|
* if possible, give fdisk access to more of the drive,
|
||||||
* by correcting bios_cyls:
|
* by correcting bios_cyls:
|
||||||
|
Reference in New Issue
Block a user