summaryrefslogtreecommitdiffstats
path: root/sys/dev/ata
diff options
context:
space:
mode:
authorsos <sos@FreeBSD.org>2006-09-14 19:12:29 +0000
committersos <sos@FreeBSD.org>2006-09-14 19:12:29 +0000
commit9e400dc51815f922b03887de42495e22ed1b647e (patch)
tree0d18db0bbdcf7a9791795ce798bdb44ac2b466f5 /sys/dev/ata
parenta56922940899f6d2155d6b9ecc3989b01398a1c4 (diff)
downloadFreeBSD-src-9e400dc51815f922b03887de42495e22ed1b647e.zip
FreeBSD-src-9e400dc51815f922b03887de42495e22ed1b647e.tar.gz
If current_heads or current_sectors in the disk cap page are zero, dont try to use the current_ geometry.
This avoids a panic with BIOS'n that sets these to zero.
Diffstat (limited to 'sys/dev/ata')
-rw-r--r--sys/dev/ata/ata-disk.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/dev/ata/ata-disk.c b/sys/dev/ata/ata-disk.c
index 785699f..acdb37a 100644
--- a/sys/dev/ata/ata-disk.c
+++ b/sys/dev/ata/ata-disk.c
@@ -105,7 +105,8 @@ ad_attach(device_t dev)
}
device_set_ivars(dev, adp);
- if (atadev->param.atavalid & ATA_FLAG_54_58) {
+ if ((atadev->param.atavalid & ATA_FLAG_54_58) &&
+ atadev->param.current_heads && atadev->param.current_sectors) {
adp->heads = atadev->param.current_heads;
adp->sectors = atadev->param.current_sectors;
adp->total_secs = (u_int32_t)atadev->param.current_size_1 |
OpenPOWER on IntegriCloud