Update DSTL_FIR callouts in the event of failure to analyze an OCMB

Change-Id: I40c17703ad032aa98f02b43d9cb321b7fc86fea3
Signed-off-by: Caleb Palmer <cnpalmer@us.ibm.com>
diff --git a/analyzer/filter-root-cause.cpp b/analyzer/filter-root-cause.cpp
index 1a594b7..accf275 100644
--- a/analyzer/filter-root-cause.cpp
+++ b/analyzer/filter-root-cause.cpp
@@ -377,6 +377,37 @@
 
 //------------------------------------------------------------------------------
 
+bool __findOcmbAttnBits(const std::vector<libhei::Signature>& i_list,
+                        libhei::Signature& o_rootCause,
+                        const RasDataParser& i_rasData)
+{
+    using namespace util::pdbg;
+
+    // If we have any attentions from an OCMB, assume isolation to the OCMBs
+    // was successful and the ATTN_FROM_OCMB flag does not need to be checked.
+    for (const auto s : i_list)
+    {
+        if (TYPE_OCMB == getTrgtType(getTrgt(s.getChip())))
+        {
+            return false;
+        }
+    }
+
+    for (const auto s : i_list)
+    {
+        if (1 < i_rasData.getVersion(s) &&
+            i_rasData.isFlagSet(s, RasDataParser::RasDataFlags::ATTN_FROM_OCMB))
+        {
+            o_rootCause = s;
+            return true;
+        }
+    }
+
+    return false; // default, nothing found
+}
+
+//------------------------------------------------------------------------------
+
 bool __findNonExternalCs(const std::vector<libhei::Signature>& i_list,
                          libhei::Signature& o_rootCause)
 {
@@ -834,6 +865,14 @@
         return true;
     }
 
+    // Version 2 of the RAS data files. If no other viable root cause has
+    // been found, check for any signatures with the ATTN_FROM_OCMB flag in
+    // case there was an attention from an inaccessible OCMB.
+    if (__findOcmbAttnBits(list, o_rootCause, i_rasData))
+    {
+        return true;
+    }
+
     // Look for any system checkstop attentions that originated from within the
     // chip that reported the attention. In other words, no external checkstop
     // attentions.