Phoenix BIOS, hard disk data loss

sd xscd at xscd.com
Fri Dec 5 07:29:36 PST 2003


First, sd wrote:
> Some months ago, just after buying a Tyan Tiger s2466 MPX dual
> processor motherboard and installing FreeBSD 5.0 on it, I
> experienced a lot of data loss [...]
>
> However, after a couple months I decided to change just one setting
> in the Phoenix BIOS: Large Disk Access Mode
>
> There are two options for Large Disk Access Mode: "DOS" and "Other"
>
> The help text for this item says: "This option denotes that a hard
> drive with more than 1024 cylinders, more than 16 heads and or more
> than 64 tracks per sector is present. Choose OTHER when using OSes
> such as UNIX."
>
> So, at first I had chosen "Other." However, after all the data
> loss, I felt I had nothing (more) to lose so I changed it to DOS
> just to see if it made a difference. Apparently it did. I have
> experienced no more lost data (from hard disk corruption or
> problems) in the six or so months since I made the change.

Dan Strick replied:
> The large disk option sounds like it affects the "translated" disk
> geometry used by BIOS to increase the amount of disk accessible to
> software that uses the BIOS for disk i/o (e.g. DOS).  FreeBSD uses
> the BIOS disk i/o facilities only to read the disk when booting.
>
> It is highly unlikely that your file system corruption problems were
> related to the BIOS Large Disk Access Mode option unless you were
> also using a non-FreeBSD OS on the same disk and it inadvertently did
> disk writes through the BIOS to wrong disk locations.

sd adds:
I don't know whether it is pertinent, but here is a quote from a 
(admittedly old) technical manual published by the manufacturers of the 
Phoenix BIOS:

-- begin quote --

BIOS
Enhanced Disk Drive Specification
Version 1.1
May 9, 1995
Phoenix Technologies Ltd.


4.3 Geometric Translations

Some applications get device geometry
information simply by reading the tables which are
accessed via the Int 41h/46h pointers, they fail to
call Int 13h Fn 08h. These are “ill-behaved”
applications. Ill-behaved applications fall into two
categories: some of them read the Int 41h data and
then use the conventional Int 13h interface for
accessing the device. These are “compatible” ill-
behaved applications. The remaining ill-behaved
applications read the Int 41h/46h data and then
access the drive in a proprietary manner. These are
incompatible ill-behaved applications.

4.3.1 Compatible Ill-Behaved Applications

Compatible ill-behaved applications require that
address 0, 2, and 14 (Cylinder, Head, and Sector)
information in the FDPT be identical to the
information returned in Int 13h Fn 08h. This class
of application normally fails to call Int 13h Fn 08h
to get device geometry, but uses Int 13h Fn 02h to
read data.

4.3.2 Incompatible Ill-Behaved Applications

Incompatible ill-behaved applications require that
address 0, 2, and 14 information have the
geometry returned by ID drive data words 1, 3, and
6, a requirement that can violate restrictions placed
on Standard FDPTs. Further, these incompatible
ill-behaved applications may not check for the
Translated FDPT signature (A0h at byte 3).
Examples of incompatible ill-behaved applications
are SCO Unix and early versions of Novell Netware.

4.3.3 Resolving the Compatibility Problem

The BIOS can only serve one class of these ill-
behaved applications each time the system boots.
This presents the BIOS and the USER with a
compatibility problem. Phoenix has chosen to add
a Setup field which allows the user to select which
ill-behaved applications will function correctly.
The menu item reads “Large Disk Access Mode”.
This field defaults to “DOS”, which creates a
Translated FDPT. Compatible ill-behaved
applications will operate correctly when “DOS” is
selected.

The remaining selection for Large Disk Access
Mode is “OTHER”. Incompatible ill-behaved
applications will function correctly with
“OTHER,” which creates a Standard FDPT.
Because this format uses only physical geometries,
“OTHER” creates problems for the compatible ill-
behaved applications by generating an illegal
Standard FDPT with more than 1024 cylinders.
The conventional Int 13h interface, however,
continues to use a Translated FDPT, which is
maintained internally by the BIOS, and is
accessable only through Int 13h Fn 08h. SETUP
never changes the method of translation used by
the BIOS. Well behaved DOS and Windows
applications continue to function normally because
they only use Int 13h Fn 08h, which returns
translated geometry.

--- end quote ---





More information about the freebsd-questions mailing list