Re: Hard disk problem solved

From: Peter Holzer <hp_at_nospam.org>
Date: Thu Sep 09 1993 - 09:27:09 PDT

You (Andrew Valencia) wrote:

> >From my reading of your diffs, it looks like your controller won't
> automatically advance to the next head.

Yes.

> I'm guessing that this is
> because you have to use a pseudo-geometry (did the readp or the cmos
> command work for you in boot/boot.lst?)

No. I didn't expect cmos to work (The cmos entries are for type 1 (10MB
disk), ands are obviously ignored by the BIOS), but readp didn't either.
The Minix driver takes info from the BIOS parameter tables (int 41 and
45, I think). Could wd do the same? We just needed to map the first 1MB
physical memory into the wd's memory somewhere. I don't think I have a
pseudo-geometry. 26 sectors, 8 heads sounds reasonable for an RLL drive.

> I'm puzzled by why your drive needed a recalibrate. Since we boot
> from DOS, it should've been recalibrated already? It's good to add
> such initialization, but I'd like to understand how the drive got into
> an uncalibrated state in the first place.

It isn't really uncalibrated. Just the step-rate is off (seeking from
the first to the last cylinder takes several seconds). I have no idea
why DOS (MS-DOS 6.0) or the BIOS (AMI BIOS, 4 years old) changes the
step rate, but it obviously does. There are two possibilities to set
the step rate, and I chose the more radical.

> Is it necessary that the drive be calibrated twice? I see a recal once
> during the scan for disks, and again on the first I/O setup.

No, calibrated [unit] is set in wd_calibrate, if calibrate succeeded,
so the firstI/O will normally not recalibrate the drive again.

> There's no place which clears the calibrated[] entry, so why
> does this flag (calibrated[unit]) need to be kept?

I reset the flag after a hard error to force recalibration before the
next I/O. It seems I deleted this together with a bunch of debugging
printfs :-(

I also noticed that I hadn't deleted the status variable (in line 164)
when I moved the check whether calibrate had succeeded into
wd_calibrate, and that the wd_specify function still exists, but isn't
called anymore.

        hp

-- 
|    _  | Peter J. Holzer                       | Think of it   |
| |_|_) | Technical University Vienna           | as evolution  |
| | |   | Computer Science/Real-Time Systems    | in action!    |
| __/   | hp@vmars.tuwien.ac.at                 |     Tony Rand |
Received on Thu Sep 9 09:34:04 1993

This archive was generated by hypermail 2.1.8 : Wed Sep 21 2005 - 19:37:12 PDT