Intel's response Linux/MTRR/8GB Memory Support / Why doesn't thekernel realize the BIOS has problems and re-map appropriately?

From: Justin Piszcz
Date: Fri Jun 01 2007 - 14:15:15 EST



Dear Customer,

Thank you for contacting Intel(R) Technical Support.

After reviewing the email history on this case, we have the following suggestions/comments:

Note before continuing: Debian* Linux Operating System is not an officially, validated, tested Operating System for the Intel(R) Desktop Board DG965WH (see http://downloadcenter.intel.com/Product_Filter.aspx?ProductID=2375); moreover, we do confirm that "on a system that has 8 GB of system memory installed, it is not possible to use all of the installed memory due to system address space being allocated for other system critical functions." [qtd. on page 43 of the Technical Product Specification (see http://download.intel.com/design/motherbd/wh/D5600801US.pdf)]. Thus, the following suggestions are provided AS IS; we cannot guarantee the problem would be fixed afterwards:

1. Try updating the BIOS to the most current version (1687):

http://downloadcenter.intel.com/filter_results.aspx?strTypes=all&ProductID=2375&OSFullName=OS+Independent&lang=eng&strOSs=38&submit=Go%21

Note: Once the update is done, please, restart the system and repeat the following:

Press <F9> to restore BIOS default settings. Reset any customized BIOS settings. Clear all DMI event logs, which are located in the Advanced/Event Log Configuration section of the BIOS Setup utility. Press <F10> to save the new settings and reboot the system.


2. If the problem continues, please, ensure the brand and part# of the memory modules are listed among the tested memory lists (see http://developer.intel.com/design/motherbd/wh/wh_mem.htm#1).


------------

Before I upgraded to 8GB, I used to upgrade my BIOS everytime a new version came out, however, once I upgraded past 1666P I also noticed this problem even with 4GB of memory, I tried to downgrade back to 1666P and it corrupted the BIOS/failed and I had to wait 1-2 weeks for the RMA process, 1 week to get there, 1-3 days for analysis etc, they do ship two-day shipping back to you however..

Per Robert's response, this is the fix I will be using as Intel wants me to upgrade the BIOS to the defaults, which could potentially cause another motherboard failure. I'll stick with the mem= option. I need to read up on the E820 memory map.

How come the kernel does not automatically map the memory correctly and then put a message in syslog/dmesg: Only using 7.7GB because your BIOS is using 64MB for other purposes, re-mapping kernel into higher memory..

Any comments?


Per Robert below:

Justin Piszcz wrote:
That output looked nasty, attaching entries from syslog.

Justin.

Here's your E820 memory map, from dmesg:

BIOS-e820: 0000000000000000 - 000000000008f000 (usable)
BIOS-e820: 000000000008f000 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cf58f000 (usable)
BIOS-e820: 00000000cf58f000 - 00000000cf59c000 (reserved)
BIOS-e820: 00000000cf59c000 - 00000000cf653000 (usable)
BIOS-e820: 00000000cf653000 - 00000000cf6a5000 (ACPI NVS)
BIOS-e820: 00000000cf6a5000 - 00000000cf6a8000 (ACPI data)
BIOS-e820: 00000000cf6a8000 - 00000000cf6ef000 (ACPI NVS)
BIOS-e820: 00000000cf6ef000 - 00000000cf6f1000 (ACPI data)
BIOS-e820: 00000000cf6f1000 - 00000000cf6f2000 (usable)
BIOS-e820: 00000000cf6f2000 - 00000000cf6ff000 (ACPI data)
BIOS-e820: 00000000cf6ff000 - 00000000cf700000 (usable)
BIOS-e820: 00000000cf700000 - 00000000d0000000 (reserved)
BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 000000022c000000 (usable)

so the usable memory ranges are:

0-572K
1MB-3317.55MB
3317.60MB-3317.75MB
3318.94MB-3318.945MB
3318.996MB-3319MB
4096MB-8896MB

and the MTRRs (from /proc/mtrr, from private email):

reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x80000000 (2048MB), size=1024MB: write-back, count=1
reg02: base=0xc0000000 (3072MB), size= 256MB: write-back, count=1
reg03: base=0xcf800000 (3320MB), size= 8MB: uncachable, count=1
reg04: base=0xcf700000 (3319MB), size= 1MB: uncachable, count=1
reg05: base=0x100000000 (4096MB), size=4096MB: write-back, count=1
reg06: base=0x200000000 (8192MB), size= 512MB: write-back, count=1
reg07: base=0x220000000 (8704MB), size= 128MB: write-back, count=1

so the ranges mapped as cacheable are:

0-3319MB
4096-8832MB

leaving 64MB of memory at the top of RAM uncached. What do you want to
bet that something important (kernel code?) is getting loaded there..

So essentially it's a BIOS problem, it's not setting up the MTRRs
properly in order to map all of RAM as cacheable. As Andi says, complain
to Intel.

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

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/