xref: /openbmc/x86-power-control/README.md (revision f61ca6fd)
1# X86 power control
2
3This repository contains an OpenBMC compliant implementation of power control
4for x86 servers.  It relies on a number of features to do its job.  It has
5several intentional design goals.
61. The BMC should maintain the Host state machine internally, and be able to
7   track state changes.
82. The implementation should either give the requested power control result, or
9   should log an error on the failure it detected.
103. The BMC should support all the common operations, hard power on/off/cycle,
11   soft power on/off/cycle.
12
13At this point in time, this daemon targets Lewisburg based, dual socket x86
14server platforms, such as S2600WFT.  It is likely that other platforms will work
15as well.
16
17Because this relies on the hardware passthrough support in the AST2500 to
18function, it requires a few patches to work correctly.
19
20This patch adds support to UBOOT to keep the passthrough enabled
21https://github.com/Intel-BMC/openbmc/blob/intel/meta-openbmc-mods/meta-common/
22recipes-bsp/u-boot/files/0005-enable-passthrough-in-uboot.patch
23
24The DTS file for your platform will need the following GPIO definitions
25RESET_BUTTON
26RESET_OUT
27POWER_BUTTON
28POWER_OUT
29
30On an aspeed, these are generally connected to E0, E1, E2, and E3 respecitvely.
31An example of this is available in the s2600WF config.
32
33This patch allows the passthrough to be reenabled to the default condition when
34the appropriate pin is released.  This allows power control to take control
35when needed by a user power action, but leave the hardware in control a majority
36of the time, reducing the possibilty of bricking a system due to a failed BMC.
37
38https://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
39https://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
40https://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
41
42
43Caveats:
44This implementation does not currently implement the common targets that other
45implementations do.  There were several attempts to, but all ended in timing
46issues and boot inconsistencies during stress operations.
47