Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 12 Nov 2011 12:47:40 +0200
From:      Andriy Gapon <avg@FreeBSD.org>
To:        FreeBSD current <freebsd-current@FreeBSD.org>, Alan Cox <alc@FreeBSD.org>
Subject:   problem with 1GB pages?
Message-ID:  <4EBE4ECC.4060007@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

Introduction.
I have an AMD-based system with a Fam10h CPU (with 1GB pages support), the
system chipset contains an integrated graphics device (that uses a region of the
main memory as a graphics memory).  The chipset supports memory hoisting to
compensate for the PCI memory window and the graphics aperture both of which are
located below 4GB.
The latest OS version installed on this system is 9-CURRENT from the middle of
September (r225560), architecture is amd64.
Until recently the system had 4GB of RAM installed and I had no problems with it
whatsoever.

Recently though I have added another 4GB of RAM to the system.  Before booting
to FreeBSD I tested the memory with multiple passes of memtest86 and
memetest86+, no errors were detected by those.
However with FreeBSD I immediately started getting "flaky memory" symptoms like
multiple internal compiler errors during compilation of non-trivially sized
projects (world, libreoffice).
I re-run memory tests which again revealed nothing and then started playing with
various VM subsystem and memory related knobs in FreeBSD.  I recalled that a
long while ago there were some problems with 1GB pages and so their use used to
be disabled.  On a hunch I disabled 1GB pages again:
@@ -471,7 +471,7 @@ create_pagetables(vm_paddr_t *firstaddr)
                ndmpdp = 4;
        DMPDPphys = allocpages(firstaddr, NDMPML4E);
        ndm1g = 0;
-       if ((amd_feature & AMDID_PAGE1GB) != 0)
+       if (0 && (amd_feature & AMDID_PAGE1GB) != 0)
                ndm1g = ptoa(Maxmem) >> PDPSHIFT;
        if (ndm1g < ndmpdp)
                DMPDphys = allocpages(firstaddr, ndmpdp - ndm1g);

And the flakiness went away.

Not sure what kind of useful information I should provide with this report.
Here's couple of things that I think could be of use.

- memcontrol list output
http://people.freebsd.org/~avg/8gb%2b512mb.memcontrol.list.txt

- BIOS memory map
SMAP type=01 base=0000000000000000 end=000000000009f800 len=000000000009f800
SMAP type=02 base=00000000000f0000 end=0000000000100000 len=0000000000010000
SMAP type=02 base=00000000fec00000 end=0000000100000000 len=0000000001400000
SMAP type=02 base=00000000e0000000 end=00000000f0000000 len=0000000010000000
SMAP type=02 base=000000000009f800 end=00000000000a0000 len=0000000000000800
SMAP type=02 base=00000000afdf0000 end=00000000afe00000 len=0000000000010000
SMAP type=01 base=0000000000100000 end=00000000afde0000 len=00000000afce0000
SMAP type=03 base=00000000afde3000 end=00000000afdf0000 len=000000000000d000
SMAP type=04 base=00000000afde0000 end=00000000afde3000 len=0000000000003000
SMAP type=01 base=0000000100000000 end=0000000230000000 len=0000000130000000

- dmesg snippet
CPU: AMD Athlon(tm) II X2 250 Processor (3013.78-MHz K8-class CPU)
  Origin = "AuthenticAMD"  Id = 0x100f62  Family = 10  Model = 6  Stepping = 2

Features=0x178bfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2,HTT>
  Features2=0x802009<SSE3,MON,CX16,POPCNT>
  AMD Features=0xee500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM,3DNow!+,3DNow!>
  AMD
Features2=0x37ff<LAHF,CMP,SVM,ExtAPIC,CR8,ABM,SSE4A,MAS,Prefetch,OSVW,IBS,SKINIT,WDT>
  TSC: P-state invariant
real memory  = 8589934592 (8192 MB)
avail memory = 7617662976 (7264 MB)

- Top Of Memory MSR
MSR 0xc001001a: 0x00000000 0xd0000000

- Top Of Memory 2 MSR
MSR 0xc001001d: 0x00000002 0x30000000

- System configuration MSR
MSR 0xc0010010: 0x00000000 0x00760600

Please let me know if you have any ideas or requests for additional information
or testing.
Thank you.
-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4EBE4ECC.4060007>