problem with 1GB pages?
alc at rice.edu
Mon Nov 14 17:01:55 UTC 2011
On 11/14/2011 03:19, Andriy Gapon wrote:
> Please disregard my report.
> I've tracked the problem to one of the new modules being faulty. But memtest86*
> tools still don't detect any issues with it. Apparently FreeBSD is a much more
> thorough memory tester than the specialized tools :-)
> Apologies for the noise.
Interesting, nonetheless. I would have never guessed that disabling 1
GB pages would mask a problem due to faulty memory.
> on 12/11/2011 12:47 Andriy Gapon said the following:
>> 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
>> 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
>> - 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
>> AMD Features=0xee500800<SYSCALL,NX,MMX+,FFXSR,Page1GB,RDTSCP,LM,3DNow!+,3DNow!>
>> 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.
More information about the freebsd-current