Suspicious physical memory map from BIOS

John Baldwin jhb at freebsd.org
Mon Sep 22 22:29:36 UTC 2008


On Sunday 21 September 2008 11:08:27 pm questions wrote:
> Hi,
> 
> I am sorry if this isn't the correct mailing list to ask my question.
> Actually, I posted this on freebsd-questions list but didn't get any reply.
> I couldn't find any better mailing list to post this question on.
> 
> I have some problem with physical memory being getting reported incorrectly
> on Freebsd 6.3. I have a Xeon series 5300 CPU with 4GB of RAM installed but
> BIOS call actually returns following usable physical memory map -
> 
> base address = 0, length = 640K
> base address = 1M, length = 2.5G
> base address = 4G, length = 5.5G
> 
> How am I getting this third segment?

The 2.5g -> 4g window of address space is used for non-memory things like 
APICs (local APICs and I/O APICs), PCI memio, etc.

> Also, in function getmemsize() in machdep.c, why the variable 'Maxmem' is
> set to 'Maxmem*4' when hw.physmem and the
> highest page number obtained from physical memory map don't match?

It's not set to that, it is used for a printf.  Maxmem is a count of pages.  
Each page on i386 holds 4K.  The printf wants to print out the number of 
kilobytes, so it uses 'Maxmem * 4' to convert from number of 4k pages, to 
number of K.

-- 
John Baldwin


More information about the freebsd-ia32 mailing list