Re: patch-2.1.117 adds bad ide_xlate_1024()

Andries.Brouwer@cwi.nl
Mon, 24 Aug 1998 17:03:43 +0200 (MET DST)


From hedrick@Astro.Dyer.Vanderbilt.Edu Mon Aug 24 05:41:03 1998

Sorry to be scatter brained ...
If I am still mumbling to myself ...

Yes, I am afraid I am unable to extract information from your
sequences of words. Still, it is conceivable that you actually
wanted to say something meaningful.

This people that have formated and partitioned their system outside of
the LBA rules

Please, be *very* explicit, and very precise, if you can.
What `LBA rules' are you talking about? Do your LBA rules apply past 8 GB?

As an example, let me try to be precise on the topic of `Translation', the
process of massaging geometry parameters to remain within 6-bit S, 8-bit H, 10-bit C.

1. Disk parameter translation (ECHS), is the process of halving C, the cylinder
count, and doubling H, the head count until C <= 1024.
Some BIOSes call this translation `Large'.
This works up to 4 GB or so, but DOS cannot handle 256 heads, so we have
to avoid that.
1A. Modified ECHS will first change H=16 into H=15 and replace C by 16*C/15
before starting the above ECHS. This is done only when ECHS fails.
As a result, one sees H=240.
1B. A more common modification will use 63 sectors and 16, 32, 64, 128 or 255
heads. Some BIOSes call this translation `LBA' just to spread confusion.
(Note that in cases 1, 1A the number S (sectors/track) need not be 63.)
2. Any translation scheme fails past 8 GB.
So, since it doesnt work anyway, no translation is done for very large disks.

This is on the software side. On the hardware side one can address a disk
by CHS (cylinder/head/sector) or LBA (linear block address).
If the disk is very old only CHS is possible. (LBA was introduced in ATA-2.)
If the disk is very large only LBA is possible. Otherwise one may choose.
The LBA here has no relation with the LBA under 1B above, indeed, has nothing
to do with `translation' as discussed above.
Many BIOSes call this LBA way of addressing a disk `LBA'.

So far my view of the situation. Additions and corrections are welcome.

Note that Linux only needs a geometry for fdisk and LILO. Guessing what
it should use from the partition table is a reasonable heuristic.
Inventing some arbitrary translation when none is apparent from the
partition table (or even when it is clear from the partition table
that no translation is in use), and none is used by Win 95 OSR2, is ridiculous.

Before Linux, big hard disks, piles of RAM, sloppy programming, etc...
there was IBM-DOS aka MSDos. Classic DOS has a hard defined CHS limit
of 1024c * 16h * 63s, which yields 540/528 Meg of storage. The physical
number of heads and the sector size is a constant. Note that 15 heads is
equal to 16 heads, this is defined from 0-15 or 1-16. It is my
understanding that the change from 16 to 15 is an accounting thing
related to the LBA question. Also note that much of this was tide to
the BIOS of the mainboard as a restricting factor.

Hmm. Yes. Certainly.

Andries

-
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.altern.org/andrebalsa/doc/lkml-faq.html