[prev in list] [next in list] [prev in thread] [next in thread] 

List:       freedos-user
Subject:    [Freedos-user] BIOS with broken UDMA needs DOS disk driver loaded before JEMMEX
From:       Eric Auer <e.auer () jpberlin ! de>
Date:       2016-01-12 17:56:39
Message-ID: 56953E57.6000607 () jpberlin ! de
[Download RAW message or body]


Dear DOS users,

via the BTTR DOS forum and Jack I received the following warning:

Some mainboards have a BIOS with faulty UDMA in V86 mode support!

This CPU mode is used to run "DOS compatible" tasks in Windows or
certain virtual environments such as Dosemu for Linux, but it is
(importantly) also used by all EMM386-style DOS drivers, such as
JEMMEX: With such drivers, the presence of EMS memory hardware is
simulated by moving DOS into a V86 task.

When the BIOS fails to support UDMA (memory block copy and block
copy between memory and I/O devices) properly in V86, attempts to
transfer disk data can fail or end up at the wrong places in RAM.

DOS disk drivers could potentially test if your BIOS is buggy, but
it will not always be possible to do that without causing a crash.
In the BEST case, the driver could conclude that no UDMA will work.

In the WORST case (!), the BIOS itself defaults to UDMA disk access
and crashes as soon as you enter V86 mode. In that case, you will
be FORCED to load a driver like XHDD or UIDE before loading JEMMEX
to protect your BIOS from its own stupidity. Unfortunately, it is
not unlikely at all that if you have a bug, you have it worst case!



To avoid crashes, it is important to LOAD DISK DRIVERS BEFORE EMM
(if your BIOS is affected by such bugs). For example, load XHDD in
your boot process before you load JEMMEX. If you disk driver is
using XMS (for example as cache) you can of course not use JEMMEX
as your XMS driver, but have to load a separate XMS driver before
the cache, as JEMMEX has to be loaded after the disk driver...



Some drivers can use HMA space provided by XMS drivers (as HIMEM)
if no UMB space (provided by EMM386 and similar) is available, but
in general, many drivers only support UMB, so your amount of free
DOS memory is reduced if you have to delay the loading of EMM386.

Jack recommends to load HIMEMX then UIDE then JEMMEX: That way, the
UIDE driver can use the HMA and HIMEMX + UIDE will use circa 3.5 kB
of low DOS memory together. If you only load UIDE and then JEMMEX,
UIDE would need 4.5 kB of low DOS memory and would miss early XMS.

An even more advanced suggestion by Jack is to load XMGR /B instead
of HIMEMX, then UIDE, then JEMMEX, then XMGR again, but without /B,
which allows XMGR to regain 2 kB of memory as soon as JEMMEX is on.

Note that FreeDOS by default does not give drivers access to HMA
space at all inside config.sys, so you would have to delay those
driver loads to autoexec - other DOS variants are more flexible.

Regards, Eric



PS: When you boot Windows or Linux, the protected mode disk drivers
of the operating system are usually activated BEFORE any V86 tasks
get the chance to try to access the disk. This is why the BIOS bug
can go unnoticed - only DOS will suffer, other systems don't care.

PPS: LOWDMA (ships with UMBPCI) and the TUNS option of LBACACHE are
other examples of driver workarounds for BIOS and hardware problems.


------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140
_______________________________________________
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic