Memory hole at 15/16MB

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
PrzemekG_

Memory hole at 15/16MB

Post by PrzemekG_ »

I know it exists because of the bios setting. I also found it in a text.
But what exactly is it? What is located there? Since bios can actualy enable and disable it, how to detect it?

Przemek Grzywacz

thanks for help.
Moose

RE:Memory hole at 15/16MB

Post by Moose »

In my BIOS its labelled as something to do with something called OS2.
Dont know what that means.

The bios int routines should take into account that hole.

DangerMoose
User avatar
df
Member
Member
Posts: 1076
Joined: Fri Oct 22, 2004 11:00 pm
Contact:

RE:Memory hole at 15/16MB

Post by df »

isa dma stuff.
-- Stu --
User avatar
Neo
Member
Member
Posts: 842
Joined: Wed Oct 18, 2006 9:01 am

RE:Memory hole at 15/16MB

Post by Neo »

I thought that OS2 was an operating system.  Is this correct?
Only Human
Chris Giese

RE:Memory hole at 15/16MB

Post by Chris Giese »

Many 16-bit video boards support a 1 MB linear framebuffer. Because of it's size, the framebuffer must be at or above 1 MB. Because the 16-bit ISA bus has only 24 address lines, the framebuffer must be below 16 MB.

The BIOS setting to leave a hole at 15 MB disables system RAM in this address range, preventing contention (conflict) between system RAM and video RAM.

In some cases, the video chip supports a linear framebuffer but the board does not, e.g. Cirrus Logic 5422 video board -- see http://groups.google.com/groups?hl=en&t ... s1.unl.edu

I don't know if any mainstream software actually used this feature.
PrzemekG_

RE:Memory hole at 15/16MB

Post by PrzemekG_ »

This is my memory size testing routine:
[code]
get_pmemory_size:
cli
mov edx, (x200000); sets the memory test start at 2MB
mov esi, edx; sets the pointer
.access_loop:
mov eax, [esi]; backup original value
mov [esi], 1; sets a check value (1)
mov ebx, [esi]; gets the value from the same location
cmp ebx, 1; compare it
jne .finish; it is not equal so mem is finished
mov [esi], eax; restore original value
add esi, MEMORY_PAGE_SIZE; increment it's value
.finish:
mov eax, esi; saves the result
mov [__total_pysical_memory], eax
%ifdef CONF_K_CORE_DEBUG
;; if core debuging, we will save the memory size in debug segment
mov ax, ds; backup the ds descriptor
mov cx, ax
mov edx, [__total_pysical_memory]; get the memory size
mov ax, DSK_K_DEBUG; sets the new descriptor
mov ds, ax
mov [ds:K_DEBUG_MEMORY_SIZE], edx; write the size
mov ax, cx; restore the DS descriptor
mov ds, ax
%endif
.exit:
sti
retn
[/code]

Do you have a simple idea how to add that hole support?

So DMA does not use real momory ? It leaves a hole?
So for example, when I have 10MB of DMA, and 16RAM, I will actualy access the first 26MB of mem instead of 16MB.

Also, does bochs support that memory hole?
Karig

RE:Memory hole at 15/16MB

Post by Karig »

I've read that probing for memory by writing to it and reading it back is a bad idea precisely because of the possible presence of this or perhaps even other holes between the 1MB and 16MB marks. It's better to use the new BIOS routines (there are three of them) for detecting memory beyond 1MB.

See: http://www.uruk.org/orig-grub/mem64mb.html
PrzemekG_

RE:Memory hole at 15/16MB

Post by PrzemekG_ »

Yes, but my notebook have 128MB and the other PC have 256MB, so the bios method is not realy a good idea for me.
mikeleany

RE:Memory hole at 15/16MB

Post by mikeleany »

Sorry, I don't understand. Why would your memory size be a problem? I've always used GRUB's memory map, and it uses the BIOS method. I've always assumed it was just as accurate regardless of the memory size. And the web-site Karig pointed you to doesn't seem to indicate any problem with 128 - 256 MB of RAM (unless I missed that part). In fact, it indicates that it should be able to detect anything up to 4GB or ALL memory depending on which method you use.
mikeleany

RE:Memory hole at 15/16MB

Post by mikeleany »

Yes, OS2 is an operating system.
Moose

RE:Memory hole at 15/16MB

Post by Moose »

Same here.
I use the grub memory map and i can resize my ram in vmware, grub always picks up the change and thus, so does my os. And since grub will get its details from the bios int routines.

You do realise there are more than 1 bios ints that gets the memory state. You have to probe them in order to find the most appropriate one that works for your bios and gives you accurate details.

Moose.
Moose

RE:Memory hole at 15/16MB

Post by Moose »

I admint, i was wrong. Checked my bios and the os2 thing was for a different memory option. :).

Moose.
PrzemekG_

RE:Memory hole at 15/16MB

Post by PrzemekG_ »

As I know BIOS have it's limits aboud memory detections. It's maybe I don't know them all.

Anyway you all talk about GRUB, I don't use it, so I don't have GRUB's memory map. We are writing everything ourselfs.
Post Reply