Re: IDE spin-up improvement?

Johnny Tevessen (
29 May 1998 16:49:00 +0200


> I just meant to point out to the fellow
> that IDE hard drives normally (always?) spin up by themselves at boot
> time.

I'm always using LoadLin to do a warm boot into Linux, so it IS
possible (and mostly the case) that some of my drives are already
sleeping. Of course, a hardware reset (or power-on) makes the
thingies work, too.

> It looked to me as though that was the occasion he was talking
> about, because he said the kernel was checking for several drives in
> sequence--something it does then.

Yes, but I think you forget that booting Linux is not necessary
happening at the beginning of the drives' power-cycle.

> If it is
> at boot time, maybe what he wants--apart from a less sluggish drive--is a
> way to have the IDE driver read from his fastest (at spinning up) drives
> first, giving the slower ones a little more time to get moving.

This would not work with the current detection scheme:

[just an example, mostly it is hd[a-d]==awake,CDROM,slow,slow]:

A: spins up fast (or is awake)
B: spins up slow

1. kernel checking drive A
1a. kernel sending request to A
1b. drive A responds
1c. kernel: "found harddisk, type ..."
2. kernel checking drive B
2a. kernel sending request to B
2b. drive B spins up (kernel has to wait)
2c. drive B responds
2d. kernel: "found harddisk, type ..."

okay, you see that the kernel still has to wait, since "giving
the slower ones a little more time to get moving" requires to
give drive B a "little kick" *before* we are checking for drive A.

I'd like to eliminate "2b" above. How about inserting something
like this:

0. kernel booting
0a. kernel doing some init, processor, hardware...
0b. first init call to the IDE driver (if detected),
which sends a little message to *every* IDE
channel (since we have not yet checked them for
drives) causing any drive to spin up
0c1 kernel doing additional work, initializing
net and other stuff
0c2 meanwhile the drives spin up and do not require
the kernel to wait or listen on the IDE bus
now follows "1" from above. Leave "2b" out then, and: voila!

Does this work with the plain IDE (not EIDE) specification?
Especially this "NOP" command without having to wait for it
to succeed?

I've already seen one of my drives, a QUANTUM LIGHTNING 730A,
*not* to spin up in reading the partition table from disk
since it seems that the partition table was still cached
in the drive's hardware cache. So, is there a way to be
sure that the drive is up and running unter all circumstances,
or does it not matter in this situation?


Trust nobody.
## CrossPoint v3.11 ##

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to