A computer components & hardware forum. HardwareBanter

If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

Go Back   Home » HardwareBanter forum » Processors » AMD x86-64 Processors
Site Map Home Register Authors List Search Today's Posts Mark Forums Read Web Partners

Help, 64 bit Linux only sees 3.5G of RAM on an A64 X2



 
 
Thread Tools Display Modes
  #1  
Old July 27th 05, 08:19 PM
General Schvantzkoph
external usenet poster
 
Posts: n/a
Default Help, 64 bit Linux only sees 3.5G of RAM on an A64 X2

Just got an Athlon 64 X2 system with 4G of RAM. The motherboard is an MSI
K8N Neo4 Platinum (NForce 4). I'm using 64 bit Fedora Core 3 with a
2.6.11.12 kernel compiled for the Athlon 64.

The BIOS has a switch called S/W memory hole remapping, when OFF the BIOS
sees 3.5G of RAM as does Linux. When ON the BIOS sees all 4G of RAM but
Linux sees only 3G. I've given a mem=4096M to GRUB,

title Fedora Core (2.6.11.12)
root (hd0,0)
kernel /boot/vmlinuz-2.6.11.12 ro root=LABEL=/1 mem=4096M rhgb quiet
initrd /boot/initrd-2.6.11.12.img

This doesn't help, is my grub config correct?

With the memory hole remapping ON the mem switch is required, if it's not
there I get a kernel panic.

Is there another switch that I need? Is there a kernel config switch that
I need to throw.

BTW this a custom kernel based on the .config file for the FC3 2.6.12
kernel. The current FC3 2.6.12 kernel panics on boot because they left our
the nv_sata driver. I built a standard 2.6.12.3 kernel but it panics
because of a problem with the Silicon Image RAID driver, the 2.6.11.12
kernel boots fine, however I had to install Nvidia's networking drivers to
get the ethernet controller to work, the kernel 2.6.11.12 drivers don't
seem to work although the drivers in the old 2.6.9 kernel that comes with
FC3 work fine.



  #2  
Old July 28th 05, 05:42 PM
joe
external usenet poster
 
Posts: n/a
Default

General Schvantzkoph wrote:
Just got an Athlon 64 X2 system with 4G of RAM. The motherboard is an MSI
K8N Neo4 Platinum (NForce 4). I'm using 64 bit Fedora Core 3 with a
2.6.11.12 kernel compiled for the Athlon 64.


Cool!

Is there another switch that I need? Is there a kernel config switch that
I need to throw.


You bet there is!

BTW this a custom kernel based on the .config file for the FC3 2.6.12
kernel. The current FC3 2.6.12 kernel panics on boot because they left our


You're doing WHAT?!?!? You're using 2.6.11 with a config lifted from a
broken 2.6.12?!?!? What were you thinking?!?!?

You need to find an old config for 2.6.11 and make menuconfig from it,
customizing as necessary. If you can't find such a file, you should
start from scratch or even reinstall the 2.6.11 source package.

The config for 2.6.11 contains a line called CONFIG_NOHIGHMEM. In
menuconfig, this appears as a list of three options: off, 4GB, 64GB.
This is deprecated in 2.6.12 so you have essentially had it set to off
(because it was missing altogether).

You should never try to use a config file from one version with another
version. Do "make oldconfig" and it will walk you through the upgrade
from one kernel version to another. Unfortunately, "make oldconfig"
just tells you the name of the new features added to the upgraded
kernel; it doesn't explain what they mean. With a little slight of
hand, you can open a copy of the new kernel version's config file in
"make menuconfig" so that you'll have explanations of all the new
features. This will let you do "make oldconfig" in another terminal and
you'll know how to answer the new lines. When you're done, you will
have an upgraded config file appropriate for the new kernel version, but
retaining all of your old settings (if they still apply in the new version).

Since you have 4GB and that is an edge condition, you will want to test
a kernel built with CONFIG_NOHIGHMEM set at 4GB. If it still reports
less than 4GB, you may need to try setting it to 64GB. I know it sounds
like overkill but what can you do.

Well, actually there is something you can do. Upgrade to 2.6.12 and get
it working. I'm pretty sure this HIGHMEM stuff is handled automatically
by the more recent kernels.
  #3  
Old July 28th 05, 06:20 PM
General Schvantzkoph
external usenet poster
 
Posts: n/a
Default

On Thu, 28 Jul 2005 12:42:33 -0400, joe wrote:

General Schvantzkoph wrote:
Just got an Athlon 64 X2 system with 4G of RAM. The motherboard is an MSI
K8N Neo4 Platinum (NForce 4). I'm using 64 bit Fedora Core 3 with a
2.6.11.12 kernel compiled for the Athlon 64.


