diff options
author | Andrew Geissler <andrewg@us.ibm.com> | 2017-06-08 15:36:09 -0500 |
---|---|---|
committer | Andrew Geissler <andrewg@us.ibm.com> | 2017-06-09 08:28:06 -0500 |
commit | 16e099a76314a8de8e89c31a87232226551bd09d (patch) | |
tree | cfb922ce72c4a96ebb6f605214a5098e6f26be55 /procedures/p9/vcs_workaround.cpp | |
parent | 2548c7a35ab2ac8d8d73b8b8f5145d64f248ebe1 (diff) | |
download | openpower-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.cpp | 12 |
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())); |