| #include "extensions/phal/common_utils.hpp" |
| #include "extensions/phal/phal_error.hpp" |
| #include "registration.hpp" |
| |
| #include <libekb.H> |
| |
| #include <phosphor-logging/log.hpp> |
| |
| namespace openpower |
| { |
| namespace phal |
| { |
| |
| using namespace phosphor::logging; |
| |
| void prePoweroff(void) |
| { |
| try |
| { |
| phal_init(); |
| } |
| catch (const std::exception& ex) |
| { |
| log<level::ERR>("Exception raised during init PHAL", |
| entry("EXCEPTION=%s", ex.what())); |
| openpower::pel::detail::processBootError(false); |
| // Dont throw exception on failure because, we need to proceed |
| // further eventhough there is failure for proc-pre-poweroff |
| return; |
| } |
| |
| // To clear trace if success |
| openpower::pel::detail::processBootError(true); |
| |
| // callback method will be called upon failure which will create the PEL |
| int rc = ipl_pre_poweroff(); |
| if (rc) |
| { |
| log<level::ERR>("pre_poweroff failed"); |
| // Dont throw exception on failure because, we need to proceed |
| // further eventhough there is failure for proc-pre-poweroff |
| return; |
| } |
| } |
| |
| REGISTER_PROCEDURE("prePoweroff", prePoweroff) |
| |
| } // namespace phal |
| } // namespace openpower |