Cool!

Is there another switch that I need? Is there a kernel config switch that
I need to throw.


You bet there is!

BTW this a custom kernel based on the .config file for the FC3 2.6.12
kernel. The current FC3 2.6.12 kernel panics on boot because they left our


You're doing WHAT?!?!? You're using 2.6.11 with a config lifted from a
broken 2.6.12?!?!? What were you thinking?!?!?

You need to find an old config for 2.6.11 and make menuconfig from it,
customizing as necessary. If you can't find such a file, you should
start from scratch or even reinstall the 2.6.11 source package.

The config for 2.6.11 contains a line called CONFIG_NOHIGHMEM. In
menuconfig, this appears as a list of three options: off, 4GB, 64GB.
This is deprecated in 2.6.12 so you have essentially had it set to off
(because it was missing altogether).

You should never try to use a config file from one version with another
version. Do "make oldconfig" and it will walk you through the upgrade
from one kernel version to another. Unfortunately, "make oldconfig"
just tells you the name of the new features added to the upgraded
kernel; it doesn't explain what they mean. With a little slight of
hand, you can open a copy of the new kernel version's config file in
"make menuconfig" so that you'll have explanations of all the new
features. This will let you do "make oldconfig" in another terminal and
you'll know how to answer the new lines. When you're done, you will
have an upgraded config file appropriate for the new kernel version, but
retaining all of your old settings (if they still apply in the new version).

Since you have 4GB and that is an edge condition, you will want to test
a kernel built with CONFIG_NOHIGHMEM set at 4GB. If it still reports
less than 4GB, you may need to try setting it to 64GB. I know it sounds
like overkill but what can you do.

Well, actually there is something you can do. Upgrade to 2.6.12 and get
it working. I'm pretty sure this HIGHMEM stuff is handled automatically
by the more recent kernels.


I've built a 32 bit 2.6.11.12 kernel with highmem on, it does the same
thing as the 64 bit kernel. The 2.6.12 kernel has a broken driver for the
Silicon Image SATA raid chip which is on my motherboard. I've been trying
to get a 2.6.13.rc3 kernel to boot. The 2.6.13 kernel has a bunch of new
memory modes, flat and a couple of NUMA modes that have different
mechanisms for handling discontinuous memory. I tried the NUMA kernel,
wouldn't boot at all, it gets to the booting kernel line and freezes. I'm
now building a non-NUMA kernel with the flat memory model. The X2 is a
shared memory multi-processor, it's not NUMA, but architecturally it's
nearly identical to two Opterons so I'm surprised that the NUMA mode
doesn't boot but then again the BIOS is basically a uniprocessor BIOS so
maybe that explains it.

I have another data point. I ran Memtest86. It has a couple of ways of
sizing memory. The default mechanism is to ask the BIOS, in that mode it
sees 4G if the BIOS has memory hole remapping turned on, and 3.5G if
off. It also has a memory probe method. With the memory probe method it
gets exactly the same results as Linux, 3.5G if memory hole mapping is
OFF, 3G if it's ON. Memtest86 crashes if you run the test using the memory
probe method, it runs fine on all 4G with no errors if you use the BIOS
method of memory sizing.

  #4  
Old July 28th 05, 10:46 PM
General Schvantzkoph
external usenet poster
 
Posts: n/a
Default

On Wed, 27 Jul 2005 15:19:06 -0400, General Schvantzkoph wrote:

I got some e-mail from MSI, it's a design defect and they aren't going to
fix it. Anyone wanting 4G or more of RAM should pick another brand, the
MSI K8N Neo4 can only see 3.5G.

Here is the notice on their website.

Due to the South Bridge resource deployment, the system density will only
be detected up to 3+ GB (not full 4GB) when each DIMM is installed with an
1GB memory module
  #5  
Old July 31st 05, 03:50 AM
Doug Lynn
external usenet poster
 
Posts: n/a
Default

Hi, the chipset and cpu are probably reserving part of high memory, its
always been that way with 4G of memory.

doug
www.lynncomp.com

"General Schvantzkoph" wrote in message
news
Just got an Athlon 64 X2 system with 4G of RAM. The motherboard is an MSI
K8N Neo4 Platinum (NForce 4). I'm using 64 bit Fedora Core 3 with a
2.6.11.12 kernel compiled for the Athlon 64.

The BIOS has a switch called S/W memory hole remapping, when OFF the BIOS
sees 3.5G of RAM as does Linux. When ON the BIOS sees all 4G of RAM but
Linux sees only 3G. I've given a mem=4096M to GRUB,

