Hi,

We have chassis power policy that users configure so that the Host power can be recovered via the setting. In phosphor-state-manager, there is phosphor-discover-system-state@.service service to check the power restore policy and recover the Host via the policy users configured (always-on, always-off, previous). The problem is that when BMC is rebooted, the service should not be executed as Host power status should not be changed in this case.

Previously, we added a patch in u-boot to add reboot cause to the command line, like:

# cat /proc/cmdline
console=ttyS4,115200n8 root=/dev/ram rw resetreason=power

Then, add condition to the service to just execute when resetreason=power:

[Unit]
ConditionKernelCommandLine=resetreason=power

as now no u-boot patch inside meta-<vendor> is permitted, this approach is no longer applicable.

Since the BMC reboot cause feature by Tim Lee at https://github.com/openbmc/phosphor-state-manager/commit/2bfb1efc4bc7e781224e19c05b51e6675f13a488 and with the watchdog driver support, we have the reset cause information via both dbus and kernel /sys:

# cat /sys/class/watchdog/watchdog0/bootstatus
32

# busctl get-property xyz.openbmc_project.State.BMC /xyz/openbmc_project/state/bmc0 xyz.openbmc_project.State.BMC LastRebootCause

s "xyz.openbmc_project.State.BMC.RebootCause.POR"

I would like to check if you have any idea on how to use the above information to prevent the power restore policy executed in case of BMC reboot.


Thanks,

Thang Q. Nguyen