commit | 7d4aaacad1061b161256edb6063d80b028854bf9 | [log] [tgz] |
---|---|---|
author | Jason M. Bills <jason.m.bills@linux.intel.com> | Thu Sep 19 14:03:44 2019 -0700 |
committer | Jason Bills <jason.m.bills@linux.intel.com> | Mon Nov 25 19:31:26 2019 +0000 |
tree | fb5f9ec950d0f95c67d3424381334218be189285 | |
parent | 94ce8ebd53cc116742733c4c9f034b4817e2a26d [diff] |
Manage the RestartCause property from power-control There were race-conditions when setting the RestartCause from outside of power-control. This change has power-control manage the RestartCause property directly so it can handle the race- conditions. The race-conditions are resolved by adding a RestartCauseRequest property that can be set by external modules to request a restart cause value. All requested restart causes are maintained in a set. When the host powers-off, the set of restart causes is checked and the highest priority cause is set as the RestartCause. When the host powers-on, the set of restart causes is cleared for the next set of causes to be recorded. Tested: Triggered a watchdog and confirmed that the request was added to the set and that based on priority, watchdog was set as the RestartCause when the system restarted. Triggered a software, command, button, and power restore restart types and confirmed that the restart cause was correctly reported. Change-Id: If968d434ec3d827e82e033bd528acaa88f625d1e Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
This repository contains an OpenBMC compliant implementation of power control for x86 servers. It relies on a number of features to do its job. It has several intentional design goals.
At this point in time, this daemon targets Lewisburg based, dual socket x86 server platforms, such as S2600WFT. It is likely that other platforms will work as well.
Because this relies on the hardware passthrough support in the AST2500 to function, it requires a few patches to work correctly.
This patch adds support to UBOOT to keep the passthrough enabled https://github.com/Intel-BMC/openbmc/blob/intel/meta-openbmc-mods/meta-common/ recipes-bsp/u-boot/files/0005-enable-passthrough-in-uboot.patch
The DTS file for your platform will need the following GPIO definitions RESET_BUTTON RESET_OUT POWER_BUTTON POWER_OUT
On an aspeed, these are generally connected to E0, E1, E2, and E3 respecitvely. An example of this is available in the s2600WF config.
This patch allows the passthrough to be reenabled to the default condition when the appropriate pin is released. This allows power control to take control when needed by a user power action, but leave the hardware in control a majority of the time, reducing the possibilty of bricking a system due to a failed BMC.
https://github.com/Intel-BMC/openbmc/blob/intel/meta-openbmc-mods/meta-ast2500/recipes-kernel/linux/linux-aspeed/0002-Enable-pass-through-on-GPIOE1-and-GPIOE3-free.patch https://github.com/Intel-BMC/openbmc/blob/intel/meta-openbmc-mods/meta-ast2500/recipes-kernel/linux/linux-aspeed/0003-Enable-GPIOE0-and-GPIOE2-pass-through-by-default.patch https://github.com/Intel-BMC/openbmc/blob/intel/meta-openbmc-mods/meta-ast2500/recipes-kernel/linux/linux-aspeed/0006-Allow-monitoring-of-power-control-input-GPIOs.patch
Caveats: This implementation does not currently implement the common targets that other implementations do. There were several attempts to, but all ended in timing issues and boot inconsistencies during stress operations.