RE: Kernel newbie finds "infelicity", if not bug, in IDE[-PROBE].

BROWN Nick (Nick.BROWN@coe.fr)
Wed, 21 Apr 1999 14:09:57 +0200


First a couple of corrections to my posts from yesterday; there will
undoubtedly be gazillions more; thanks to Mark and Andries for this learning
experience !

>>(NB) - call INT 13h AH=8 and use the resulting ES:DI pointer as the FDP
table.
It appears that this is a Phoenix extension, so I dropped it from my patch.

>>(NB)- call INT 13h AH=8 and fill in head, cylinders, sectors, and the
control
>>(NB) byte (just the "head > 8" flag) by hand.
If INITSEG space is short, it ought to be possible to squeeze more drive
info in there. We really only need cyls/head/sectors, 4 bytes per drive -
the ctl byte seems to be more or less irrelevant since the only flag likely
to be non-zero is bit 3, "heads > 8", which we can derive if we ever need
it. So we could fit 8 drives into the 32 bytes currently used for the FDP
table copies.

<quote from other thread "Wierd IDE configuration">
>> (aeb)It is well documented how to avoid having problems.
>> (aeb)(For example, boot with hdc=c,h,s, or give fdisk an explicit
geometry.)
</quote from other thread "Wierd IDE configuration">
One thing I'm quite certain of, is that Joe Public is not about to put Linux
on his machine if he needs to get CHS values right in the boot command line.
We appear to have two categories of people who are likely to hit this
problem:
- anyone with IDE drives, SCSI drives, and a SCSI BIOS
- anyone with hard drives hda and hdc; for example, if hdb is a CD.
That's a small, but not trivial, percentage of the user population.

>(aeb)And calling INT 13h AH=8 does not necessarily give you IDE
information.
It does, however, give us all the disks which the BIOS knows about, which I
presume ought to include the IDE drives, plus any SCSI drives which the BIOS
can handle.

I suppose we then hit the question of when the IDE/SCSI distinction should
be made. I wonder if there's enough information to do this around at
setup.S time; I suspect it will involve the IDE driver asking the BIOS and
*somehow* reconciling the BIOS drive list with the do_identify()-type data.

A more fundamental question, perhaps: why do we need BIOS-translated
geometry at all ? And if we need it for IDE disks, then can someone explain
whether we need it for those SCSI disks which the BIOS can't see - and if
so, how is it calculated for them ?

<nice-things-about-M$>
A neat feature of the Windows NT disk model that there are _only_ SCSI
controllers; an IDE controller is just another (2-port) SCSI bus. I don't
know off-hand if this means that NT can't support XT-style disk
controllers...
</nice-things-about-M$>

<nasty-thought>
If I were in the business of rigging demos to make Linux look bad, I would
certainly be making sure the Linux box had lots of IDE drives, preferably
partitioned by DOS or while they were hd0/hd1. And I'd add a SCSI card with
a BIOS for good measure. (I imaging the SCSI/IDE conflicts can be minimised
by disabling the BIOS on cards like the 2940, if you don't need SCSI boot.)
</nasty-thought>

---------------------------------------------------------------
|\ | o _ |/ Life's like a jigsaw
| \| | |_ |\ You get the straight bits
But there's something missing in the middle

Nick Brown, Strasbourg, France (Nick(dot)Brown(at)coe(dot)fr)
---------------------------------------------------------------

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/