Enabled pHAL infrastructure to boot the host
IPL (libipl) used for executing hardware procedures
to initilize the power processor based host.
Tested by:
1. ./configure
2. ./configure --enable-phal --enable-openfsi
Change-Id: I57ff64595a757041ee60ccb420092975b064462d
Signed-off-by: Ramesh Iyyar <rameshi1@in.ibm.com>
diff --git a/procedures/phal/start_host.cpp b/procedures/phal/start_host.cpp
new file mode 100644
index 0000000..c828309
--- /dev/null
+++ b/procedures/phal/start_host.cpp
@@ -0,0 +1,43 @@
+extern "C" {
+#include <libipl.h>
+}
+
+#include "xyz/openbmc_project/Common/error.hpp"
+
+#include <phosphor-logging/elog-errors.hpp>
+#include <phosphor-logging/log.hpp>
+#include <registration.hpp>
+namespace openpower
+{
+namespace phal
+{
+
+using namespace phosphor::logging;
+using namespace sdbusplus::xyz::openbmc_project::Common::Error;
+
+/**
+ * @brief Starts the self boot engine on POWER processor position 0
+ * to kick off a boot.
+ * @return void
+ */
+void startHost()
+{
+ if (ipl_init() != 0)
+ {
+ log<level::ERR>("ipl_init failed");
+ // TODO ibm-openbmc#1470
+ elog<InternalFailure>();
+ }
+
+ if (ipl_run_major(0) > 0)
+ {
+ log<level::ERR>("step 0 failed to start the host");
+ // TODO ibm-openbmc#1470
+ elog<InternalFailure>();
+ }
+}
+
+REGISTER_PROCEDURE("startHost", startHost);
+
+} // namespace phal
+} // namespace openpower