Support for hardware dump collection from OCMB
This commit introduces the capability to collect hardware dumps from
Odyssey-based OCMB chips in addition to existing processor dump.
This commit addresses the need for additional failure data across
both processors and their associated OCMB chips.
Key changes include:
- Enabled hardware dump collection specifically for Odyssey OCMB chips.
- Optimized the collection process to occur only when the chip clock
is on to minimize overall dump collection time.
- Sequential dump collection from OCMB chips associated with each
processor.
Change-Id: Iea70912f9fef9c337ba5ca7c508728586be25af8
Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
diff --git a/dump/sbe_dump_collector.hpp b/dump/sbe_dump_collector.hpp
index 55147a9..d4cbc58 100644
--- a/dump/sbe_dump_collector.hpp
+++ b/dump/sbe_dump_collector.hpp
@@ -20,6 +20,9 @@
namespace openpower::dump::sbe_chipop
{
+using TargetMap =
+ std::map<struct pdbg_target*, std::vector<struct pdbg_target*>>;
+
/**
* @class SbeDumpCollector
* @brief Manages the collection of dumps from SBEs on failure.
@@ -105,9 +108,9 @@
* @param cstate The clock state during the dump collection. This parameter
* dictates whether the dump should be collected with the
* clocks running (SBE_CLOCK_ON) or with the clocks stopped (SBE_CLOCK_OFF).
- * @param targets A vector of `pdbg_target*` representing the targets from
- * which dumps should be collected. Each target corresponds to a physical or
- * logical component in the system, such as a processor or an SBE.
+ * @param targetMap A map of `pdbg_target*` representing the targets from
+ * which dumps should be collected. The key is the proc target with the
+ * list of ocmb targets associated with the proc.
*
* @return A vector of `std::future<void>` objects. Each future represents
* the completion state of an asynchronous dump collection task. The caller
@@ -118,8 +121,7 @@
*/
std::vector<std::future<void>> spawnDumpCollectionProcesses(
uint8_t type, uint32_t id, const std::filesystem::path& path,
- uint64_t failingUnit, uint8_t cstate,
- const std::vector<struct pdbg_target*>& targets);
+ uint64_t failingUnit, uint8_t cstate, const TargetMap& targetMap);
/** @brief This function creates the new dump file in dump file name
* format and then writes the contents into it.
@@ -188,6 +190,10 @@
*/
inline SBETypes getSBEType([[maybe_unused]] struct pdbg_target* chip)
{
+ if (is_ody_ocmb_chip(chip))
+ {
+ return SBETypes::OCMB;
+ }
return SBETypes::PROC;
}