title Fedora Core (2.6.11.12)
root (hd0,0)
kernel /boot/vmlinuz-2.6.11.12 ro root=LABEL=/1 mem=4096M rhgb quiet
initrd /boot/initrd-2.6.11.12.img

This doesn't help, is my grub config correct?

With the memory hole remapping ON the mem switch is required, if it's not
there I get a kernel panic.

Is there another switch that I need? Is there a kernel config switch that
I need to throw.

BTW this a custom kernel based on the .config file for the FC3 2.6.12
kernel. The current FC3 2.6.12 kernel panics on boot because they left our
the nv_sata driver. I built a standard 2.6.12.3 kernel but it panics
because of a problem with the Silicon Image RAID driver, the 2.6.11.12
kernel boots fine, however I had to install Nvidia's networking drivers to
get the ethernet controller to work, the kernel 2.6.11.12 drivers don't
seem to work although the drivers in the old 2.6.9 kernel that comes with
FC3 work fine.





  #6  
Old July 31st 05, 01:54 PM
General Schvantzkoph
external usenet poster
 
Posts: n/a
Default

On Sun, 31 Jul 2005 14:36:03 +0200, Hari Seldon wrote:

Il Sat, 30 Jul 2005 22:50:39 -0400, Doug Lynn ha scritto

Hi, the chipset and cpu are probably reserving part of high memory, its
always been that way with 4G of memory.

It's a 64 bit system, the statement doesn't make any sense.

Moreover, the OP discovered what went wrong. It's board's fault. Msi
admitted they did something wrong, that mb won't support more than
3.5GB.


Right. The AMD64 has a 64 bit Virtual Address and more importantly it has
a 40 bit physical address so it makes no sense to map the chipset into the
same physical space as the RAM. Obviously this is a solvable problem
because Opteron systems support 8G per processor. I'm guessing that this
is really a BIOS problem because the Award BIOS was developed for 32 bit
systems and they haven't gotten around to rewriting it for 64 bit chips.
The memory controller on the A64 is on the CPU not in the chipset so I
don't see what they could have done to actually block access to all 4G.
The RAM could be mapped anywhere in the 40 bit physical address space so
there is no excuse for mapping it into the same space as the bridge chip.

  #7  
Old July 31st 05, 11:42 PM
General Schvantzkoph
external usenet poster
 
Posts: n/a
Default

On Mon, 01 Aug 2005 00:16:48 +0200, Hari Seldon wrote:

Il Sun, 31 Jul 2005 08:54:48 -0400, General Schvantzkoph ha scritto


Hi, the chipset and cpu are probably reserving part of high memory, its
always been that way with 4G of memory.

It's a 64 bit system, the statement doesn't make any sense.

Moreover, the OP discovered what went wrong. It's board's fault. Msi
admitted they did something wrong, that mb won't support more than
3.5GB.


Right. The AMD64 has a 64 bit Virtual Address and more importantly it has
a 40 bit physical address so it makes no sense to map the chipset into the
same physical space as the RAM. Obviously this is a solvable problem
because Opteron systems support 8G per processor. I'm guessing that this
is really a BIOS problem because the Award BIOS was developed for 32 bit
systems and they haven't gotten around to rewriting it for 64 bit chips.
The memory controller on the A64 is on the CPU not in the chipset so I
don't see what they could have done to actually block access to all 4G.
The RAM could be mapped anywhere in the 40 bit physical address space so
there is no excuse for mapping it into the same space as the bridge chip.

Actually there still is a part of northbridge: the one necessary for the
agp/pci-e video interface is still there. Could *this* one be the culprit
somehow? Or the ACPI interface?
I'm not quite convinced about the bios part. Does Opteron have something
totally different from the usual award/ami/whatever stuff?


Server cards have had to deal with 4G for a long time because the
physical address space on a Xeon is 36 bits, so they must have solved the
problem there. So you would expect a server BIOS to be able to
accommodate a large address space. 4G on desktop systems is brand new
although it can't be a surprise to anyone designing a chipset or writing
a BIOS.

As for the physical address of each DIMM it can be anywhere in the 40 bit
space as long as the OS knows about it. The memory management code in the
OS takes care of mapping virtual memory to physical memory and as already
stated the MTU entries in the Athlon64 accommodate a 40 bit address. Even
the legacy modes accommodate 36 bits because that's what the X86s have
used for years. Also the memory controller is on the CPU, it's completely
divorced from the bridge chip so how is it possible for there to be
anything on the board that prevents the BIOS from recognizing all 4G and
more importantly passing the info to the OS.

