Patrick Rudolph (siro@das-labor.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/12112
-gerrit
commit 4192a4b35b4a49f57011d06f309ee1e748d32c3a Author: Patrick Rudolph siro@das-labor.org Date: Wed Oct 21 18:05:01 2015 +0200
nb/intel/sandybridge: Fix PEG disablement
Fix regression introduced by: 3660c0fc658e4e20ef079f762dfc7ad05c83544c "northbridge/intel/sandybridge: Enable PEG clock-gating on demand"
Issue observed: GNU/Linux kernel crashes in earlyinit on systems without PEG devices. The crash occurs on every boot in different functions. There's no problem on systems with PEG enabled.
Test system: * Lenovo T530 * Intel Core i5-3320M CPU * Fedora GNU/Linux 4.1 * PEG disabled in devicetree
Problem description: Tests shows that modifing PEG chicken bit or device enable bits after setting BIOS_RESET_CPL causes random crashes in GNU/Linux.
Problem solution: Disable PEG devices before setting BIOS_RESET_CPL.
Final testing results: No more random kernel crashes.
Change-Id: I4a967c2d00d7d1e4426cf5abdd5f616c21557da7 Signed-off-by: Patrick Rudolph siro@das-labor.org --- src/northbridge/intel/sandybridge/northbridge.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/src/northbridge/intel/sandybridge/northbridge.c b/src/northbridge/intel/sandybridge/northbridge.c index 09830de..656a0e8 100644 --- a/src/northbridge/intel/sandybridge/northbridge.c +++ b/src/northbridge/intel/sandybridge/northbridge.c @@ -427,6 +427,11 @@ static void northbridge_init(struct device *dev) } MCHBAR32(0x5f10) = bridge_type;
+ /* Turn off unused devices. Has to be done before + * setting BIOS_RESET_CPL. + */ + disable_peg(); + /* * Set bit 0 of BIOS_RESET_CPL to indicate to the CPU * that BIOS has initialized memory and power management @@ -452,9 +457,6 @@ static void northbridge_init(struct device *dev)
/* Set here before graphics PM init */ MCHBAR32(0x5500) = 0x00100001; - - /* Turn off unused devices */ - disable_peg(); }
static void northbridge_enable(device_t dev)