mb/ocp/monolake: Fix booting issues
We experienced booting issues during FSP-M phase. Applying fix that was
introduced for wedge100s - 817994c1be
(mb/ocp/wedge100s/romstage:
Workaround broken platform state) - helped and systems started to
boot properly.
Signed-off-by: Lukasz Siudut <lsiudut@fb.com>
Change-Id: Ibfbe9d19c7413098c56d1b6131640097fdf731ab
Reviewed-on: https://review.coreboot.org/c/31435
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
This commit is contained in:
committed by
Patrick Georgi
parent
4185de5ff7
commit
180ac500fc
@@ -17,6 +17,9 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <soc/romstage.h>
|
#include <soc/romstage.h>
|
||||||
#include <drivers/intel/fsp1_0/fsp_util.h>
|
#include <drivers/intel/fsp1_0/fsp_util.h>
|
||||||
|
#include <cpu/x86/msr.h>
|
||||||
|
#include <cf9_reset.h>
|
||||||
|
#include <console/console.h>
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* /brief mainboard call for setup that needs to be done before fsp init
|
* /brief mainboard call for setup that needs to be done before fsp init
|
||||||
@@ -24,7 +27,20 @@
|
|||||||
*/
|
*/
|
||||||
void early_mainboard_romstage_entry(void)
|
void early_mainboard_romstage_entry(void)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Sometimes the system boots in an invalid state, where random values
|
||||||
|
* have been written to MSRs and then the MSRs are locked.
|
||||||
|
* Seems to always happen on warm reset.
|
||||||
|
*
|
||||||
|
* Power cycling or a board_reset() isn't sufficient in this case, so
|
||||||
|
* issue a full_reset() to "fix" this issue.
|
||||||
|
*/
|
||||||
|
msr_t msr = rdmsr(IA32_FEATURE_CONTROL);
|
||||||
|
if (msr.lo & 1) {
|
||||||
|
console_init();
|
||||||
|
printk(BIOS_EMERG, "Detected broken platform state. Issuing full reset\n");
|
||||||
|
full_reset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user