From: ravibt on
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):


$ more /proc/iomem
00000000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000f0000-000fffff : System ROM
00100000-c772fbff : System RAM
00100000-0030754e : Kernel code
0030754f-0044680d : Kernel data
c772fc00-c772ffff : ACPI Non-volatile Storage
c7730000-c773ffff : ACPI Tables
c7740000-c77effff : ACPI Non-volatile Storage
c77f0000-c77fffff : reserved
cfb00000-cfbfffff : PCI Bus #05
cfc00000-cfcfffff : PCI Bus #04
cfd00000-cfdfffff : PCI Bus #03
cfe00000-cfefffff : PCI Bus #02
cff00000-cfffffff : PCI Bus #01
d0000000-dfffffff : 0000:00:02.0
e0000000-efffffff : reserved
fed13000-fed19fff : reserved
fed1c000-fed9ffff : reserved
ff43bc00-ff43bfff : 0000:00:1d.7
ff43bc00-ff43bfff : ehci_hcd
ff43c000-ff43ffff : 0000:00:1b.0
ff43c000-ff43ffff : ICH HD audio
ff440000-ff47ffff : 0000:00:02.0
ff480000-ff4fffff : 0000:00:02.0
ff500000-ff500fff : 0000:06:08.0
ff500000-ff500fff : e100
ff600000-ff6fffff : PCI Bus #05
ff700000-ff7fffff : PCI Bus #04
ff800000-ff8fffff : PCI Bus #03
ff900000-ff9fffff : PCI Bus #02
ffa00000-ffafffff : PCI Bus #01





$ dmesg
Bootdata ok (command line is ro root=LABEL=/1 mem=4096m rhgb quiet)
Linux version 2.6.9-22.ELsmp (buildcentos(a)monk.karan.org) (gcc version
3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Sat Oct 8 21:32:36 BST 2005
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000c772fc00 (usable)
BIOS-e820: 00000000c772fc00 - 00000000c7730000 (ACPI NVS)
BIOS-e820: 00000000c7730000 - 00000000c7740000 (ACPI data)
BIOS-e820: 00000000c7740000 - 00000000c77f0000 (ACPI NVS)
BIOS-e820: 00000000c77f0000 - 00000000c7800000 (reserved)
BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
BIOS-e820: 00000000fed13000 - 00000000fed1a000 (reserved)
BIOS-e820: 00000000fed1c000 - 00000000feda0000 (reserved)
ACPI: RSDP (v000 ACPIAM ) @
0x00000000000f4eb0
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
DMA zone: 4096 pages, LIFO batch:1
Normal zone: 812847 pages, LIFO batch:16
HighMem zone: 0 pages, LIFO batch:1
DMI 2.3 present.
ACPI: PM-Timer IO Port: 0x408
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
Processor #0 15:4 APIC version 16
ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled)
Processor #1 15:4 APIC version 16
ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x02] dfl dfl lint[0x1])
Setting APIC routing to flat
ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0])
IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23
ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
ACPI: IRQ0 used by override.
ACPI: IRQ2 used by override.
ACPI: IRQ9 used by override.
Using ACPI (MADT) for SMP configuration information
Checking aperture...
Built 1 zonelists
Kernel command line: ro root=LABEL=/1 mem=4096m rhgb quiet console=tty0
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 131072 bytes)
time.c: Using 3.579545 MHz PM timer.
time.c: Detected 3000.257 MHz processor.
Console: colour VGA+ 80x25
Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes)
Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes)
Memory: 3210516k/3267772k available (2077k kernel code, 0k reserved,
1276k data, 188k init)
Calibrating delay loop... 5914.62 BogoMIPS (lpj=2957312)
Security Scaffold v1.0.0 initialized
SELinux: Initializing.
SELinux: Starting in permissive mode
There is already a security framework initialized, register_security
failed.
selinux_register_security: Registering secondary module capability
Capability LSM initialized as secondary
Mount-cache hash table entries: 256 (order: 0, 4096 bytes)
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
using mwait in idle threads.
CPU0: Initial APIC ID: 0, Physical Processor ID: 0
Using IO APIC NMI watchdog
CPU: Trace cache: 12K uops, L1 D cache: 16K
CPU: L2 cache: 2048K
CPU0: Initial APIC ID: 0, Physical Processor ID: 0
CPU0: Intel(R) Pentium(R) 4 CPU 3.00GHz stepping 03
per-CPU timeslice cutoff: 615.86 usecs.
task migration cache decay timeout: 1 msecs.
Booting processor 1/1 rip 6000 rsp 100042d5f58
Initializing CPU#1
Calibrating delay loop
From: iforone on

