Increase power down wait on factory reset

Testing has shows that the chassisoff operation can take up to 10
seconds. If the BMC is rebooted before the chassis power is fully off
then unexpected errors can get logged on the subsequent BMC reboot
because it sees power is on, but all of the needed cached data is gone
due to the factory reset.

Since this is in essence a one way command (the host is issuing a
command that results in the host being powered down) the BMC does not
need to adhere to the standard 5 second IPMI timeout limit.

There are more optimal ways to do this but due to the very limited use
this command gets, a hard coded sleep time is fine.

Tested:
George took an image with this fix and did multiple inband factory reset
commands and verified no issues were found

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: I58f97106fe763427ae8e7e75093e344dcc151b5b
1 file changed
tree: 529e19d73575a19f2f3d365aa0d7b0b9b39f420a
  1. org/
  2. scripts/
  3. .clang-format
  4. .gitignore
  5. bootstrap.sh
  6. configure.ac
  7. elog-errors.hpp
  8. host-interface.cpp
  9. host-interface.hpp
  10. LICENSE
  11. MAINTAINERS
  12. Makefile.am
  13. oemhandler.cpp
  14. oemhandler.hpp
  15. README.md
README.md

This .so file is designed to support the OpenPOWER's BIOS OEM commands. Documentation can be found by contacting the OpenPOWER mailing list @ https://github.com/open-power/op-build

To Build

To build this package, do the following steps:

    1. ./bootstrap.sh
    2. ./configure ${CONFIGURE_FLAGS}
    3. make

To clean the repository run `./bootstrap.sh clean`.

Supported Commands

  • Partial Add
  • Prepare for host update
  • BMC Factory Reset

Command Documentation

BMC Factory Reset

Netfun: 0x3a Command: 0x11

This command will call to reset the BMC to its factory default. See here for the factory reset implementation details.

This includes:

  1. Power the chassis off. The host needs to be powered off because the factory reset deletes the inventory items, which are needed for the BMC during the power on path, causing the power on to fail. The inventory items are repopulated during a host power on. An enhancement to OpenBMC would be to handle missing inventory items during a BMC reboot when the host is on.
  2. Set the BMC to perform factory reset on reboot.
  3. Reboot the BMC for the factory reset to take effect.

Because the chassis is powered off, the host does not receive a return code when successful.

This command is not allowed when the IPMI restriction mode is set to 'Whitelist'. See here for more information.