xref: /openbmc/openpower-debug-collector/watchdog/watchdog_logging.cpp (revision a9779c40d874d6a1a26921a87658ca40ebe9c1ac)
11ac6162dSShantappa Teekappanavar #include <unistd.h>
21ac6162dSShantappa Teekappanavar 
3b64983f0SShantappa Teekappanavar #include <phosphor-logging/log.hpp>
4a1ea5e5fSShantappa Teekappanavar #include <watchdog_common.hpp>
51ac6162dSShantappa Teekappanavar #include <watchdog_dbus.hpp>
61ac6162dSShantappa Teekappanavar #include <watchdog_handler.hpp>
71ac6162dSShantappa Teekappanavar #include <watchdog_logging.hpp>
81ac6162dSShantappa Teekappanavar 
91ac6162dSShantappa Teekappanavar namespace watchdog
101ac6162dSShantappa Teekappanavar {
111ac6162dSShantappa Teekappanavar namespace dump
121ac6162dSShantappa Teekappanavar {
131ac6162dSShantappa Teekappanavar 
141ac6162dSShantappa Teekappanavar /**
151ac6162dSShantappa Teekappanavar  * @brief Log an event handled by the dump handler
161ac6162dSShantappa Teekappanavar  *
171ac6162dSShantappa Teekappanavar  * @param additional - Additional PEL data
181ac6162dSShantappa Teekappanavar  * @param timeout - timeout interval in seconds
191ac6162dSShantappa Teekappanavar  */
event(std::map<std::string,std::string> & additional,const uint32_t timeout)201ac6162dSShantappa Teekappanavar void event(std::map<std::string, std::string>& additional,
211ac6162dSShantappa Teekappanavar            const uint32_t timeout)
221ac6162dSShantappa Teekappanavar {
23*4f4e36d3Sdeepakala-k     std::string eventName = "org.open_power.Host.Boot.Error.WatchdogTimedOut";
241ac6162dSShantappa Teekappanavar 
251ac6162dSShantappa Teekappanavar     // CreatePELWithFFDCFiles requires a vector of FFDCTuple.
261ac6162dSShantappa Teekappanavar     auto emptyFfdc = std::vector<FFDCTuple>{};
271ac6162dSShantappa Teekappanavar 
281ac6162dSShantappa Teekappanavar     // Create PEL with additional data.
291ac6162dSShantappa Teekappanavar     auto pelId = createPel(eventName, additional, emptyFfdc);
301ac6162dSShantappa Teekappanavar 
3141d507e5SShantappa Teekappanavar     // Collect Hostboot dump if auto reboot is enabled
3241d507e5SShantappa Teekappanavar     DumpParameters dumpParameters;
3341d507e5SShantappa Teekappanavar     dumpParameters.logId = pelId;
3441d507e5SShantappa Teekappanavar     dumpParameters.unitId = 0; // Not used for Hostboot dump
3541d507e5SShantappa Teekappanavar     dumpParameters.timeout = timeout;
3641d507e5SShantappa Teekappanavar     dumpParameters.dumpType = DumpType::Hostboot;
3741d507e5SShantappa Teekappanavar 
3841d507e5SShantappa Teekappanavar     // will not return until dump is complete or timeout
3941d507e5SShantappa Teekappanavar     requestDump(dumpParameters);
40a1ea5e5fSShantappa Teekappanavar }
411ac6162dSShantappa Teekappanavar 
eventWatchdogTimeout(const uint32_t timeout)421ac6162dSShantappa Teekappanavar void eventWatchdogTimeout(const uint32_t timeout)
431ac6162dSShantappa Teekappanavar {
441ac6162dSShantappa Teekappanavar     // Additional data to be added to PEL object
451ac6162dSShantappa Teekappanavar     // Currently we don't have anything to add
461ac6162dSShantappa Teekappanavar     // Keeping this for now in case if we have to add
471ac6162dSShantappa Teekappanavar     // any data corresponding to watchdog timeout
481ac6162dSShantappa Teekappanavar     std::map<std::string, std::string> additionalData;
491ac6162dSShantappa Teekappanavar     event(additionalData, timeout);
501ac6162dSShantappa Teekappanavar }
511ac6162dSShantappa Teekappanavar 
521ac6162dSShantappa Teekappanavar } // namespace dump
531ac6162dSShantappa Teekappanavar } // namespace watchdog
54