linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: BIOS detects 4 GB RAM, but kernel does not
       [not found] <1153931278.034068.54630@h48g2000cwc.googlegroups.com>
@ 2006-07-26 16:54 ` Robert Hancock
  2006-07-28 17:03   ` Jan Engelhardt
       [not found] ` <1153933737.200164.160870@m73g2000cwd.googlegroups.com>
  1 sibling, 1 reply; 8+ messages in thread
From: Robert Hancock @ 2006-07-26 16:54 UTC (permalink / raw)
  To: ravibt, linux-kernel

ravibt@gmail.com wrote:
> Hello,
> 
>  On a dual core Pentium 4 EM64T machine (Intel Desktop Board D915GAV),
> we used four 1GB RAM (DDR 400) modules. The BIOS (EV91510A.86A.0444)
> detected all the four 1 GB modules, but once the OS is booted, only
> ~3.1GB is available for usage (from dmesg: "Memory: 3210516k/3267772k
> available"; see below). The kernel used is version 2.6.9-22.ELsmp
> coming with 'CentOS release 4.2 Final'.
> [The four RAM modules have been tested OK with the 'memtest'].
> 
>  Using "mem=4096m" while booting the kernel also did not help. Searched
> through the old messages and it looks like in most of the cases
> enabling some memory-hole related option in BIOS is suggested, but in
> this case probably the BIOS is fine. Not sure if some kernel
> configuration option is missing or if someother version of the kernel
> needs to be used.
> 
> This being a 64 bit machine, we expected memory-remap to be happening.
> Is there a way in which ~900 MB of RAM can be made usable?
> Any pointers will be of great help.
> 
> Please let me know if more information is needed than the following
> transcripts (/proc/iomem and dmesg):

Essentially I don't think there is much you can do about this on this 
board. The memory space starting at around 3.2GB is being used by the 
memory-mapped IO regions for the PCI and PCI Express devices and 
motherboard resources and therefore "covers up" the RAM in that part of 
the address space. The solution to this is for the system to remap the 
affected memory above the 4GB mark, which is possible with Athlon 
64/Opteron CPUs and on some of the Intel server chipsets. However, I 
don't think any Intel desktop chipsets support this for some 
unfathomable reason.

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: BIOS detects 4 GB RAM, but kernel does not
       [not found]     ` <mH3yg.16777$2u4.7977@trnddc06>
@ 2006-07-27 19:41       ` Robert Hancock
  0 siblings, 0 replies; 8+ messages in thread
From: Robert Hancock @ 2006-07-27 19:41 UTC (permalink / raw)
  To: linux-kernel

Jean-David Beyer wrote:
> You need to compile with
> 
> # CONFIG_NOHIGHMEM is not set
> # CONFIG_HIGHMEM4G is not set
> CONFIG_HIGHMEM64G=y
> CONFIG_HIGHMEM=y
> CONFIG_HIGHPTE=y
> CONFIG_X86_PAE=y
> CONFIG_HIGHIO=y
> CONFIG_X86_4G=y
> CONFIG_X86_SWITCH_PAGETABLES=y
> CONFIG_X86_4G_VM_LAYOUT=y
> CONFIG_X86_UACCESS_INDIRECT=y
> CONFIG_X86_HIGH_ENTRY=y
> 
> in your .config (for *86 machines) to get 4G of user and 4G of system space.
> I so or know how much sense this would make for a 4G of RAM machine. I never
> tried it when this machine had only 4G, but that is what is required to get
> all 4G in a single user process now that I have 8G.

Those options are not applicable on an x86-64 kernel.

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: BIOS detects 4 GB RAM, but kernel does not
  2006-07-26 16:54 ` BIOS detects 4 GB RAM, but kernel does not Robert Hancock
@ 2006-07-28 17:03   ` Jan Engelhardt
  2006-07-28 17:06     ` Robert Hancock
  0 siblings, 1 reply; 8+ messages in thread
From: Jan Engelhardt @ 2006-07-28 17:03 UTC (permalink / raw)
  To: Robert Hancock; +Cc: ravibt, linux-kernel