ravibt(a)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):

<snipped>

What's ther output of;

~$ grep CONFIG_HIGH /boot/config-2.6.9-22.ELsmp
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
# CONFIG_HIGHPTE is not set

From: ravibt on
> What's ther output of;
>
> ~$ grep CONFIG_HIGH /boot/config-2.6.9-22.ELsmp

Nothing.

Browsed through the 'Kconfig' files in the src tree and found that
HIGHMEM* options are available for i386 arch only, and in this case
x86_64 is being used.


As an aside, we have another similar dual core intel pentium4 machine
with one difference: 32 bit instead of 64 bit with the same problem:
BIOS detects 4 GB RAM but kernel reports ~3.1GB. In this one, `grep
HIGHMEM /boot/config-2.6.17.7_20060727` (Note: different kernel) gives
the following output:
# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y
CONFIG_DEBUG_HIGHMEM=y
[This 32 bit machine had reported ~3.1GB RAM with kernel 2.6.9-34.ELsmp
(CentOS 4.3 Final) too.]

Also, I tried using a different kernel (2.6.17.1) in the 64 bit machine
with the same result.

As Robert Hancock has explained, probably nothing can be done about
it!!

Thanks very much both of you for the quick responses!

regards,
Ravi.

From: Jean-David Beyer on
ravibt(a)gmail.com wrote:
>> What's ther output of;
>>
>> ~$ grep CONFIG_HIGH /boot/config-2.6.9-22.ELsmp
>
> Nothing.
>
> Browsed through the 'Kconfig' files in the src tree and found that
> HIGHMEM* options are available for i386 arch only, and in this case
> x86_64 is being used.
>
>
> As an aside, we have another similar dual core intel pentium4 machine
> with one difference: 32 bit instead of 64 bit with the same problem:
> BIOS detects 4 GB RAM but kernel reports ~3.1GB. In this one, `grep
> HIGHMEM /boot/config-2.6.17.7_20060727` (Note: different kernel) gives
> the following output:
> # CONFIG_NOHIGHMEM is not set
> CONFIG_HIGHMEM4G=y
> # CONFIG_HIGHMEM64G is not set
> CONFIG_HIGHMEM=y
> CONFIG_DEBUG_HIGHMEM=y
> [This 32 bit machine had reported ~3.1GB RAM with kernel 2.6.9-34.ELsmp
> (CentOS 4.3 Final) too.]
>
> Also, I tried using a different kernel (2.6.17.1) in the 64 bit machine
> with the same result.
>
> As Robert Hancock has explained, probably nothing can be done about
> it!!
>
> Thanks very much both of you for the quick responses!
>
> regards,
> Ravi.
>
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.

--
.~. Jean-David Beyer Registered Linux User 85642.
/V\ PGP-Key: 9A2FC99A Registered Machine 241939.
/( )\ Shrewsbury, New Jersey http://counter.li.org
^^-^^ 09:40:01 up 6 days, 16:18, 3 users, load average: 4.33, 4.36, 4.30
From: General Schvantzkoph on
On Wed, 26 Jul 2006 09:27:58 -0700, ravibt 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):

This could be a memory hole remapping issue. The old way of mapping the IO
space was to map in in the upper part of the 4G memory space, that's still
the default. Check your BIOS to see if there is something called Memory
Hole Remapping (that's what it's called on my MSI K8N Neo4 Athlon64 board,
it may be called something different on your P4 board). If you find
something like that enable it. You will also need a recent kernel, the
IOMMU code prior to 2.6.15 doesn't work.
 |  Next  |  Last
Pages: 1 2
Prev: Create Linux FC SAN Target
Next: top - high load