Angel Pons has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/47680 )
Change subject: nb/intel/sandybridge: Restore nominal Vref for current channel ......................................................................
nb/intel/sandybridge: Restore nominal Vref for current channel
After aggressive read training, program nominal Vref for the current channel, not only channel 0. This simple mistake can easily degrade memory margins, especially when running at high speed (overclocking).
Tested on Asus P8H61-M PRO, still boots.
Change-Id: I12630fe33c5c786c8ec131c45c27180c3887d354 Signed-off-by: Angel Pons th3fanbus@gmail.com --- M src/northbridge/intel/sandybridge/raminit_common.c 1 file changed, 2 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/80/47680/1
diff --git a/src/northbridge/intel/sandybridge/raminit_common.c b/src/northbridge/intel/sandybridge/raminit_common.c index d60271b..7e93786 100644 --- a/src/northbridge/intel/sandybridge/raminit_common.c +++ b/src/northbridge/intel/sandybridge/raminit_common.c @@ -2368,7 +2368,8 @@ } }
- MCHBAR32(GDCRTRAININGMOD_ch(0)) = 0; + /* Restore nominal Vref after training */ + MCHBAR32(GDCRTRAININGMOD_ch(channel)) = 0; printram("CPA\n"); return 0; }