Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 22 Sep 2008 18:06:25 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-ia32@freebsd.org
Subject:   Re: Suspicious physical memory map from BIOS
Message-ID:  <200809221806.25680.jhb@freebsd.org>
In-Reply-To: <db346c9d0809212008g3132507cs2bf9731d7583b467@mail.gmail.com>
References:  <db346c9d0809200510x681bc4f6i5f11a067a40dcbbb@mail.gmail.com> <db346c9d0809212008g3132507cs2bf9731d7583b467@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809221806.25680.jhb>