[CentOS] mtrr_gran_size and mtrr_chunk_size

Sat Nov 3 11:17:49 UTC 2012
Earl Ramirez <earlaramirez at gmail.com>

Good Day All,

Today I looked at the dmesg log and I notice that the following messages
regarding mtrr_gran_size/mtrr_chunk_size.

I am currently running CentOS 6.3 and I installed CentOS 6.2 and 6.1 and I
was seeing the same errors. When I installed CentOS 5.8 on the same laptop
I do not see these errors.

$ lsb_release -a
LSB Version:
:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID:    CentOS
Description:    CentOS release 6.3 (Final)
Release:    6.3
Codename:    Final


Below is an excerpt from dmesg

BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009e800 (usable)
 BIOS-e820: 000000000009e800 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 0000000020000000 (usable)
 BIOS-e820: 0000000020000000 - 0000000020200000 (reserved)
 BIOS-e820: 0000000020200000 - 0000000040000000 (usable)
 BIOS-e820: 0000000040000000 - 0000000040200000 (reserved)
 BIOS-e820: 0000000040200000 - 00000000aac0c000 (usable)
 BIOS-e820: 00000000aac0c000 - 00000000aad8e000 (reserved)
 BIOS-e820: 00000000aad8e000 - 00000000aad94000 (usable)
 BIOS-e820: 00000000aad94000 - 00000000aad95000 (reserved)
 BIOS-e820: 00000000aad95000 - 00000000aad96000 (usable)
 BIOS-e820: 00000000aad96000 - 00000000aadb8000 (reserved)
 BIOS-e820: 00000000aadb8000 - 00000000aadc6000 (usable)
 BIOS-e820: 00000000aadc6000 - 00000000aade8000 (reserved)
 BIOS-e820: 00000000aade8000 - 00000000aae22000 (usable)
 BIOS-e820: 00000000aae22000 - 00000000aafe8000 (ACPI NVS)
 BIOS-e820: 00000000aafe8000 - 00000000aaffd000 (usable)
 BIOS-e820: 00000000aaffd000 - 00000000ab000000 (ACPI data)
 BIOS-e820: 00000000ab000000 - 00000000b0000000 (reserved)
 BIOS-e820: 00000000e0000000 - 00000000e4000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved)
 BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved)
 BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved)
 BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000ff980000 - 00000000ffc00000 (reserved)
 BIOS-e820: 00000000ffd80000 - 0000000100000000 (reserved)
 BIOS-e820: 0000000100000000 - 000000044f800000 (usable)
DMI 2.6 present.
SMBIOS version 2.6 @ 0xF0460
DMI: ASUSTeK Computer Inc. N55SL/N55SL, BIOS N55SL.201 11/10/2011
AMI BIOS detected: BIOS may corrupt low RAM, working around it.
e820 update range: 0000000000000000 - 0000000000010000 (usable) ==>
(reserved)
e820 update range: 0000000000000000 - 0000000000001000 (usable) ==>
(reserved)
e820 remove range: 00000000000a0000 - 0000000000100000 (usable)
last_pfn = 0x44f800 max_arch_pfn = 0x400000000
MTRR default type: uncachable
MTRR fixed ranges enabled:
  00000-9FFFF write-back
  A0000-BFFFF uncachable
  C0000-CFFFF write-protect
  D0000-E7FFF uncachable
  E8000-FFFFF write-protect
MTRR variable ranges enabled:
  0 base 000000000 mask C00000000 write-back
  1 base 400000000 mask FC0000000 write-back
  2 base 440000000 mask FF0000000 write-back
  3 base 0C0000000 mask FC0000000 uncachable
  4 base 0B0000000 mask FF0000000 uncachable
  5 base 0AC000000 mask FFC000000 uncachable
  6 base 0AB000000 mask FFF000000 uncachable
  7 base 44F800000 mask FFF800000 uncachable
  8 disabled
  9 disabled