>
> Essentially I don't think there is much you can do about this on this board.
> The memory space starting at around 3.2GB is being used by the memory-mapped IO
> regions for the PCI and PCI Express devices and motherboard resources and
> therefore "covers up" the RAM in that part of the address space. The solution
> to this is for the system to remap the affected memory above the 4GB mark,
> which is possible with Athlon 64/Opteron CPUs and on some of the Intel server
> chipsets. However, I don't think any Intel desktop chipsets support this for
> some unfathomable reason.

Maybe PAE can help?


Jan Engelhardt
-- 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: BIOS detects 4 GB RAM, but kernel does not
  2006-07-28 17:03   ` Jan Engelhardt
@ 2006-07-28 17:06     ` Robert Hancock
  0 siblings, 0 replies; 8+ messages in thread
From: Robert Hancock @ 2006-07-28 17:06 UTC (permalink / raw)
  To: Jan Engelhardt; +Cc: ravibt, linux-kernel

Jan Engelhardt wrote:
>> Essentially I don't think there is much you can do about this on this board.
>> The memory space starting at around 3.2GB is being used by the memory-mapped IO
>> regions for the PCI and PCI Express devices and motherboard resources and
>> therefore "covers up" the RAM in that part of the address space. The solution
>> to this is for the system to remap the affected memory above the 4GB mark,
>> which is possible with Athlon 64/Opteron CPUs and on some of the Intel server
>> chipsets. However, I don't think any Intel desktop chipsets support this for
>> some unfathomable reason.
> 
> Maybe PAE can help?

No.. it's not a matter of being unable to reach the address space, but 
the memory used by the IO regions is essentially overridden and 
unavailable to the kernel. PAE is not applicable on x86-64 anyway..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/



^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: BIOS detects 4 GB RAM, but kernel does not
       [not found]     ` <1154112339.037481.119210@p79g2000cwp.googlegroups.com>
@ 2006-07-29  2:04       ` Robert Hancock
  2006-07-29 22:21         ` Andi Kleen
       [not found]       ` <fa.6TLi9h8OI9J6KX0+lv+D4/CEU0U@ifi.uio.no>
  1 sibling, 1 reply; 8+ messages in thread
From: Robert Hancock @ 2006-07-29  2:04 UTC (permalink / raw)
  To: linux-kernel; +Cc: iforone

