Subject: Re: REALLY BIG DISKS ...
To: None <rvb@sicily.odyssey.cs.cmu.edu>
From: Michael Graff <explorer@flame.org>
List: tech-kern
Date: 07/30/1998 22:43:51
rvb@sicily.odyssey.cs.cmu.edu writes:

> But the more interesting problem is that the disk reports (ATA
> IDENTIFY) that it has only 16383 cylinders (2**14-1).  In the old
> days, this was an IDE limit I think.  I don't have a new ATA spec
> handy so if some kind sole could look up and see if there is a field
> returned to IDENTIFY that indicates the true number of cylinders
> that would be handy.  If there is not, then I guess the thing to
> do is to regenerate the lp->d_ncylinders based on the d_secperunit
> divided by the tracks and sectors per track.  Now the interesting
> question is whether this fix is an x86 only hack, which belongs 
> somewhere in disksubr.c or whether it is a generic IDE problem
> that needs to be handled in ic/wdc.c after it does the IDENTIFY
> command.

IMHO, believing what the drive returns is just fine in most cases...

I have a SCSI controller that I _must_ do this work to make NetBSD
1.3.2 install on a SCSI drive of _any_ size:

parameters extracted from in-core disklabel are:
cylinders=3511 heads=11 sectors/track=108 (1188 sectors/cylinder)

parameters to be used for BIOS calculations are:
cylinders=259 heads=255 sectors/track=63 (16065 sectors/cylinder)

Notice the BIOS parameters are an outright lie -- this is common on
"mapping" drives, but I needed to have the BIOS table match what the
controller wants.  Even if this disk is not used for any other OS
than NetBSD.

I was confused for some time until I figgured this out.

--Michael