x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106
original variable MTRRs
reg 0, base: 0GB, range: 16GB, type WB
reg 1, base: 16GB, range: 1GB, type WB
reg 2, base: 17GB, range: 256MB, type WB
reg 3, base: 3GB, range: 1GB, type UC
reg 4, base: 2816MB, range: 256MB, type UC
reg 5, base: 2752MB, range: 64MB, type UC
reg 6, base: 2736MB, range: 16MB, type UC
reg 7, base: 17656MB, range: 8MB, type UC
total RAM covered: 16296M
 gran_size: 64K     chunk_size: 64K     num_reg: 10      lose cover RAM: 56M
 gran_size: 64K     chunk_size: 128K     num_reg: 10      lose cover RAM:
56M
 gran_size: 64K     chunk_size: 256K     num_reg: 10      lose cover RAM:
56M
 gran_size: 64K     chunk_size: 512K     num_reg: 10      lose cover RAM:
56M
 gran_size: 64K     chunk_size: 1M     num_reg: 10      lose cover RAM: 56M
 gran_size: 64K     chunk_size: 2M     num_reg: 10      lose cover RAM: 56M
 gran_size: 64K     chunk_size: 4M     num_reg: 10      lose cover RAM: 56M
 gran_size: 64K     chunk_size: 8M     num_reg: 10      lose cover RAM: 56M
 gran_size: 64K     chunk_size: 16M     num_reg: 10      lose cover RAM: 0G
 gran_size: 64K     chunk_size: 32M     num_reg: 10      lose cover RAM: 0G
 gran_size: 64K     chunk_size: 64M     num_reg: 10      lose cover RAM: 0G
 gran_size: 64K     chunk_size: 128M     num_reg: 10      lose cover RAM: 0G
 gran_size: 64K     chunk_size: 256M     num_reg: 10      lose cover RAM: 0G
*BAD*gran_size: 64K     chunk_size: 512M     num_reg: 10      lose cover
RAM: -256M
*BAD*gran_size: 64K     chunk_size: 1G     num_reg: 10      lose cover RAM:
-512M
*BAD*gran_size: 64K     chunk_size: 2G     num_reg: 10      lose cover RAM:
-512M
 gran_size: 128K     chunk_size: 128K     num_reg: 10      lose cover RAM:
56M
 gran_size: 128K     chunk_size: 256K     num_reg: 10      lose cover RAM:
56M
 gran_size: 128K     chunk_size: 512K     num_reg: 10      lose cover RAM:
56M
 gran_size: 128K     chunk_size: 1M     num_reg: 10      lose cover RAM: 56M
 gran_size: 128K     chunk_size: 2M     num_reg: 10      lose cover RAM: 56M
 gran_size: 128K     chunk_size: 4M     num_reg: 10      lose cover RAM: 56M
 gran_size: 128K     chunk_size: 8M     num_reg: 10      lose cover RAM: 56M
 gran_size: 128K     chunk_size: 16M     num_reg: 10      lose cover RAM: 0G
 gran_size: 128K     chunk_size: 32M     num_reg: 10      lose cover RAM: 0G
 gran_size: 128K     chunk_size: 64M     num_reg: 10      lose cover RAM: 0G
 gran_size: 128K     chunk_size: 128M     num_reg: 10      lose cover RAM:
0G
 gran_size: 128K     chunk_size: 256M     num_reg: 10      lose cover RAM:
0G
*BAD*gran_size: 128K     chunk_size: 512M     num_reg: 10      lose cover
RAM: -256M
*BAD*gran_size: 128K     chunk_size: 1G     num_reg: 10      lose cover
RAM: -512M
*BAD*gran_size: 128K     chunk_size: 2G     num_reg: 10      lose cover
RAM: -512M
 gran_size: 256K     chunk_size: 256K     num_reg: 10      lose cover RAM:
56M
 gran_size: 256K     chunk_size: 512K     num_reg: 10      lose cover RAM:
56M
 gran_size: 256K     chunk_size: 1M     num_reg: 10      lose cover RAM: 56M
 gran_size: 256K     chunk_size: 2M     num_reg: 10      lose cover RAM: 56M
 gran_size: 256K     chunk_size: 4M     num_reg: 10      lose cover RAM: 56M
 gran_size: 256K     chunk_size: 8M     num_reg: 10      lose cover RAM: 56M
 gran_size: 256K     chunk_size: 16M     num_reg: 10      lose cover RAM: 0G
 gran_size: 256K     chunk_size: 32M     num_reg: 10      lose cover RAM: 0G
 gran_size: 256K     chunk_size: 64M     num_reg: 10      lose cover RAM: 0G
 gran_size: 256K     chunk_size: 128M     num_reg: 10      lose cover RAM:
