diff options
author | sos <sos@FreeBSD.org> | 2006-09-14 19:12:29 +0000 |
---|---|---|
committer | sos <sos@FreeBSD.org> | 2006-09-14 19:12:29 +0000 |
commit | 9e400dc51815f922b03887de42495e22ed1b647e (patch) | |
tree | 0d18db0bbdcf7a9791795ce798bdb44ac2b466f5 /sys/dev/ata | |
parent | a56922940899f6d2155d6b9ecc3989b01398a1c4 (diff) | |
download | FreeBSD-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.c | 3 |
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 | |