| #include <attn/attention.hpp> |
| #include <attn/attn_common.hpp> |
| #include <attn/attn_dump.hpp> |
| #include <attn/attn_logging.hpp> |
| #include <sdbusplus/bus.hpp> |
| #include <util/dbus.hpp> |
| #include <util/trace.hpp> |
| |
| namespace attn |
| { |
| |
| /** |
| * @brief Handle SBE vital attention |
| * |
| * @param i_attention Attention object |
| * @return 0 indicates that the vital attention was successfully handled |
| * 1 indicates that the vital attention was NOT successfully handled |
| */ |
| int handleVital(Attention* i_attention) |
| { |
| int rc = RC_SUCCESS; // assume vital handled |
| |
| trace::inf("vital handler started"); |
| |
| // if vital handling enabled, handle vital attention |
| if (false == (i_attention->getConfig()->getFlag(enVital))) |
| { |
| trace::inf("vital handling disabled"); |
| rc = RC_NOT_HANDLED; |
| } |
| else |
| { |
| // wait for power fault handling before starting analyses |
| sleepSeconds(POWER_FAULT_WAIT); |
| |
| // generate pel |
| auto pelId = eventVital(); |
| |
| // conditionally request dump |
| if ((0 != pelId) && (util::dbus::HostRunningState::NotStarted == |
| util::dbus::hostRunningState())) |
| { |
| requestDump(pelId, DumpParameters{0, DumpType::SBE}); |
| } |
| |
| // transition host |
| util::dbus::transitionHost(util::dbus::HostState::Quiesce); |
| } |
| |
| return rc; |
| } |
| |
| } // namespace attn |