iforone wrote:
> see why above (mostly)... That doesn't necessarily mean that some kind
> of certain 'config' doesn't need to be compiled into the kernel. Yet
> I'm not sure exactly which options are necessary, if any, nor am I sure
> you can achieve your goal using what *seems* (Robert Hancock's
> reponses) to be essentially an Intel DualCore 32bit CPU(s). I'm having
> a bit of trouble understanding (or believing) that an EM64T system
> isn't capable of seeing more than 4GB RAM (although the Mobo max for
> that Desktop mobo is 4GB) -- BUT then again, that is not a Server grade
> Mobo either -- it's a Desktop mobo (perhaps using an
> unsupporting(cheaper) Chipset(?). Yet; the BIOS detects all 4GB (which
> shoots down my chipset theory) - so maybe it's a kerenl specific issue
> (harkens back to General S's response about 2.6.15+ kernels only).
> In my earlier post, I hadn't realized you were using a 64bit kernel.

The BIOS can see that all 4GB of memory is there, but it has no way of 
moving it out of the way to make room for the PCI/PCI-E memory-mapped IO 
space, so it has to map that IO space over the RAM in that part of the 
address space, rendering it inaccessible. There's no way that the kernel 
can fix this, regardless of whether you are using 32 or 64 bit or what 
configuration options are set.

Athlon 64/Opteron CPUs have support for moving this part of the RAM 
above 4GB to allow it to be used. This is part of the CPU's on-die 
memory controller so no special chipset support is needed. On Intel 
systems this support has to be provided by the chipset, and on the 
desktop boards, it's not.

You can see what's going on from the BIOS e820 memory map that's printed 
in the dmesg output at the start of bootup. If you calculate out the 
amount of address space reported as "usable" then you will get your 
value of 3.2GB or so which is all the kernel has access to. If the 
system supported memory remapping then you would see another region 
starting at 0x0000000100000000 (4GB) which would account for this 
missing 800MB or so.

Probably the main reason Intel didn't bother including this support in 
the desktop boards is that current non-server versions of Windows (at 
least 32-bit) won't use any memory that is mapped above 4GB anyway even 
though PAE is enabled - a purely artificial limit that MS put in place 
to discourage using desktop Windows on such large memory machines..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: BIOS detects 4 GB RAM, but kernel does not
       [not found]           ` <1154145714.279248.233230@m73g2000cwd.googlegroups.com>
@ 2006-07-29 18:12             ` Robert Hancock
  0 siblings, 0 replies; 8+ messages in thread
From: Robert Hancock @ 2006-07-29 18:12 UTC (permalink / raw)
  To: linux-kernel; +Cc: iforone

iforone wrote:
> If we take a quick look at (part of) the OP's 'dmesg' output;
>  ACPI: RSDT (v001 INTEL  D915GAV  0x20050429 MSFT 0x00000097) @
>  0x00000000c7730000
>  ACPI: FADT (v002 INTEL  D915GAV  0x20050429 MSFT 0x00000097) @
>  0x00000000c7730200
>  ACPI: MADT (v001 INTEL  D915GAV  0x20050429 MSFT 0x00000097) @
>  0x00000000c7730390
>  ACPI: MCFG (v001 INTEL  D915GAV  0x20050429 MSFT 0x00000097) @
>  0x00000000c7730400
>  ACPI: ASF! (v016 LEGEND I865PASF 0x00000001 INTL 0x02002026) @
>  0x00000000c7736020
>  ACPI: TCPA (v001 INTEL  TBLOEMID 0x00000001 MSFT 0x00000097) @
>  0x00000000c77360c0
>  ACPI: WDDT (v001 INTEL  OEMWDDT  0x00000001 INTL 0x02002026) @
>  0x00000000c77360f4
>  ACPI: DSDT (v001 INTEL  D915GAV  0x00000001 INTL 0x02002026) @
>  0x0000000000000000
>  No NUMA configuration found
>  Faking a node at 0000000000000000-00000000c772f000
>  Bootmem setup node 0 0000000000000000-00000000c772f000
>  No mptable found.
>  On node 0 totalpages: 816943
> 
> ===============
> 
> We see MSFT (Microsoft) all over the place as well as INTL (Intel ?) --
> I suppose this machine may be a Dellio (perhaps HP or Compaq)? or
> atleast one that has one of those stickers on the case that says
> "Designed for use with MS Windows [version]"

I believe that indicates that the Microsoft ACPI compiler was used to 
generate the ACPI tables in the BIOS..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: BIOS detects 4 GB RAM, but kernel does not
       [not found]           ` <1154143992.635239.225440@p79g2000cwp.googlegroups.com>
@ 2006-07-29 18:25             ` Robert Hancock
  0 siblings, 0 replies; 8+ messages in thread
From: Robert Hancock @ 2006-07-29 18:25 UTC (permalink / raw)
  To: linux-kernel; +Cc: iforone

iforone wrote:
>> Probably the main reason Intel didn't bother including this support in
>> the desktop boards is that current non-server versions of Windows (at
>> least 32-bit) won't use any memory that is mapped above 4GB anyway even
>> though PAE is enabled - a purely artificial limit that MS put in place
>> to discourage using desktop Windows on such large memory machines..
> 
> Agreed -- I _was_ going to inquire about XP x64 versions, and PAE also,
> and I've read a bit about it (as microshaft has written on it's site),
> but not in quite a while. I recall the semi-related  NoExec (NX) bit
> stuff (though I forgot the mnemonic difference between AMD64 and Intel
> concerning this "bit", which if set disallows execution of any code
> above the 4GB boundary, IIRC).
> 
> to follow-up: Do the XP x64 versions do something else artificially to
> enable addressing up to 16GB of RAM or thereabouts. Or - is it that PAE
> (Physical Address Extensions) stuff again that allows or it?

PAE is what allows an OS in 32-bit mode to access memory located above 
4GB in the address space. On a 64-bit OS the CPU can access all the 
memory directly so PAE is not needed or possible. Also, PAE is often 
enabled on 32-bit systems even with less than 4GB of RAM as it allows 
using the hardware NX bit, which was only added to the PAE versions of 
the 32-bit page tables.