0G
 gran_size: 256K     chunk_size: 256M     num_reg: 10      lose cover RAM:
0G
*BAD*gran_size: 256K     chunk_size: 512M     num_reg: 10      lose cover
RAM: -256M
*BAD*gran_size: 256K     chunk_size: 1G     num_reg: 10      lose cover
RAM: -512M
*BAD*gran_size: 256K     chunk_size: 2G     num_reg: 10      lose cover
RAM: -512M
 gran_size: 512K     chunk_size: 512K     num_reg: 10      lose cover RAM:
56M
 gran_size: 512K     chunk_size: 1M     num_reg: 10      lose cover RAM: 56M
 gran_size: 512K     chunk_size: 2M     num_reg: 10      lose cover RAM: 56M
 gran_size: 512K     chunk_size: 4M     num_reg: 10      lose cover RAM: 56M
 gran_size: 512K     chunk_size: 8M     num_reg: 10      lose cover RAM: 56M
 gran_size: 512K     chunk_size: 16M     num_reg: 10      lose cover RAM: 0G
 gran_size: 512K     chunk_size: 32M     num_reg: 10      lose cover RAM: 0G
 gran_size: 512K     chunk_size: 64M     num_reg: 10      lose cover RAM: 0G
 gran_size: 512K     chunk_size: 128M     num_reg: 10      lose cover RAM:
0G
 gran_size: 512K     chunk_size: 256M     num_reg: 10      lose cover RAM:
0G
*BAD*gran_size: 512K     chunk_size: 512M     num_reg: 10      lose cover
RAM: -256M
*BAD*gran_size: 512K     chunk_size: 1G     num_reg: 10      lose cover
RAM: -512M
*BAD*gran_size: 512K     chunk_size: 2G     num_reg: 10      lose cover
RAM: -512M
 gran_size: 1M     chunk_size: 1M     num_reg: 10      lose cover RAM: 56M
 gran_size: 1M     chunk_size: 2M     num_reg: 10      lose cover RAM: 56M
 gran_size: 1M     chunk_size: 4M     num_reg: 10      lose cover RAM: 56M
 gran_size: 1M     chunk_size: 8M     num_reg: 10      lose cover RAM: 56M
 gran_size: 1M     chunk_size: 16M     num_reg: 10      lose cover RAM: 0G
 gran_size: 1M     chunk_size: 32M     num_reg: 10      lose cover RAM: 0G
 gran_size: 1M     chunk_size: 64M     num_reg: 10      lose cover RAM: 0G
 gran_size: 1M     chunk_size: 128M     num_reg: 10      lose cover RAM: 0G
 gran_size: 1M     chunk_size: 256M     num_reg: 10      lose cover RAM: 0G
*BAD*gran_size: 1M     chunk_size: 512M     num_reg: 10      lose cover
RAM: -256M
*BAD*gran_size: 1M     chunk_size: 1G     num_reg: 10      lose cover RAM:
-512M
*BAD*gran_size: 1M     chunk_size: 2G     num_reg: 10      lose cover RAM:
-512M
 gran_size: 2M     chunk_size: 2M     num_reg: 10      lose cover RAM: 56M
 gran_size: 2M     chunk_size: 4M     num_reg: 10      lose cover RAM: 56M
 gran_size: 2M     chunk_size: 8M     num_reg: 10      lose cover RAM: 56M
 gran_size: 2M     chunk_size: 16M     num_reg: 10      lose cover RAM: 0G
 gran_size: 2M     chunk_size: 32M     num_reg: 10      lose cover RAM: 0G
 gran_size: 2M     chunk_size: 64M     num_reg: 10      lose cover RAM: 0G
 gran_size: 2M     chunk_size: 128M     num_reg: 10      lose cover RAM: 0G
 gran_size: 2M     chunk_size: 256M     num_reg: 10      lose cover RAM: 0G
