Skip to content

Commit

Permalink
Enabled pHAL infrastructure to boot the host
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
RameshIyyar committed Dec 11, 2019
1 parent 6230b0d commit b181d3b
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 0 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,10 @@ To build this package, do the following steps:
2. ./configure ${CONFIGURE_FLAGS}
3. make
To build with phal feature:
1. ./bootstrap.sh
2. ./configure ${CONFIGURE_FLAGS} --enable-phal --enable-openfsi
3. make
To clean the repository run `./bootstrap.sh clean`.
```
22 changes: 22 additions & 0 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,28 @@ AS_IF([test "$enable_p9" == "yes"], [CHIPS+=" p9"])
AC_ARG_ENABLE([openfsi], AS_HELP_STRING([--enable-openfsi], [Support Openfsi]))
AS_IF([test "$enable_openfsi" == "yes"], [CHIPS+=" openfsi"])

AC_ARG_ENABLE([phal], AS_HELP_STRING([--enable-phal], [Use host processor initialisation procedures from PHAL])])

AS_IF([ test "$enable_phal" == "yes" && test "$enable_p9" == "yes"],
[ AC_MSG_ERROR([Internal POWER9 and PHAL-provided procedures conflict, please configure only one])]
)

AS_IF([test "$enable_phal" == "yes"],
[
AX_ABSOLUTE_HEADER([libipl.h])
if test x"$gl_cv_absolute_libipl_h" == "x" ; then
AC_MSG_ERROR([Cannot find libipl.h path])
fi
AC_CHECK_LIB([ipl], [ipl_init])
if test x"$ac_cv_lib_ipl_ipl_init" != "xyes" ; then
AC_MSG_ERROR([IPL library not found])
fi
CHIPS+=" phal"
]
)

AS_IF([test "x$CHIPS" == "x"], [CHIPS="p9 openfsi"])

AC_CONFIG_FILES([Makefile.generated],
Expand Down
6 changes: 6 additions & 0 deletions proc_control.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,12 @@ int main(int argc, char** argv)
commit<fsi_error::SlaveDetectionFailure>();
return -1;
}
// TODO ibm-openbmc#1470
catch (common_error::InternalFailure& e)
{
commit<common_error::InternalFailure>();
return -1;
}

return 0;
}
43 changes: 43 additions & 0 deletions procedures/phal/start_host.cpp
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit b181d3b

Please sign in to comment.