summaryrefslogtreecommitdiffstats
path: root/procedures/p9/vcs_workaround.cpp
diff options
context:
space:
mode:
authorAndrew Geissler <andrewg@us.ibm.com>2017-06-08 15:36:09 -0500
committerAndrew Geissler <andrewg@us.ibm.com>2017-06-09 08:28:06 -0500
commit16e099a76314a8de8e89c31a87232226551bd09d (patch)
treecfb922ce72c4a96ebb6f605214a5098e6f26be55 /procedures/p9/vcs_workaround.cpp
parent2548c7a35ab2ac8d8d73b8b8f5145d64f248ebe1 (diff)
downloadopenpower-proc-control-16e099a76314a8de8e89c31a87232226551bd09d.tar.gz
openpower-proc-control-16e099a76314a8de8e89c31a87232226551bd09d.zip
Don't run vcs workaround on non-dd10 chips
The VCS workaround is only required (and only make sense) on P9 DD1.0 based systems. This code does a check of the chip level and does not run the workaround if the chip is not DD1.0. The code will continue to run some of the other workarounds because although not required for non-dd10 chips, they do no harm. Resolves openbmc/openbmc#1695 Change-Id: I1409ca359ccff7b78a186211e4cd447cd753eda7 Signed-off-by: Andrew Geissler <andrewg@us.ibm.com>
Diffstat (limited to 'procedures/p9/vcs_workaround.cpp')
-rw-r--r--procedures/p9/vcs_workaround.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/procedures/p9/vcs_workaround.cpp b/procedures/p9/vcs_workaround.cpp
index 07e7fd0..1cb51b5 100644
--- a/procedures/p9/vcs_workaround.cpp
+++ b/procedures/p9/vcs_workaround.cpp
@@ -39,6 +39,18 @@ void vcsWorkaround()
Targeting targets;
const auto& master = *(targets.begin());
+ // First determine if we need to run this workaround (not needed on chips
+ // which are not DD1.0)
+ // Mixing DD1.0 parts with other levels is not allowed so just look
+ // at the first chip
+ auto chipID = readReg(master, P9_FSI2PIB_CHIPID);
+ if (chipID != P9_DD10_CHIPID)
+ {
+ log<level::INFO>("P9 procedure vcsWorkaround not needed",
+ entry("CHIPID=0x%08X", chipID));
+ return;
+ }
+
log<level::INFO>("Running P9 procedure vcsWorkaround",
entry("NUM_PROCS=%d", targets.size()));
OpenPOWER on IntegriCloud