*BAD*gran_size: 2M     chunk_size: 512M     num_reg: 10      lose cover
RAM: -256M
*BAD*gran_size: 2M     chunk_size: 1G     num_reg: 10      lose cover RAM:
-512M
*BAD*gran_size: 2M     chunk_size: 2G     num_reg: 10      lose cover RAM:
-512M
 gran_size: 4M     chunk_size: 4M     num_reg: 10      lose cover RAM: 56M
 gran_size: 4M     chunk_size: 8M     num_reg: 10      lose cover RAM: 56M
 gran_size: 4M     chunk_size: 16M     num_reg: 10      lose cover RAM: 0G
 gran_size: 4M     chunk_size: 32M     num_reg: 10      lose cover RAM: 0G
 gran_size: 4M     chunk_size: 64M     num_reg: 10      lose cover RAM: 0G
 gran_size: 4M     chunk_size: 128M     num_reg: 10      lose cover RAM: 0G
 gran_size: 4M     chunk_size: 256M     num_reg: 10      lose cover RAM: 0G
*BAD*gran_size: 4M     chunk_size: 512M     num_reg: 10      lose cover
RAM: -256M
*BAD*gran_size: 4M     chunk_size: 1G     num_reg: 10      lose cover RAM:
-512M
*BAD*gran_size: 4M     chunk_size: 2G     num_reg: 10      lose cover RAM:
-512M
 gran_size: 8M     chunk_size: 8M     num_reg: 10      lose cover RAM: 56M
 gran_size: 8M     chunk_size: 16M     num_reg: 10      lose cover RAM: 0G
 gran_size: 8M     chunk_size: 32M     num_reg: 10      lose cover RAM: 0G
 gran_size: 8M     chunk_size: 64M     num_reg: 10      lose cover RAM: 0G
 gran_size: 8M     chunk_size: 128M     num_reg: 10      lose cover RAM: 0G
 gran_size: 8M     chunk_size: 256M     num_reg: 10      lose cover RAM: 0G
*BAD*gran_size: 8M     chunk_size: 512M     num_reg: 10      lose cover
RAM: -256M
*BAD*gran_size: 8M     chunk_size: 1G     num_reg: 10      lose cover RAM:
-512M
*BAD*gran_size: 8M     chunk_size: 2G     num_reg: 10      lose cover RAM:
-512M
 gran_size: 16M     chunk_size: 16M     num_reg: 10      lose cover RAM: 56M
 gran_size: 16M     chunk_size: 32M     num_reg: 10      lose cover RAM: 8M
 gran_size: 16M     chunk_size: 64M     num_reg: 10      lose cover RAM: 8M
 gran_size: 16M     chunk_size: 128M     num_reg: 10      lose cover RAM: 8M
 gran_size: 16M     chunk_size: 256M     num_reg: 10      lose cover RAM: 8M
*BAD*gran_size: 16M     chunk_size: 512M     num_reg: 10      lose cover
RAM: -248M
*BAD*gran_size: 16M     chunk_size: 1G     num_reg: 10      lose cover RAM:
-504M
*BAD*gran_size: 16M     chunk_size: 2G     num_reg: 10      lose cover RAM:
-504M
 gran_size: 32M     chunk_size: 32M     num_reg: 10      lose cover RAM: 40M
 gran_size: 32M     chunk_size: 64M     num_reg: 10      lose cover RAM: 40M
 gran_size: 32M     chunk_size: 128M     num_reg: 10      lose cover RAM:
40M
 gran_size: 32M     chunk_size: 256M     num_reg: 10      lose cover RAM:
40M
*BAD*gran_size: 32M     chunk_size: 512M     num_reg: 10      lose cover
RAM: -216M
*BAD*gran_size: 32M     chunk_size: 1G     num_reg: 10      lose cover RAM:
-472M
*BAD*gran_size: 32M     chunk_size: 2G     num_reg: 10      lose cover RAM:
-472M
 gran_size: 64M     chunk_size: 64M     num_reg: 8      lose cover RAM: 104M
 gran_size: 64M     chunk_size: 128M     num_reg: 8      lose cover RAM:
104M
 gran_size: 64M     chunk_size: 256M     num_reg: 9      lose cover RAM:
104M
 gran_size: 64M     chunk_size: 512M     num_reg: 10      lose cover RAM:
