blob: b7ba29ba22eecf302b40e0e635d3cd4b4596b58a [file] [log] [blame]
Patrick Williams9e206392017-01-19 21:20:46 -06001SUMMARY = "Phosphor State Management"
2DESCRIPTION = "Phosphor State Manager provides a set of system state \
3management daemons. It is suitable for use on a wide variety of OpenBMC \
4platforms."
5HOMEPAGE = "https://github.com/openbmc/phosphor-state-manager"
6PR = "r1"
Patrick Venturedcb29962018-10-21 08:23:40 -07007PV = "1.0+git${SRCPV}"
Patrick Williams9e206392017-01-19 21:20:46 -06008LICENSE = "Apache-2.0"
9LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
10
Andrew Geissler20cff702020-03-09 16:51:27 -050011include phosphor-state-manager-systemd-links.inc
12
Patrick Williams9e206392017-01-19 21:20:46 -060013STATE_MGR_PACKAGES = " \
14 ${PN}-host \
15 ${PN}-chassis \
Josh Kingd2b95c72017-01-19 14:04:03 -060016 ${PN}-bmc \
Andrew Geisslerb2644f82021-02-10 16:11:58 -060017 ${PN}-hypervisor \
Michael Tritzb6e965c2017-04-18 17:01:12 -050018 ${PN}-discover \
Andrew Geisslerb1afecc2017-05-08 15:58:01 -050019 ${PN}-host-check \
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060020 ${PN}-reset-sensor-states \
Andrew Geissler44cadef2019-09-23 19:11:20 +000021 ${PN}-systemd-target-monitor \
Andrew Geissler024c25d2020-01-14 14:21:24 -060022 ${PN}-obmc-targets \
Andrew Geissler98d98042020-04-15 16:02:17 +000023 ${PN}-scheduled-host-transition \
Andrew Geisslera02a18a2022-02-21 23:00:20 +000024 ${PN}-chassis-check-power-status \
Andrew Geisslerd2b6c022022-04-27 01:10:13 +000025 ${PN}-secure-check \
Andrew Geissler19a6a522023-05-03 13:30:45 -050026 ${PN}-chassis-poweron-log \
Patrick Williams9e206392017-01-19 21:20:46 -060027"
Brad Bishop7f9102c2018-04-11 11:44:15 -040028PACKAGE_BEFORE_PN += "${STATE_MGR_PACKAGES}"
Patrick Williams12fc9392021-08-06 09:16:53 -050029ALLOW_EMPTY:${PN} = "1"
Brad Bishop1a5a5972017-03-01 16:08:45 -050030
Patrick Williams9e206392017-01-19 21:20:46 -060031DBUS_PACKAGES = "${STATE_MGR_PACKAGES}"
32
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060033SYSTEMD_PACKAGES = "${PN}-discover \
34 ${PN}-reset-sensor-states \
Andrew Geissler44cadef2019-09-23 19:11:20 +000035 ${PN}-systemd-target-monitor \
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060036"
Andrew Geissler6bc2f022018-03-13 11:46:27 -070037
38# The host-check function will check if the host is running
39# after a BMC reset.
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -060040# The reset-sensor-states function will reset the host
Andrew Geissler6bc2f022018-03-13 11:46:27 -070041# sensors on a BMC reset or system power loss.
42# Neither is required for host state function but are
43# recommended to deal properly with these reset scenarios.
Patrick Williams12fc9392021-08-06 09:16:53 -050044RRECOMMENDS:${PN}-host = "${PN}-host-check ${PN}-reset-sensor-states"
Patrick Williams9e206392017-01-19 21:20:46 -060045
Andrew Geissler024c25d2020-01-14 14:21:24 -060046# The obmc-targets are the base targets required to boot a computer system
Patrick Williams12fc9392021-08-06 09:16:53 -050047RRECOMMENDS:${PN}-host += "${PN}-obmc-targets"
Andrew Geissler024c25d2020-01-14 14:21:24 -060048
Andrew Geissler24453742023-05-03 13:39:33 -060049# Make it the default to create an info log when the chassis transitions
50# from off to on
51RRECOMMENDS:${PN}-chassis:append = " ${PN}-chassis-poweron-log"
52
Andrew Geisslerae3fe4a2019-12-11 14:51:20 -060053inherit meson pkgconfig
Patrick Williams9e206392017-01-19 21:20:46 -060054inherit obmc-phosphor-dbus-service
Andrew Geissler15834fd2020-03-09 16:59:22 -050055inherit obmc-phosphor-systemd
Patrick Williams9e206392017-01-19 21:20:46 -060056
Patrick Williams9e206392017-01-19 21:20:46 -060057DEPENDS += "sdbusplus"
William A. Kennington IIIfa391f22018-10-18 01:34:43 -070058DEPENDS += "sdeventplus"
Patrick Williams9e206392017-01-19 21:20:46 -060059DEPENDS += "phosphor-logging"
Patrick Williams1815f6b2017-01-30 11:06:16 -060060DEPENDS += "phosphor-dbus-interfaces"
Brad Bishop17c08bf2018-10-18 17:07:53 -040061DEPENDS += "libcereal"
Andrew Geissler44cadef2019-09-23 19:11:20 +000062DEPENDS += "nlohmann-json"
63DEPENDS += "cli11"
Andrew Geissler12aa0362021-10-07 13:33:11 +000064DEPENDS += "libgpiod"
Patrick Williams9e206392017-01-19 21:20:46 -060065
Patrick Williams12fc9392021-08-06 09:16:53 -050066RDEPENDS:${PN}-chassis += "bash"
Andrew Geisslerfa5be732022-07-14 13:50:37 -050067RDEPENDS:${PN}-host += "bash"
Andrew Geissler0ff04752021-04-14 13:51:25 +000068
Patrick Williamsed104d42021-08-31 13:19:27 -050069EXTRA_OEMESON:append = " -Dtests=disabled"
William A. Kennington III8b4768d2021-06-04 18:06:59 -070070
Patrick Williams12fc9392021-08-06 09:16:53 -050071FILES:${PN}-host = "${bindir}/phosphor-host-state-manager"
Andrew Geisslerfa5be732022-07-14 13:50:37 -050072FILES:${PN}-host += "${libexecdir}/host-reboot"
Andrew Geisslere1900162022-03-25 16:10:13 +000073DBUS_SERVICE:${PN}-host += "xyz.openbmc_project.State.Host@.service"
Patrick Williams12fc9392021-08-06 09:16:53 -050074DBUS_SERVICE:${PN}-host += "phosphor-reboot-host@.service"
75SYSTEMD_SERVICE:${PN}-host += "phosphor-reset-host-reboot-attempts@.service"
76SYSTEMD_SERVICE:${PN}-host += "phosphor-clear-one-time@.service"
77SYSTEMD_SERVICE:${PN}-host += "phosphor-set-host-transition-to-running@.service"
78SYSTEMD_SERVICE:${PN}-host += "phosphor-set-host-transition-to-off@.service"
Patrick Williams9e206392017-01-19 21:20:46 -060079
Patrick Williams12fc9392021-08-06 09:16:53 -050080FILES:${PN}-chassis = "${bindir}/phosphor-chassis-state-manager"
Andrew Geisslere1900162022-03-25 16:10:13 +000081DBUS_SERVICE:${PN}-chassis += "xyz.openbmc_project.State.Chassis@.service"
Andrew Geisslerb5138ed2022-11-11 14:00:30 -060082SYSTEMD_SERVICE:${PN}-chassis += "obmc-power-start@.service"
83SYSTEMD_SERVICE:${PN}-chassis += "obmc-power-stop@.service"
84SYSTEMD_SERVICE:${PN}-chassis += "obmc-powered-off@.service"
85SYSTEMD_SERVICE:${PN}-chassis += "phosphor-reset-chassis-on@.service"
86SYSTEMD_SERVICE:${PN}-chassis += "phosphor-reset-chassis-running@.service"
Patrick Williams9e206392017-01-19 21:20:46 -060087
Andrew Geissler19a6a522023-05-03 13:30:45 -050088SYSTEMD_SERVICE:${PN}-chassis-poweron-log += "phosphor-create-chassis-poweron-log@.service"
89
Patrick Williams12fc9392021-08-06 09:16:53 -050090FILES:${PN}-chassis += "${bindir}/obmcutil"
Anthony Wilsoncd800c82019-03-30 08:11:32 -070091
Patrick Williams12fc9392021-08-06 09:16:53 -050092FILES:${PN}-bmc = "${bindir}/phosphor-bmc-state-manager"
Andrew Geissler77c01262022-02-25 19:30:14 +000093FILES:${PN}-bmc += "${sysconfdir}/phosphor-systemd-target-monitor/phosphor-service-monitor-default.json"
Patrick Williams12fc9392021-08-06 09:16:53 -050094DBUS_SERVICE:${PN}-bmc += "xyz.openbmc_project.State.BMC.service"
Andrew Geissler77c01262022-02-25 19:30:14 +000095DBUS_SERVICE:${PN}-bmc += "obmc-bmc-service-quiesce@.target"
Josh Kingd2b95c72017-01-19 14:04:03 -060096
Andrew Geisslerd2b6c022022-04-27 01:10:13 +000097FILES:${PN}-secure-check = "${bindir}/phosphor-secure-boot-check"
98SYSTEMD_SERVICE:${PN}-secure-check += "phosphor-bmc-security-check.service"
99
Patrick Williams12fc9392021-08-06 09:16:53 -0500100FILES:${PN}-hypervisor = "${bindir}/phosphor-hypervisor-state-manager"
101DBUS_SERVICE:${PN}-hypervisor += "xyz.openbmc_project.State.Hypervisor.service"
Andrew Geisslerb2644f82021-02-10 16:11:58 -0600102
Patrick Williams12fc9392021-08-06 09:16:53 -0500103FILES:${PN}-discover = "${bindir}/phosphor-discover-system-state"
104SYSTEMD_SERVICE:${PN}-discover += "phosphor-discover-system-state@.service"
Michael Tritzb3b58992017-03-31 12:04:32 -0500105
Patrick Williams12fc9392021-08-06 09:16:53 -0500106FILES:${PN}-host-check = "${bindir}/phosphor-host-check"
107SYSTEMD_SERVICE:${PN}-host-check += "phosphor-reset-host-running@.service"
Andrew Geissleref50c6a2021-09-17 18:01:30 +0000108FILES:${PN}-host-check = "${bindir}/phosphor-host-reset-recovery"
109SYSTEMD_SERVICE:${PN}-host-check += "phosphor-reset-host-recovery@.service"
110
Andrew Geisslerb1afecc2017-05-08 15:58:01 -0500111
Patrick Williams12fc9392021-08-06 09:16:53 -0500112SYSTEMD_SERVICE:${PN}-reset-sensor-states += "phosphor-reset-sensor-states@.service"
Dhruvaraj Subhashchandranef07e6f2017-12-17 12:06:23 -0600113
Patrick Williams12fc9392021-08-06 09:16:53 -0500114FILES:${PN}-systemd-target-monitor = " \
Andrew Geissler44cadef2019-09-23 19:11:20 +0000115 ${bindir}/phosphor-systemd-target-monitor \
116 ${sysconfdir}/phosphor-systemd-target-monitor/phosphor-target-monitor-default.json \
117 "
Patrick Williams12fc9392021-08-06 09:16:53 -0500118SYSTEMD_SERVICE:${PN}-systemd-target-monitor += "phosphor-systemd-target-monitor.service"
Andrew Geissler44cadef2019-09-23 19:11:20 +0000119
Patrick Williams12fc9392021-08-06 09:16:53 -0500120FILES:${PN}-scheduled-host-transition = "${bindir}/phosphor-scheduled-host-transition"
Andrew Geisslere1900162022-03-25 16:10:13 +0000121DBUS_SERVICE:${PN}-scheduled-host-transition += "xyz.openbmc_project.State.ScheduledHostTransition@.service"
Andrew Geissler98d98042020-04-15 16:02:17 +0000122
Andrew Geisslera02a18a2022-02-21 23:00:20 +0000123FILES:${PN}-chassis-check-power-status = "${bindir}/phosphor-chassis-check-power-status"
124SYSTEMD_SERVICE:${PN}-chassis-check-power-status += "phosphor-chassis-check-power-status@.service"
125
Andrew Geissler024c25d2020-01-14 14:21:24 -0600126# Chassis power synchronization targets
127# - start-pre: Services to run before we start power on process
128# - start: Services to run to do the chassis power on
129# - on: Services to run once power is on
130# - stop-pre,stop,off: Same as above but applied to powering off
131# - reset-on: Services to check if chassis power is on after bmc reset
132CHASSIS_SYNCH_TARGETS = "start-pre start on stop-pre stop off reset-on"
133
134# Chassis action power targets
135# - on: Services to run to power on the chassis
136# - off: Services to run to power off the chassis
Andrew Geissler55146f62022-12-06 16:50:55 -0600137# - cycle: Services to run to cycle power to the chassis
Andrew Geissler024c25d2020-01-14 14:21:24 -0600138# - powered-off: Services to run once chassis power is off
139# - reset: Services to check chassis power state and update chassis "on" target
140# - hard-off: Services to force an immediate power off of the chassis
Andrew Geisslere0ba7fb2022-07-06 14:51:03 -0500141# - blackout: Target to enter when chassis experiences blackout
Andrew Geissler55146f62022-12-06 16:50:55 -0600142CHASSIS_ACTION_TARGETS = "poweron poweroff powercycle powered-off powerreset hard-poweroff blackout"
Andrew Geissler024c25d2020-01-14 14:21:24 -0600143
144# Track all host synchronization point targets
145# - start-pre: Services to run before we start host boot
146# - starting: Services to run to do the host boot
147# - started: Services to run once the host is booted
148# - stop-pre,stopping,stopped: Same as above but applied to shutting down the host
149# - reset-running: Services to check if host is running after bmc reset
150HOST_SYNCH_TARGETS = "start-pre starting started stop-pre stopping stopped reset-running"
151
152# Track all host action targets
153# - start: Will run startmin target, this target used for any additional
154# services that user needs for an initial power on of host.
155# For example, resetting the host reboot count could be put in
156# this target so on any fresh power on, this count is reset.
157# - startmin: Minimum services required to start the host. This target will
158# be called by reboot and start target.
159# - stop: Services to run to shutdown the host
160# - quiesce: Target to enter on host boot failure
Andrew Geissler73f93652022-04-15 13:32:04 -0500161# - graceful-quiesce: Target to enter on host boot failure (allow host graceful shutdown)
Andrew Geissler024c25d2020-01-14 14:21:24 -0600162# - shutdown: Tell host to shutdown, then stop system
163# - reset: Services to check if host is running and update host "start" target
164# - crash: Target to run when host crashes. it is very much similar to
165# quiesce target but the only delta is that this target contains
166# multiple services and one of them is the quiesce target.
167# - timeout: Target to run when host watchdog times out
Andrew Geisslerbbe378e2020-02-10 13:47:12 -0600168# - reboot: Reboot the host with a chassis power cycle included
169# - warm-reboot: Reboot the host without a chassis power cycle.
170# - force-warm-reboot: Reboot the host without a chassis power cycle and without
171# notifying the host.
172# - diagnostic-mode: This will be entered when the host is collecting diagnostic
173# data for itself.
Andrew Geissler73f93652022-04-15 13:32:04 -0500174HOST_ACTION_TARGETS = "start startmin stop quiesce graceful-quiesce reset shutdown crash timeout "
Andrew Geisslerbbe378e2020-02-10 13:47:12 -0600175HOST_ACTION_TARGETS += "reboot warm-reboot force-warm-reboot diagnostic-mode"
Andrew Geissler024c25d2020-01-14 14:21:24 -0600176
177CHASSIS_SYNCH_FMT = "obmc-power-{0}@.target"
178CHASSIS_ACTION_FMT = "obmc-chassis-{0}@.target"
179HOST_SYNCH_FMT = "obmc-host-{0}@.target"
180HOST_ACTION_FMT = "obmc-host-{0}@.target"
181
182CHASSIS_LINK_SYNCH_FMT = "${CHASSIS_SYNCH_FMT}:obmc-power-{0}@{1}.target"
183CHASSIS_LINK_ACTION_FMT = "${CHASSIS_ACTION_FMT}:obmc-chassis-{0}@{1}.target"
184HOST_LINK_SYNCH_FMT = "${HOST_SYNCH_FMT}:obmc-host-{0}@{1}.target"
185HOST_LINK_ACTION_FMT = "${HOST_ACTION_FMT}:obmc-host-{0}@{1}.target"
186FAN_LINK_FMT = "obmc-fan-control-ready@.target:obmc-fan-control-ready@{0}.target"
187
188# Targets to be executed on checkstop and watchdog timeout
Andrew Geissler91685cd2020-12-17 14:23:10 -0600189HOST_ERROR_TARGETS = "timeout"
Andrew Geissler024c25d2020-01-14 14:21:24 -0600190
191QUIESCE_TMPL = "obmc-host-quiesce@.target"
192CRASH_TIMEOUT_TGTFMT = "obmc-host-{0}@{1}.target"
193QUIESCE_INSTFMT = "obmc-host-quiesce@{1}.target"
194QUIESCE_FMT = "../${QUIESCE_TMPL}:${CRASH_TIMEOUT_TGTFMT}.wants/${QUIESCE_INSTFMT}"
195
Patrick Williams12fc9392021-08-06 09:16:53 -0500196SYSTEMD_SERVICE:${PN}-obmc-targets += " \
Andrew Geissler024c25d2020-01-14 14:21:24 -0600197 obmc-fans-ready.target \
198 obmc-fan-control.target \
199 obmc-fan-control-ready@.target \
200 obmc-fan-watchdog-takeover.target \
201 "
202
Patrick Williams12fc9392021-08-06 09:16:53 -0500203SYSTEMD_SERVICE:${PN}-obmc-targets += "${@compose_list(d, 'CHASSIS_SYNCH_FMT', 'CHASSIS_SYNCH_TARGETS')}"
204SYSTEMD_SERVICE:${PN}-obmc-targets += "${@compose_list(d, 'CHASSIS_ACTION_FMT', 'CHASSIS_ACTION_TARGETS')}"
205SYSTEMD_SERVICE:${PN}-obmc-targets += "${@compose_list(d, 'HOST_SYNCH_FMT', 'HOST_SYNCH_TARGETS')}"
206SYSTEMD_SERVICE:${PN}-obmc-targets += "${@compose_list(d, 'HOST_ACTION_FMT', 'HOST_ACTION_TARGETS')}"
Andrew Geissler024c25d2020-01-14 14:21:24 -0600207
Patrick Williamse83c2202021-09-01 16:17:33 -0500208SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list(d, 'CHASSIS_LINK_SYNCH_FMT', 'CHASSIS_SYNCH_TARGETS', 'OBMC_CHASSIS_INSTANCES')}"
209SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list(d, 'CHASSIS_LINK_ACTION_FMT', 'CHASSIS_ACTION_TARGETS', 'OBMC_CHASSIS_INSTANCES')}"
210SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list(d, 'HOST_LINK_SYNCH_FMT', 'HOST_SYNCH_TARGETS', 'OBMC_HOST_INSTANCES')}"
211SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list(d, 'HOST_LINK_ACTION_FMT', 'HOST_ACTION_TARGETS', 'OBMC_HOST_INSTANCES')}"
212SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list(d, 'FAN_LINK_FMT', 'OBMC_CHASSIS_INSTANCES')}"
213SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list(d, 'QUIESCE_FMT', 'HOST_ERROR_TARGETS', 'OBMC_HOST_INSTANCES')}"
Andrew Geissler024c25d2020-01-14 14:21:24 -0600214
Andrew Geissler5d4ef512022-11-14 14:45:17 -0600215# Create target relationships
216
217# Starting the host requires chassis power on
218START_TMPL_CTRL = "obmc-chassis-poweron@.target"
219START_TGTFMT_CTRL = "obmc-host-startmin@{1}.target"
220START_INSTFMT_CTRL = "obmc-chassis-poweron@{0}.target"
221START_FMT_CTRL = "../${START_TMPL_CTRL}:${START_TGTFMT_CTRL}.requires/${START_INSTFMT_CTRL}"
222SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list_zip(d, 'START_FMT_CTRL', 'OBMC_POWER_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
223
224# Chassis off requires host off
225STOP_TMPL_CTRL = "obmc-host-stop@.target"
226STOP_TGTFMT_CTRL = "obmc-chassis-poweroff@{0}.target"
227STOP_INSTFMT_CTRL = "obmc-host-stop@{1}.target"
228STOP_FMT_CTRL = "../${STOP_TMPL_CTRL}:${STOP_TGTFMT_CTRL}.requires/${STOP_INSTFMT_CTRL}"
229SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list_zip(d, 'STOP_FMT_CTRL', 'OBMC_CHASSIS_INSTANCES', 'OBMC_HOST_INSTANCES')}"
230
231# Hard power off requires chassis off
232HARD_OFF_TMPL_CTRL = "obmc-chassis-poweroff@.target"
233HARD_OFF_TGTFMT_CTRL = "obmc-chassis-hard-poweroff@{0}.target"
234HARD_OFF_INSTFMT_CTRL = "obmc-chassis-poweroff@{0}.target"
235HARD_OFF_FMT_CTRL = "../${HARD_OFF_TMPL_CTRL}:${HARD_OFF_TGTFMT_CTRL}.requires/${HARD_OFF_INSTFMT_CTRL}"
236SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list_zip(d, 'HARD_OFF_FMT_CTRL', 'OBMC_CHASSIS_INSTANCES')}"
237
238# Force the standby target to run the chassis reset check target
239RESET_TMPL_CTRL = "obmc-chassis-powerreset@.target"
240SYSD_TGT = "multi-user.target"
241RESET_INSTFMT_CTRL = "obmc-chassis-powerreset@{0}.target"
242RESET_FMT_CTRL = "../${RESET_TMPL_CTRL}:${SYSD_TGT}.wants/${RESET_INSTFMT_CTRL}"
243SYSTEMD_LINK:${PN}-obmc-targets += "${@compose_list_zip(d, 'RESET_FMT_CTRL', 'OBMC_CHASSIS_INSTANCES')}"
Andrew Geissleref50c6a2021-09-17 18:01:30 +0000244
Patrick Williamsbccaff32023-04-14 11:24:47 -0500245SRC_URI = "git://github.com/openbmc/phosphor-state-manager;branch=master;protocol=https"
Andrew Geissler19a6a522023-05-03 13:30:45 -0500246SRCREV = "afe12d69a0c8182e7b587d81531e0a9e376f5ce7"
Patrick Williams9e206392017-01-19 21:20:46 -0600247
248S = "${WORKDIR}/git"