The problem could be a Linux issue. The BIOS does see all 4G if you use
memory hole mapping. However in this mode Linux sees only 3G, it also
requires a mem= statement in order to boot. I've tried lots of kernels
including the latest release candidate for 2.6.12, they all behave
identically. I don't own a copy of XP so I have no idea if it can handle
memory hole mapping. I'd be curious to hear if anyone with a 4G XP system
has the same issue.


  #8  
Old August 1st 05, 10:09 PM
dead kitty
external usenet poster
 
Posts: n/a
Default

General Schvantzkoph wrote in
news
On Mon, 01 Aug 2005 00:16:48 +0200, Hari Seldon wrote:

Il Sun, 31 Jul 2005 08:54:48 -0400, General Schvantzkoph ha scritto


Hi, the chipset and cpu are probably reserving part of high
memory, its always been that way with 4G of memory.

It's a 64 bit system, the statement doesn't make any sense.

Moreover, the OP discovered what went wrong. It's board's fault.
Msi admitted they did something wrong, that mb won't support more
than 3.5GB.

Right. The AMD64 has a 64 bit Virtual Address and more importantly
it has a 40 bit physical address so it makes no sense to map the
chipset into the same physical space as the RAM. Obviously this is a
solvable problem because Opteron systems support 8G per processor.
I'm guessing that this is really a BIOS problem because the Award
BIOS was developed for 32 bit systems and they haven't gotten around
to rewriting it for 64 bit chips. The memory controller on the A64
is on the CPU not in the chipset so I don't see what they could have
done to actually block access to all 4G. The RAM could be mapped
anywhere in the 40 bit physical address space so there is no excuse
for mapping it into the same space as the bridge chip.

Actually there still is a part of northbridge: the one necessary for
the agp/pci-e video interface is still there. Could *this* one be the
culprit somehow? Or the ACPI interface?
I'm not quite convinced about the bios part. Does Opteron have
something totally different from the usual award/ami/whatever stuff?


Server cards have had to deal with 4G for a long time because the
physical address space on a Xeon is 36 bits, so they must have solved
the problem there. So you would expect a server BIOS to be able to
accommodate a large address space. 4G on desktop systems is brand new
although it can't be a surprise to anyone designing a chipset or
writing a BIOS.

As for the physical address of each DIMM it can be anywhere in the 40
bit space as long as the OS knows about it. The memory management code
in the OS takes care of mapping virtual memory to physical memory and
as already stated the MTU entries in the Athlon64 accommodate a 40 bit
address. Even the legacy modes accommodate 36 bits because that's what
the X86s have used for years. Also the memory controller is on the
CPU, it's completely divorced from the bridge chip so how is it
possible for there to be anything on the board that prevents the BIOS
from recognizing all 4G and more importantly passing the info to the
OS.

The problem could be a Linux issue. The BIOS does see all 4G if you
use memory hole mapping. However in this mode Linux sees only 3G, it
also requires a mem= statement in order to boot. I've tried lots of
kernels including the latest release candidate for 2.6.12, they all
behave identically. I don't own a copy of XP so I have no idea if it
can handle memory hole mapping. I'd be curious to hear if anyone with
a 4G XP system has the same issue.




I have the 4400+, 4GB PC3200, Abit Fatal1ty SLi, XP x64.
I see 4.00GB displayed in Windows properties.

Running XP 32-bit I only see 2.75GB of my 4GB. Is your Linux 32-bit?


  #9  
Old August 1st 05, 11:04 PM
General Schvantzkoph
external usenet poster
 
Posts: n/a
Default

On Mon, 01 Aug 2005 16:09:44 -0500, dead kitty wrote:

General Schvantzkoph wrote in
news
On Mon, 01 Aug 2005 00:16:48 +0200, Hari Seldon wrote:

Il Sun, 31 Jul 2005 08:54:48 -0400, General Schvantzkoph ha scritto


Hi, the chipset and cpu are probably reserving part of high
memory, its always been that way with 4G of memory.

It's a 64 bit system, the statement doesn't make any sense.

Moreover, the OP discovered what went wrong. It's board's fault.
Msi admitted they did something wrong, that mb won't support more
than 3.5GB.

Right. The AMD64 has a 64 bit Virtual Address and more importantly
it has a 40 bit physical address so it makes no sense to map the
chipset into the same physical space as the RAM. Obviously this is a
solvable problem because Opteron systems support 8G per processor.
I'm guessing that this is really a BIOS problem because the Award
BIOS was developed for 32 bit systems and they haven't gotten around
to rewriting it for 64 bit chips. The memory controller on the A64
is on the CPU not in the chipset so I don't see what they could have
done to actually block access to all 4G. The RAM could be mapped
anywhere in the 40 bit physical address space so there is no excuse
for mapping it into the same space as the bridge chip.
Actually there still is a part of northbridge: the one necessary for
the agp/pci-e video interface is still there. Could *this* one be the
culprit somehow? Or the ACPI interface?
I'm not quite convinced about the bios part. Does Opteron have
something totally different from the usual award/ami/whatever stuff?


