Add root cause filtering for RDF_FIR bit 16 and 41
RDF_FIR bit 41 can cause bit 16 as a side effect,
therefore, this adds some special filtering to
blame bit 41 if both bits are found set.
Change-Id: I4f3bf4f12315923ac810e404a1066d4d09c7525f
Signed-off-by: Caleb Palmer <cnpalmer@us.ibm.com>
diff --git a/analyzer/filter-root-cause.cpp b/analyzer/filter-root-cause.cpp
index 5c4edf9..21537c0 100644
--- a/analyzer/filter-root-cause.cpp
+++ b/analyzer/filter-root-cause.cpp
@@ -809,6 +809,23 @@
}
}
}
+
+ // Odyssey RDF_FIR
+ static const auto rdf_fir = __hash("RDF_FIR");
+
+ // RDF_FIR[41] can be the root cause of RDF_FIR[16], so if bit 16 is on,
+ // check if bit 41 is also on.
+ if (rdf_fir == o_rootCause.getId() && 16 == o_rootCause.getBit())
+ {
+ // Look for RDF_FIR[41]
+ auto itr = std::find_if(list.begin(), list.end(), [&](const auto& t) {
+ return (rdf_fir == t.getId() && 41 == t.getBit());
+ });
+ if (list.end() != itr)
+ {
+ o_rootCause = *itr;
+ }
+ }
}
//------------------------------------------------------------------------------