[coreboot] More details about ram issues

Patrick Rudolph siro at das-labor.org
Fri Nov 11 17:12:13 CET 2016

Am Fri, 11 Nov 2016 13:53:16 +0100
schrieb Nico Huber <nico.h at gmx.de>:

> Hi Charlotte,
> On 11.11.2016 08:14, Charlotte Plusplus wrote:
> > So I did many more tests today (more than 6h, and flashing around 30
> > times), with SPD settings hardcoded into raminit, and without the
> > mrc cache interfering.  
> thanks for the analysis and summing this up.
> > 
> > TLDR: coreboot tries to increase the frequency without increasing
> > the voltage, and that doesn't work for all memory.
> > 
> > Basically, with the problematic ram sticks, I can boot perfectly
> > fine at DDR3-1866 speed, but even the slower setting 11-11-11-31
> > gives errors on the memtest. This is inconsistent with information
> > I found about my memory from its SPD information, and from other
> > people who overclock this exact same memory.
> > 
> > Even at 10-10-10-27, I still get errors at DDR3-1600 speeds. Far
> > fewer than before, but some errors sill.
> > 
> > After reading more about XMP and SPD, it is my understanding that :
> >  - JEDEC specs stop at 1600, and after that XMP is required
> >  - even before 1600, XMP also offers profiles, and they are not
> > optional: some memory is otherwise unable to work at its advertised
> > speed  
> This would mean the memory is just broken. But that's what I suspect
> of any memory that's supposed to run out of spec.
Yes XMP is required to run "out of spec". That's why all Intel
Processors only advertise DDR3-1600 as maximum frequency on Intel's
XMP is optional.
I don't think that XMP is the problem. My guess is that raminit doesn't
set all required registers to fine tune the memory controller to get it
> >  - XMP profiles are some kind of overclocking: they usually require
> > adjusting the voltage, to deal with this increased speed  
> Not kind of overclocking, simply overclocking. There's only one
> voltage specified for DDR3, IIRC.
> >  - in XMP profile bytes, voltage increase information is given
> > precisely
> >  - nowhere in the code I saw anything increasing the voltage, while
> > XMP requires that
> > 
> > I conclude that while there may be errors in selecting the SPD
> > settings, even if the SPD is manually corrected with known-good
> > settings, or if overshooting with very generous latencies, some
> > errors do remain as the ram is being asked to operate outside its
> > voltage specifications (given the frequency)
> > 
> > 1.5V is a JEDEC spec, but RAM is advertised based on the information
> > contained in the XMP profiles, which at the moment do not seem fully
> > supported.  
> JEDEC is the standard. If the XMP support is half-baked it should be
> disabled by default. Maybe we should even put a warning in the log if
> we encounter an XMP profile with anything else than 1.5V (if it's
> common that those DIMMs are broken ex factory).
Yes, we could add a warning that XMP profile will be used.
I personly never had problems with it.
> > 
> > I do not know how to adjust the voltage (it should require talking
> > to the IMC of the CPU)  but I think that as soon as this is done,
> > stability should improve.
> > 
> > If someone can propose a patch doing that (either using the voltage
> > read from SPD, or by manually entering voltage information), I will
> > be happy to test it.  
> Depending on the board the voltage might not be configurable at all.
> Why should it be if there is only one voltage defined in the standard?
The W520 does only have 1.5V DDR voltage. If it's stable with vendor
bios, it's not a DDR voltage problem at all.
> > 
> > For now, I urge caution when operating even at DDR-1866
> > frequencies. Most boards do set up 933 as their max_mem_clock_mhz.
> > It is not very prudent to do that until the voltage situation can
> > be solved.  
> If the board can work at that frequency, that's just fine. If the
> voltage is a problem, it's due to the memory module. IMHO, the rule
> should be to ignore SPD frequency settings that include an out of spec
> voltage.
That's what sandybridge raminit does. Only XMP profiles with DDR
voltage of 1.5V are used. Profiles that do have other voltage
setting are ignored.

> If you want to do further testing, you can try to find out which com-
> binations of processor and DIMMs work with the Vendor BIOS or the MRC
> blob (I wouldn't expect that it supports non-JEDEC stuff, but it would
> be nice to know if something can be fixed in coreboot easily).
> Nico

More information about the coreboot mailing list