Server cards have had to deal with 4G for a long time because the
physical address space on a Xeon is 36 bits, so they must have solved
the problem there. So you would expect a server BIOS to be able to
accommodate a large address space. 4G on desktop systems is brand new
although it can't be a surprise to anyone designing a chipset or
writing a BIOS.

As for the physical address of each DIMM it can be anywhere in the 40
bit space as long as the OS knows about it. The memory management code
in the OS takes care of mapping virtual memory to physical memory and
as already stated the MTU entries in the Athlon64 accommodate a 40 bit
address. Even the legacy modes accommodate 36 bits because that's what
the X86s have used for years. Also the memory controller is on the
CPU, it's completely divorced from the bridge chip so how is it
possible for there to be anything on the board that prevents the BIOS
from recognizing all 4G and more importantly passing the info to the
OS.

The problem could be a Linux issue. The BIOS does see all 4G if you
use memory hole mapping. However in this mode Linux sees only 3G, it
also requires a mem= statement in order to boot. I've tried lots of
kernels including the latest release candidate for 2.6.12, they all
behave identically. I don't own a copy of XP so I have no idea if it
can handle memory hole mapping. I'd be curious to hear if anyone with
a 4G XP system has the same issue.




I have the 4400+, 4GB PC3200, Abit Fatal1ty SLi, XP x64.
I see 4.00GB displayed in Windows properties.

Running XP 32-bit I only see 2.75GB of my 4GB. Is your Linux 32-bit?


I'm running 64 bit Linux, latest kernel. I've also tried a 32 bit large
mem kernel. Do you have memory hole mapping turned on in your BIOS?

  #10  
Old August 6th 05, 04:11 AM
Scott Lurndal
external usenet poster
 
Posts: n/a
Default

General Schvantzkoph writes:


I have another data point. I ran Memtest86. It has a couple of ways of
sizing memory. The default mechanism is to ask the BIOS, in that mode it
sees 4G if the BIOS has memory hole remapping turned on, and 3.5G if
off. It also has a memory probe method. With the memory probe method it
gets exactly the same results as Linux, 3.5G if memory hole mapping is
OFF, 3G if it's ON. Memtest86 crashes if you run the test using the memory
probe method, it runs fine on all 4G with no errors if you use the BIOS
method of memory sizing.


"Memory Hole Mapping"

The northbridge on amd64 processors supports a concept called
memory hoisting. The Memory Mapped I/O space in 32-bit environments
is often in the upper 512MB of the 32-bit address space. When you
have 4GB of DRAM, the upper 512MB of the DRAM conflicts with the
MMIO range, so the BIOS can set a bit in the northbridge configuration
that will "hoist" the last 512MB of DRAM and re-base it at 4GB (which
makes the highest physical DRAM address (or Top Of Memory in amd-ese)
4.5GB, with a hole (occupied by the MMIO space) from 3.5GB to 4.0GB).

Memtest will crash using the probe method because it is writing to
MMIO space (i.e pci device configuration and operation registers) between
3.5GB and 4.0GB.

64-bit linux only seeing 3.0GB when hoisting is enabled sounds like
either a bug in the linux sizing code, or a bug in the BIOS when it exposes
the memory configuration through ACPI and/or E820.

A 32-bit kernel would need to use PAE to access the high 512MB when
hoisting is enabled - config for 64G should enable PAE support.

The early dmesg(1m) output should show the values of the E820 BIOS memory
map that the kernel operates from, can you post that?

scott

 




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Weird - 8500LE works in windows but borked in Linux TMack Ati Videocards 1 November 4th 04 03:13 AM
Advice asked: linux / nForce2 problems Chris General 16 February 12th 04 03:21 PM
Asus A7N8X-X and Linux, getting pretty desperate... [email protected] Asus Motherboards 19 February 12th 04 12:30 PM
Linux on Dell Precision 650 with SATA drives? Akop Pogosian Dell Computers 2 December 19th 03 12:33 AM
tnt2 mvp3 agpgart and nvidia linux drivers no-spam Nvidia Videocards 0 September 18th 03 07:58 AM


All times are GMT +1. The time now is 12:00 AM.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 HardwareBanter.
The comments are property of their posters.