xref: /openbmc/phosphor-power/phosphor-power-sequencer/docs/powering_on.md (revision 27ae70b8219cd292f3d8d9b3d5ff2a9ee18b1f37)
1# Powering On
2
3## Initiating a power on
4
5The system can be powered on by several methods, such as the `obmcutil` tool, a
6Redfish command, or a power button on the system enclosure.
7
8Whichever method is used, it sets the `state` property to 1 on the
9`org.openbmc.control.Power` D-Bus interface. The D-Bus object path is
10`/org/openbmc/control/power0`, which represents the entire system. See
11[Chassis Status](chassis_status.md) for more information.
12
13The `phosphor-power-sequencer` application only supports powering on the entire
14system. In a multiple chassis system, `phosphor-power-sequencer` does not
15support powering on individual chassis independent of the rest of the system.
16
17## Determining which chassis to power on
18
19In a single chassis system, `phosphor-power-sequencer` will always attempt to
20power on the chassis.
21
22In a multiple chassis system, `phosphor-power-sequencer` will only attempt to
23power on chassis with the proper status:
24
25- `Present` property is true
26- `Enabled` property is true (if interface exists)
27- `Available` property is true (if interface exists)
28- `Status` property is `Good` (if interface exists)
29
30`phosphor-power-sequencer` will set the `state` property to 1 for each chassis
31that is being powered on. It will set `state` to 0 for each chassis not being
32powered on.
33
34If no chassis are in the proper status to power on, `phosphor-power-sequencer`
35will log an error. `phosphor-chassis-state-manager` will
36[power off](powering_off.md) the system.
37
38See [Chassis Status](chassis_status.md) for more information on these
39properties.
40
41## Powering on the voltage rails
42
43`phosphor-power-sequencer` powers on the main (non-standby) voltage rails in a
44chassis by toggling a named GPIO to the power sequencer device in the chassis.
45For more information, see [Named GPIOs](named_gpios.md).
46
47In each chassis being powered on, the power sequencer device powers on the
48individual voltage rails in the correct order.
49
50## Determining when power on is complete
51
52When all voltage rails have been successfully powered on in a chassis, the power
53sequencer device will set the chassis power good (pgood) signal to true.
54
55`phosphor-power-sequencer` reads the chassis pgood signal from a named GPIO. For
56more information, see
57[Monitoring Chassis Power Good](monitoring_chassis_pgood.md).
58
59When the chassis power good signal changes to true, `phosphor-power-sequencer`
60will set the `pgood` property to 1 on the `org.openbmc.control.Power` interface
61for the **chassis** object path. The power on has finished for that chassis.
62
63When all chassis that were being powered on have finished,
64`phosphor-power-sequencer` will set the `pgood` property to 1 on the
65`org.openbmc.control.Power` interface for the **system** object path.
66
67See [Chassis Status](chassis_status.md) for more information on the `pgood`
68property.
69
70After all chassis have powered on, the rest of the boot process continues. The
71host operating system will eventually be started.
72
73## Handling errors
74
75### Power good fault
76
77When the power sequencer device is powering on the main voltage rails, one of
78the rails may fail to power on. Similarly, after the system has powered on, one
79of the voltage rails that had been providing power to the chassis might suddenly
80power off.
81
82In both cases the result is a pgood fault. See
83[Power Good Faults](pgood_faults.md) for information on how the error is
84handled.
85
86### Unable to read chassis power good signal
87
88`phosphor-power-sequencer` may become unable to read the chassis power good
89signal from the named GPIO due to:
90
91- Hardware communication problems.
92- The `Available` property of the chassis changes to false.
93
94See [Monitoring Chassis Power Good](monitoring_chassis_pgood.md) for more
95information on how the error is handled.
96