1 extern "C" { 2 #include <libipl.h> 3 } 4 5 #include "xyz/openbmc_project/Common/error.hpp" 6 7 #include <phosphor-logging/elog-errors.hpp> 8 #include <phosphor-logging/log.hpp> 9 #include <registration.hpp> 10 namespace openpower 11 { 12 namespace phal 13 { 14 15 using namespace phosphor::logging; 16 using namespace sdbusplus::xyz::openbmc_project::Common::Error; 17 18 /** 19 * @brief Starts the self boot engine on POWER processor position 0 20 * to kick off a boot. 21 * @return void 22 */ 23 void startHost() 24 { 25 if (ipl_init() != 0) 26 { 27 log<level::ERR>("ipl_init failed"); 28 // TODO ibm-openbmc#1470 29 elog<InternalFailure>(); 30 } 31 32 if (ipl_run_major(0) > 0) 33 { 34 log<level::ERR>("step 0 failed to start the host"); 35 // TODO ibm-openbmc#1470 36 elog<InternalFailure>(); 37 } 38 } 39 40 REGISTER_PROCEDURE("startHost", startHost); 41 42 } // namespace phal 43 } // namespace openpower 44