On Mon, 30 Mar 2015 13:25:11 -0400, James Harris
Post by James HarrisPost by Rod PembertonOn Fri, 13 Feb 2015 03:49:29 -0500, James Harris
Post by James HarrisPost by Rod PembertonOn Wed, 11 Feb 2015 05:25:52 -0500, James Harris
Post by James HarrisPost by Rod PembertonOn Sat, 07 Feb 2015 11:56:04 -0500, James Harris
Post by James HarrisI wasn't thinking that we need its content but that if an EBDA
exists we might need to omit its memory from our memory maps
and be sure not to give it out to any programs. Most machines seem
automatically to omit it from their e820 reports but not all do.
There were machines were it wasn't in Int 12h.
Was there some where EBDA was not in the E820h map too? ...
Yes, I've got one here. A Dell Latitude XP laptop which reports
in e820 that all of the low 640k is of type 1 but also reports
a 1k EBDA at 639k.
"Most machines seem [to] automatically omit [the EBDA]
from their e820 reports ..."
Originally: "automatically to omit" - no split infinitive. ;-)
I.e. no edit needed. :-)
Sorry, I dropped your "to" when replying, but "seem automatically"
is very awkward, at least to me, if not incorrect in some manner.
ISTM, there is something missing, is in an incorrect location, or
is perhaps extra. Moving the "to" before "automatically" fixes it.
Removing both the "to" and "seem" fixes it. Switching "automatically"
and "seem" fixes it. Maybe, that's just American English? ...
Clearly, I'm excluding your combination, but since it's been decades
since I diagrammed sentences, I'm not sure as to why, or as to what
English issue this might represent.
You may have already seen http://en.wikipedia.org/wiki/Split_infinitive.
As I say, I don't see a problem with splitting them or not splitting
them.
We still seem to be discussing two different issues.
So, I'm not sure that you even read my reply above ...
You seem to be stuck on the splitting or not splitting
of the infinitive "to omit" with "automatically". The
issue I was taking cause with and corrected was the use
of "seem automatically," which I found to be awkward,
if not incorrect. I now believe it to be an incorrect
usage of an adjective after a verb.
I had to look this up since it's been so long. Apparently,
"automatically" is an adjective and "seem" is an intransitive
verb. Normally, an adverb follows an intransitive verb.
However, an adjective can follow an intransitive verb, if
the adjective describes the subject of the sentence. That's
were the problem arises.
In this case, the adjective describing the noun would be
"automatically" being used to describe the noun "machine".
Apparently, this can only be valid usage when the adjective-noun
combination form is also valid usage: "automatically machine".
Unfortunately, that adjective-noun combination makes no sense
whatsoever in English and is therefore incorrect English usage.
At least, that's true AFAICT from what little I read ...
Ok, I've reviewed the E820h memory maps posted to a.o.d.,
yet again ... So, let's rewind to this statement of yours
Post by James HarrisPost by Rod PembertonPost by James HarrisPost by Rod PembertonPost by James HarrisPost by Rod PembertonPost by James HarrisI wasn't thinking that we need its content but that if an EBDA
exists we might need to omit its memory from our memory maps
and be sure not to give it out to any programs. Most machines
seem automatically [sic] to omit it from their e820 reports
but not all do.
I have to disagree with the statement that most machines
remove the EBDA memory size from the E820h reports based
on the info below from the a.o.d. memory map posts.
The EBDA is in the E820 map for 9 of 11, not in the map
for 1, and unknown for 1 machine. The EBDA where known
is marked type 2 except for one machine with type 1.
Int 12h and BDA 0413h sizes are reduced by the EBDA size
or 6 of 11, not reduced for 2, and unknown for 3 machines.
CMOS 15-16 is not reduced by the EBDA size for 8 of 11,
and unknown for 3 machines.
I also included info for 3 emulators under Linux
at the bottom which is not tallied above. The
remainder of the info is available from the links
posted earlier in the thread.
ABIT SM5-A (from Rod Pemberton)
-EBDA is in E820 map:
000000000009FC00:0000000000000400:001
-Int 12h and BDA 0413h are not reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
GigaByte GA MA78LM-S2H F3 (from Rod Pemberton)
-EBDA not in E820 map
-Int 12h and BDA 0413h are reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
Intel AA 719944-207 (from Rod Pemberton)
-EBDA is in E820 map:
000000000009F800:0000000000000800:002
-Int 12h and BDA 0413h are reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
MSI K9N Neo-F (from Rod Pemberton)
-EBDA is in E820 map:
000000000009FC00:0000000000000400:002
-Int 12h and BDA 0413h are reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
P-III system from Steve N. using Ben Lunt's MemE820Info
-EBDA is in E820 map:
(0 2): 0x000009FC00 1024 ( 0.00) type 2 (reserved)
-unknown effects on Int 12h and BDA 0413h
-unknown effects on CMOS 15-16
unknown machine from wolfgang
-EBDA is in E820 map:
01 0009_fc00 0000_0400 2 yes no
-unknown effects on Int 12h and BDA 0413h
-unknown effects on CMOS 15-16
unknown machine from CN
-EBDA not in E820 map
-unknown effects on Int 12h and BDA 0413h
-unknown effects on CMOS 15-16
Hewlett-Packard from Ben Lunt
-EBDA is in E820 map:
000000000009FC00:0000000000000400 type = 2
-Int 12h and BDA 0413h are reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
machine with American MegaTrends BIOS from Ben Lunt
-no E820 map
-Int 12h and BDA 0413h are not reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
machine with Award BIOS from Ben Lunt
-EBDA is in E820 map:
000000000009FC00:0000000000000400 type = 2
-Int 12h and BDA 0413h are reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
machine with Phoenix BIOS from Ben Lunt
-EBDA is in E820 map:
000000000009F400:0000000000000C00 type = 2
-Int 12h and BDA 0413h are reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
Linux DOSBox (from Rod Pemberton)
-no E820h map
-Int 12h and BDA 0413h are not reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
Linux dosemu w/MS-DOS v7.10 (from Rod Pemberton)
-EBDA not in E820 map
-Int 12h and BDA 0413h are not reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
Linux QEMU w/MS-DOS v7.10 (from Rod Pemberton)
-EBDA is in E820 map:
000000000009FC00:0000000000000400:002
-Int 12h and BDA 0413h are not reduced for EBDA
-CMOS 15-16 is not reduced for EBDA
Post by James HarrisPost by Rod PembertonPost by James HarrisPost by Rod Pemberton1) the memory used for the EBDA region is not always subtracted
from the the reported e820 block for base memory from 0KB to 640KB
2) the EBDA block is completely omitted from the entire E820
report or memory map, i.e., no range report in e820 memory map
for the EBDA as a memory block, completely skipped
From the most recent statement, I think you're saying the
Dell Latitude XP does #1. I was asking if you were saying
that it does #2. IIRC, 30% or 40% of the reported machines
do #1 ...
From your "from memory" reply below and clarification post, it's
definately #2, and possibly #1 *if* the machine has an EBDA.
Post by James HarrisPost by Rod PembertonPost by James HarrisPerhaps I should have said we might need to omit it from our maps of
*available* space, i.e. the map or maps that we build up from what
e820 reports as type 1 (and possibly type 3). The Dell Latitude XP
laptop reports the whole lower 640k as type 1. Rather than taking
that as gospel it looks as though an OS ought to subtract the EBDA
space that is used on that machine.
Yes, but how do you conclude that the base range hasn't already
subtracted it? Do you assume that if the base is 640KB that the
EBDA hasn't been subtracted? As you found, some machines seem
to allocate additional space. If a machine allocates additional
space for the base but NOT the EBDA, the base won't be 640KB and
will still need to have EBDA subtracted.
IIUC, by comparing int 0x15-e820 with int 0x15-c1.
That could be a good indicator of the presence or absence
of the EBDA. If an EBDA (or XBDA) is present, there should
also be a length byte at the start.
I'd wonder how widely supported that function call is.
E.g., if BIOS calls for the A20 which came from the PS/2
aren't widely supported, is it safe to assume that
this PS/2 call is widely supported? It seems to be an
easy call to implement, which may increase the probability
of it's availability.
FYI, I was asking how to determine whether the EBDA had
been subtracted or not from the low memory E820h entry
without knowing if the EBDA was present on that machine.
I.e., does 640KB mean no EBDA, or does 640KB mean the EBDA
still needs to be subtracted?
Post by James HarrisI don't have my test machines here but IIRC the scenarios are
1. Machine's int 0x15-e820 reports 0 to 639k as type 1, and the next 1k
as type 2. Its int 0x15-c1 reports an EBDA at 639k, essentially agreeing
with the e820 report. If the OS rounds to 4k boundaries then it would
say that 4k to 636k is available for use.
2. Machine's int 0x15-e820 reports 0 to 640k as type 1. Its int 0x15-c1
reports an EBDA at 639k, i.e. overlapping what it reports as type 1.
Again, if the OS rounds to 4k boundaries it would say that 4k to 636k is
available for use, as in scenario 1.
3. Machine's int 0x15-e820 reports 0 to 640k as type 1. Its int 0x15-c1
returns carry set indicating not supported so no EBDA. Here the same OS
would say that 4k to 640k is available for use.
So I think the answer to what you asked me is that int 0x15-c1's report
can be used to subtract from what int 0x15-e820 reports, if necessary,
but I am not really sure what you meant. If I haven't answered you fully
can you give a scenario that I missed?
That's fine.
By using Int 15h, AH=C1h, you found an alternate solution
to the issue of not knowing if the EBDA is present and
accounted for or not.
Post by James HarrisPost by Rod PembertonPost by James HarrisIME most machines report the EBDA area as e820 type 2 but not that
particular laptop.
What do you mean by that?
1) the EBDA area is reported as type 1 for the Dell, or some type
other than type 2, perhaps 3 or 4 ...
2) the EBDA area is not listed in the e820 memory map report
I.e., is the EBDA reported as a different type, or simply not
reported?
[...]
Your "from memory" E820 map clarification indicates "2)" here.
Post by James HarrisIIRC most machines report the EBDA as type 2
Yes.
Post by James Harrisbut the Dell (incorrectly?)
included the space set aside for EBDA memory in its type 1 report.
I think that is what you have as option 1.
Isn't it true that some machines don't have an EBDA? I thought so ...
Therefore, I'm not sure that the claim that the EBDA was *included*
in the low memory type 1 report is always a correct assumption.
The EBDA could simply be not present, i.e., 640K should be valid for
some old machines. Your "from memory" memory map seems to indicate
that. Technically, one of my machines, one of Ben's machines, and
CN's new machine are that way. I thought one of wolfgang's was that
way too, but I couldn't locate that map.
Post by James HarrisPost by Rod PembertonI'm still not 100% clear. Basically, you presented same abiguity.
This is the new #1 and #2 above. I'm assuming you mean #1 yet again.
;-)
If the EBDA is not reported in the e820 map, then we also have the
issue of inserting it into the map.
Is there a reason for placing unusable memory in the OS's map?
Wouldn't it be enough for the OS to know of all *available* memory
(plus all type 3 and type 4 spaces)?
What I suggested would *reduce* available memory below 640K by
the size of the EBDA. E.g., Int 12h says 639K, so we have an
EBDA consuming space. The E820h map has no EBDA line and shows
the low memory E820h entry with a full 640K. We know the full
640K isn't available because of Int 12h/BDA 0413h. So, we must
correct the map by subtracting it. I.e., we need to fix the
640K E820h entry and optionally insert the EBDA type 2 entry.
I'm also assuming that the E820h map should be corrected prior to
use of E820h by the bootloader or the OS memory manager, etc.
Post by James HarrisPost by Rod PembertonDid you post an E820 map for this machine at some point in time?
That would be much easier than me "harassing" you for the info ...
No worries, I am not harassed. I don't recall posting a map of it. From
1. 0 to 640k as type 1
2. something else - probably ROM - as type 2.
3. 1M upwards to somewhere as type 1.
Sorry I cannot confirm that. Is the above info enough?
That (and your correction post) "from memory" info indicates
the EBDA is not in the E820h map. If EBDA is not present,
then 640K is correct. If EBDA is present, then 640K is wrong.
As you noted, Int 15h,AH=C1h should work fine to detect it's
presence.
Rod Pemberton
--
Cars kill more people than guns in the U.S.
Yet, no one is trying to take away your car.