nb/amd/mct_ddr3: Restart system on training failure instead of using die()

DIMM training can sporadically fail due to external influences or various
errata.  In these cases, restarting to retry training is a more appropriate
response than halting the system and requiring manual intervention.

Change-Id: Id49f7419f56e0640a84448cc06ecbaf62bed145e
Signed-off-by: Timothy Pearson <tpearson@raptorengineeringinc.com>
Reviewed-on: https://review.coreboot.org/14529
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
Timothy Pearson 2016-04-27 12:46:57 -05:00
parent 8f407f695e
commit 09e3bfbd8b
1 changed files with 4 additions and 1 deletions

View File

@ -32,6 +32,8 @@
* supported. * supported.
*/ */
#include <reset.h>
// #define DEBUG_DIMM_SPD 1 // #define DEBUG_DIMM_SPD 1
static u8 ReconfigureDIMMspare_D(struct MCTStatStruc *pMCTstat, static u8 ReconfigureDIMMspare_D(struct MCTStatStruc *pMCTstat,
@ -3685,7 +3687,8 @@ retry_dqs_training_and_levelization:
if (pDCTstat->NodePresent) { if (pDCTstat->NodePresent) {
if (pDCTstat->TrainErrors & (1 << SB_FatalError)) { if (pDCTstat->TrainErrors & (1 << SB_FatalError)) {
die("DIMM training FAILED! Halting system."); printk(BIOS_ERR, "DIMM training FAILED! Restarting system...");
soft_reset();
} }
if (pDCTstat->TrainErrors & (1 << SB_RetryConfigTrain)) { if (pDCTstat->TrainErrors & (1 << SB_RetryConfigTrain)) {
retry_requested = 1; retry_requested = 1;