That's a separate issue, though, from the original subject of the thread 
(memory being mapped over by IO space), and from the artificial limit on 
accessing memory above 4GB in at least 32-bit consumer Windows.

> 
> More importantly -- I have (an as-yet-to-be-assembled system) : AMD64
> s754 3000+ with a crappy mATX mobo here (VIA KTm800/8237) Chipset --
> The RAM limit is 2GB total (2 x 1GB DIMM slots only). Do you think this
> el-cheapo mobo would have problems accessing over 4GB *if* the Mobo was
> designed for 4GB ?? IOW-- a Mobo perhaps such as General S uses (MSI,
> ASUStek, etc) -- or do you know if there's something different between
> the s754 and s939 models that I'm unaware of (besides the No Dual
> Channel RAM in s754, since it's only 64bit Single-Channel capable, not
> 128bit).

I don't think most S754 boards support physically installing that much 
RAM, so it may be moot. If you could, you could likely access memory 
above 4GB, though I'm not certain if the S754 CPUs support the memory 
hole remapping to avoid some of that RAM being lost.

> Thanks for the continuing discussion -- I'm glad I didn't follow Intel
> recently and become deceived again - as I'm sure MANY have -- you'd
> think buying a spanking new Pentium-D (8xx) and a 'decent' Intel
> Desktop mobo would allow access to more than 4GB RAM ...but no.... :-(
> (especially when the specs for the mobo claim "4GB" - heck - might as
> well remove 1 x 1GB DIMM, you'd only lose 200MB (yikes)).

Yeah, there is not much point in installing more than 3GB in such a board..

-- 
Robert Hancock      Saskatoon, SK, Canada
To email, remove "nospam" from hancockr@nospamshaw.ca
Home Page: http://www.roberthancock.com/


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: BIOS detects 4 GB RAM, but kernel does not
  2006-07-29  2:04       ` Robert Hancock
@ 2006-07-29 22:21         ` Andi Kleen
  0 siblings, 0 replies; 8+ messages in thread
From: Andi Kleen @ 2006-07-29 22:21 UTC (permalink / raw)
  To: Robert Hancock; +Cc: iforone, linux-kernel

Robert Hancock <hancockr@shaw.ca> writes:

> Athlon 64/Opteron CPUs have support for moving this part of the RAM
> above 4GB to allow it to be used. This is part of the CPU's on-die
> memory controller so no special chipset support is needed.

In cheap boards >3.5GB RAM configurations are usually not officially
supported by the vendor (= not tested) and there are systems where it
doesn't work when enabled in the BIOS (doesn't work = kernel crashes
randomly when accessing bad memory ranges)

I guess it's a subtle hint that above 3GB of RAM you should be using
ECC DIMMs anyways, which need a more expensive workstation class
board.

-Andi

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2006-07-29 22:22 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <1153931278.034068.54630@h48g2000cwc.googlegroups.com>
2006-07-26 16:54 ` BIOS detects 4 GB RAM, but kernel does not Robert Hancock
2006-07-28 17:03   ` Jan Engelhardt
2006-07-28 17:06     ` Robert Hancock
     [not found] ` <1153933737.200164.160870@m73g2000cwd.googlegroups.com>
     [not found]   ` <1154007393.940693.259680@i42g2000cwa.googlegroups.com>
     [not found]     ` <mH3yg.16777$2u4.7977@trnddc06>
2006-07-27 19:41       ` Robert Hancock
     [not found]     ` <1154112339.037481.119210@p79g2000cwp.googlegroups.com>
2006-07-29  2:04       ` Robert Hancock
2006-07-29 22:21         ` Andi Kleen
     [not found]       ` <fa.6TLi9h8OI9J6KX0+lv+D4/CEU0U@ifi.uio.no>
     [not found]         ` <fa.adpnQx0XAWgd4+g2tR5HDa2qHDw@ifi.uio.no>
     [not found]           ` <1154145714.279248.233230@m73g2000cwd.googlegroups.com>
2006-07-29 18:12             ` Robert Hancock
     [not found]           ` <1154143992.635239.225440@p79g2000cwp.googlegroups.com>
2006-07-29 18:25             ` Robert Hancock

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).