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 Teekappanavarvoid 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 Teekappanavarvoid 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