From 5c76e0cf9f742cae4156c30c033af50be1135ab7 Mon Sep 17 00:00:00 2001 From: Andrew Geissler Date: Tue, 27 Mar 2018 13:56:26 -0700 Subject: Introduce new host-startmin action target Requirements have arisen for OpenBMC firmware to run certain services only during fresh power on operations. To achieve that, break the obmc-host-start action target into two targets. The existing obmc-host-start target will now call the new obmc-host-startmin target. The startmin target will be the minimum services required to start the host. The obmc-host-start target is where services that should only be called during a fresh power on can be placed. The initial use case for this is the obmc-host-reboot target. It will call this new obmc-host-startmin target to do the bare minimum on a reboot operation. This then allows the use case for OpenBMC to only reset the host reboot count on a fresh power on operation. A new service will be added to the obmc-host-start target to do this. If a reboot operation is issued, or a host watchdog is triggered to cause a reboot, this service would not be started, ensuring the reboot count is properly decremented. Tested: Verified on/off/reboot and ran CT regression suite. https://gerrit.openbmc-project.xyz/#/c/9821/ is required for reboots to work properly. Change-Id: I86df03e6d671178c1525f852e196c4102bb73cb6 Signed-off-by: Andrew Geissler --- meta-phosphor/common/recipes-core/systemd/obmc-targets.bb | 9 +++++++-- .../recipes-core/systemd/obmc-targets/obmc-host-reboot@.target | 2 +- .../systemd/obmc-targets/obmc-host-startmin@.target | 10 ++++++++++ .../systemd/obmc-targets/obmc-host-stop-pre@.target | 2 +- .../recipes-core/systemd/obmc-targets/obmc-host-stop@.target | 2 +- .../systemd/obmc-targets/obmc-host-stopped@.target | 2 +- .../systemd/obmc-targets/obmc-host-stopping@.target | 2 +- 7 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-startmin@.target (limited to 'meta-phosphor/common/recipes-core') diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets.bb b/meta-phosphor/common/recipes-core/systemd/obmc-targets.bb index 26fbcd1f6..ac7835e6b 100644 --- a/meta-phosphor/common/recipes-core/systemd/obmc-targets.bb +++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets.bb @@ -32,7 +32,12 @@ CHASSIS_ACTION_TARGETS = "poweron poweroff powered-off powerreset hard-poweroff" HOST_SYNCH_TARGETS = "start-pre starting started stop-pre stopping stopped reset-running" # Track all host action targets -# - start: Service to run to start the host +# - start: Will run startmin target, this target used for any additional +# services that user needs for an initial power on of host. +# For example, resetting the host reboot count could be put in +# this target so on any fresh power on, this count is reset. +# - startmin: Minimum services required to start the host. This target will +# be called by reboot and start target. # - stop: Services to run to shutdown the host # - quiesce: Target to enter on host boot failure # - shutdown: Tell host to shutdown, then stop system @@ -42,7 +47,7 @@ HOST_SYNCH_TARGETS = "start-pre starting started stop-pre stopping stopped reset # multiple services and one of them is the quiesce target. # - timeout: Target to run when host watchdog times out # - reboot: Reboot the host -HOST_ACTION_TARGETS = "start stop quiesce reset shutdown crash timeout reboot" +HOST_ACTION_TARGETS = "start startmin stop quiesce reset shutdown crash timeout reboot" CHASSIS_SYNCH_FMT = "obmc-power-{0}@.target" CHASSIS_ACTION_FMT = "obmc-chassis-{0}@.target" diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reboot@.target b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reboot@.target index 5ee53ae29..dc280ea65 100644 --- a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reboot@.target +++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reboot@.target @@ -4,7 +4,7 @@ Wants={SYSTEMD_DEFAULT_TARGET} After={SYSTEMD_DEFAULT_TARGET} Wants=mapper-wait@-org-openbmc-control-chassis%i.service After=mapper-wait@-org-openbmc-control-chassis%i.service -Conflicts=obmc-host-start@%i.target +Conflicts=obmc-host-startmin@%i.target RefuseManualStop=yes OnFailure=obmc-chassis-poweroff@%i.target OnFailureJobMode=flush diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-startmin@.target b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-startmin@.target new file mode 100644 index 000000000..6e924adcd --- /dev/null +++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-startmin@.target @@ -0,0 +1,10 @@ +[Unit] +Description=Start Host%i Minimum +Wants={SYSTEMD_DEFAULT_TARGET} +After={SYSTEMD_DEFAULT_TARGET} +Wants=mapper-wait@-org-openbmc-control-chassis%i.service +After=mapper-wait@-org-openbmc-control-chassis%i.service +Conflicts=obmc-host-stop@%i.target +RefuseManualStop=yes +OnFailure=obmc-host-quiesce@%i.target +OnFailureJobMode=flush diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stop-pre@.target b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stop-pre@.target index 75afd4339..e88d3ea58 100644 --- a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stop-pre@.target +++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stop-pre@.target @@ -3,6 +3,6 @@ Description=Stop Host%i (Pre) Wants={SYSTEMD_DEFAULT_TARGET} After={SYSTEMD_DEFAULT_TARGET} Before=obmc-host-stopping@%i.target -Conflicts=obmc-host-start@%i.target +Conflicts=obmc-host-startmin@%i.target RefuseManualStart=yes RefuseManualStop=yes diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stop@.target b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stop@.target index 6353e74da..8e99bccdb 100644 --- a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stop@.target +++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stop@.target @@ -5,7 +5,7 @@ After={SYSTEMD_DEFAULT_TARGET} Wants=mapper-wait@-org-openbmc-control-chassis%i.service After=mapper-wait@-org-openbmc-control-chassis%i.service After=obmc-chassis-poweroff@%i.target -Conflicts=obmc-host-start@%i.target +Conflicts=obmc-host-startmin@%i.target RefuseManualStop=yes OnFailure=obmc-chassis-poweroff@%i.target OnFailureJobMode=flush diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stopped@.target b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stopped@.target index d3efca58f..74039fc25 100644 --- a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stopped@.target +++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stopped@.target @@ -4,6 +4,6 @@ Wants={SYSTEMD_DEFAULT_TARGET} Wants=obmc-host-stopping@%i.target After=obmc-host-stopping@%i.target Before=obmc-power-stop-pre@%i.target -Conflicts=obmc-host-start@%i.target +Conflicts=obmc-host-startmin@%i.target RefuseManualStart=yes RefuseManualStop=yes diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stopping@.target b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stopping@.target index 6209c52b1..f087dea72 100644 --- a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stopping@.target +++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-stopping@.target @@ -4,7 +4,7 @@ Wants={SYSTEMD_DEFAULT_TARGET} Wants=obmc-host-stop-pre@%i.target After=obmc-host-stop-pre@%i.target Before=obmc-host-stopped@%i.target -Conflicts=obmc-host-start@%i.target +Conflicts=obmc-host-startmin@%i.target Conflicts=obmc-host-starting@%i.target RefuseManualStart=yes RefuseManualStop=yes -- cgit v1.2.3