1 #pragma once 2 3 #include <util/ffdc.hpp> 4 5 namespace attn 6 { 7 8 // number of seconds to wait for power fault handling 9 constexpr int POWER_FAULT_WAIT = 10; 10 11 /** @brief Attention handler return codes */ 12 enum ReturnCodes 13 { 14 RC_SUCCESS = 0, 15 RC_NOT_HANDLED = 1, 16 RC_ANALYZER_ERROR = 2, 17 RC_CFAM_ERROR = 3, 18 RC_DBUS_ERROR = 4 19 }; 20 21 /** @brief Code seciton for error reporing */ 22 enum class AttnSection 23 { 24 reserved = 0x0000, 25 attnHandler = 0x0100, 26 tiHandler = 0x0200, 27 handlePhypTi = 0x0300, 28 handleHbTi = 0x0400, 29 addHbStatusRegs = 0x0500, 30 attnLogging = 0x0600 31 }; 32 33 /** @brief Attention handler error reason codes */ 34 enum AttnCodes 35 { 36 ATTN_NO_ERROR = 0, 37 ATTN_INFO_NULL = 1, 38 ATTN_PDBG_CFAM = 2, 39 ATTN_PDBG_SCOM = 3, 40 ATTN_INVALID_KEY = 4 41 }; 42 43 /** 44 * @brief Traces some regs for hostboot 45 * 46 * When we receive a Checkstop or special Attention Term Immediate, 47 * hostboot wants some regs added to the error log. We will do this 48 * by tracing them and then the traces will get added to the error 49 * log later. 50 * 51 * @return nothing 52 */ 53 void addHbStatusRegs(); 54 55 /** @brief Capture some scratch registers for PRD 56 * 57 * Capture some scratch register data that PRD can use to handle 58 * cases where analysis may have been interrupted. The data will 59 * be traced and also written to the user data section of a PEL. 60 * 61 * @param[out] o_files vector of FFDC files 62 * 63 * @return nothing 64 */ 65 void addPrdScratchRegs(std::vector<util::FFDCFile>& o_files); 66 67 /** 68 * @brief Check for recoverable errors present 69 * 70 * @return true if any recoverable errors are present, else false 71 */ 72 bool recoverableErrors(); 73 74 /** 75 * @brief sleep for n-seconds 76 * 77 * @param[in] seconds number of seconds to sleep 78 */ 79 void sleepSeconds(const unsigned int seconds); 80 81 } // namespace attn 82