blob: 3b2e8a0b0051f34c77a7ca6a77ae36a62c43622e [file] [log] [blame]
#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