104M
 gran_size: 64M     chunk_size: 1G     num_reg: 10      lose cover RAM: 104M
 gran_size: 64M     chunk_size: 2G     num_reg: 10      lose cover RAM: 104M
 gran_size: 128M     chunk_size: 128M     num_reg: 7      lose cover RAM:
168M
 gran_size: 128M     chunk_size: 256M     num_reg: 9      lose cover RAM:
168M
 gran_size: 128M     chunk_size: 512M     num_reg: 10      lose cover RAM:
168M
 gran_size: 128M     chunk_size: 1G     num_reg: 10      lose cover RAM:
168M
 gran_size: 128M     chunk_size: 2G     num_reg: 10      lose cover RAM:
168M
 gran_size: 256M     chunk_size: 256M     num_reg: 5      lose cover RAM:
424M
 gran_size: 256M     chunk_size: 512M     num_reg: 5      lose cover RAM:
424M
 gran_size: 256M     chunk_size: 1G     num_reg: 6      lose cover RAM: 424M
 gran_size: 256M     chunk_size: 2G     num_reg: 7      lose cover RAM: 424M
 gran_size: 512M     chunk_size: 512M     num_reg: 5      lose cover RAM:
424M
 gran_size: 512M     chunk_size: 1G     num_reg: 6      lose cover RAM: 424M
 gran_size: 512M     chunk_size: 2G     num_reg: 7      lose cover RAM: 424M
 gran_size: 1G     chunk_size: 1G     num_reg: 4      lose cover RAM: 936M
 gran_size: 1G     chunk_size: 2G     num_reg: 5      lose cover RAM: 936M
 gran_size: 2G     chunk_size: 2G     num_reg: 3      lose cover RAM: 1960M
mtrr_cleanup: can not find optimal value
please specify mtrr_gran_size/mtrr_chunk_size
e820 update range: 00000000ab000000 - 0000000100000000 (usable) ==>
(reserved)
last_pfn = 0xaaffd max_arch_pfn = 0x400000000
initial memory mapped : 0 - 20000000
init_memory_mapping: 0000000000000000-00000000aaffd000
 0000000000 - 00aae00000 page 2M
 00aae00000 - 00aaffd000 page 4k
kernel direct mapping tables up to aaffd000 @ 10000-15000
init_memory_mapping: 0000000100000000-000000044f800000
 0100000000 - 044f800000 page 2M
kernel direct mapping tables up to 44f800000 @ 13000-26000

My Laptop currently has 16GB of RAM and 8GB of swap as indicated below

$ cat /proc/meminfo
MemTotal:       16235284 kB
MemFree:        15024984 kB
Buffers:           28128 kB
Cached:           412944 kB
SwapCached:       134284 kB
Active:           404240 kB
Inactive:         440124 kB
Active(anon):     224792 kB
Inactive(anon):   230964 kB
Active(file):     179448 kB
Inactive(file):   209160 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       8388600 kB
SwapFree:        7555824 kB
Dirty:                 8 kB
Writeback:             0 kB
AnonPages:        291668 kB
Mapped:            45216 kB
Shmem:             52452 kB
Slab:             120600 kB
SReclaimable:      32100 kB
SUnreclaim:        88500 kB
KernelStack:        4344 kB
PageTables:        35824 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    16506240 kB
Committed_AS:    3714116 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      393260 kB
VmallocChunk:   34359332704 kB
HardwareCorrupted:     0 kB
AnonHugePages:    165888 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       10228 kB
DirectMap2M:    16676864 kB

$ cat /proc/swaps
Filename                Type        Size    Used    Priority
/dev/dm-0                               partition    8388600    832688    -1

The laptop is running the latest updates and kernel
$ uname -r
2.6.32-279.11.1.el6.x86_64

I saw that this was a bug from Fedora 14 and CentOS as well, however it
does not appear to be resolved.
https://bugzilla.redhat.com/show_bug.cgi?id=584493
http://bugs.centos.org/view.php?id=5659


At random times my laptop will just lock up and I will have to power cycle
it, I don't know if this is related. I had CentOS 5.8 installed for over a
week and I did not experience this behaviour.

Do I need file this as a new bug or is there a solution for this?


-- 
Kind Regards
Earl Ramirez