diff options
author | Thu Nguyen <thu@os.amperecomputing.com> | 2022-08-29 05:46:09 +0300 |
---|---|---|
committer | Thang Q. Nguyen <thang@os.amperecomputing.com> | 2022-10-06 04:31:22 +0300 |
commit | 6c188d6de10aa503e225e4b49333b1b4f6980304 (patch) | |
tree | e0ec98fa63a17d0cbdbdf9c8324f52607ed2d472 /meta-ampere | |
parent | e650417399da313c51bcfd6ce3f3d32f463ca002 (diff) | |
download | openbmc-6c188d6de10aa503e225e4b49333b1b4f6980304.tar.xz |
meta-ampere: support ampere power/host already on targets
There are no targets to identity the already on of power state and the
already running of host state. This commit adds those targets.
The targets will be the check points to start ampere services such as
drivers binder, hang detection...
obmc-power-already-on@.target will be always activated when
chassis-power-control is asserted. It will be deactivated before
deasserting chassis-power-control.
obmc-host-already-on@.target will be activated when the host%i-ready
is triggered. The target will be deactivated before turning
off/reseting the host.
Tested:
1. The targets should be activated/deactivated as designing.
Signed-off-by: Thu Nguyen <thu@os.amperecomputing.com>
Change-Id: I09a8b94d8043f31f7cee83b29765f7e2c7a5c35a
Diffstat (limited to 'meta-ampere')
5 files changed, 48 insertions, 0 deletions
diff --git a/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl.bb b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl.bb index b0498f8ebb..3f9babba9b 100644 --- a/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl.bb +++ b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl.bb @@ -14,11 +14,17 @@ SRC_URI = " \ file://ampere-host-force-reset@.service \ file://ampere-host-on-host-check@.service \ file://ampere_host_check.sh \ + file://obmc-power-already-on@.target \ + file://obmc-host-already-on@.target \ + file://ampere-bmc-reboot-host-check@.service \ " SYSTEMD_PACKAGES = "${PN}" SYSTEMD_SERVICE:${PN} = " \ ampere-host-force-reset@.service \ + obmc-power-already-on@.target \ + obmc-host-already-on@.target \ + ampere-bmc-reboot-host-check@.service \ " # append force reboot @@ -36,6 +42,21 @@ HOST_ON_RESET_HOSTFMT = "../${HOST_ON_RESET_HOSTTMPL}:${HOST_ON_RESET_HOSTTGTFMT SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'HOST_ON_RESET_HOSTFMT', 'OBMC_HOST_INSTANCES')}" SYSTEMD_SERVICE:${PN} += "${HOST_ON_RESET_HOSTTMPL}" +# append on op-wait-power-on +AMPERE_POWER_ON_TGT = "obmc-power-already-on@.target" +AMPERE_POWER_ON_INSTMPL = "obmc-power-already-on@{0}.target" +OP_WAIT_POWER_ON = "op-wait-power-on@{0}.service" +AMPERE_POWER_ON_TARGET_FMT = "../${AMPERE_POWER_ON_TGT}:${OP_WAIT_POWER_ON}.wants/${AMPERE_POWER_ON_INSTMPL}" +SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'AMPERE_POWER_ON_TARGET_FMT', 'OBMC_HOST_INSTANCES')}" + +# append on obmc-chassis-poweron but will start after phosphor-state-manager init +# host state as running +HOST_CHECK_BMC_REBOOT_HOSTTMPL = "ampere-bmc-reboot-host-check@.service" +HOST_CHECK_BMC_REBOOT_HOSTINSTMPL = "ampere-bmc-reboot-host-check@{0}.service" +HOST_CHECK_BMC_REBOOT_HOSTTGTFMT = "obmc-chassis-poweron@{0}.target" +HOST_CHECK_BMC_REBOOT_HOSTFMT = "../${HOST_CHECK_BMC_REBOOT_HOSTTMPL}:${HOST_CHECK_BMC_REBOOT_HOSTTGTFMT}.requires/${HOST_CHECK_BMC_REBOOT_HOSTINSTMPL}" +SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'HOST_CHECK_BMC_REBOOT_HOSTFMT', 'OBMC_HOST_INSTANCES')}" + do_install() { install -d ${D}/usr/sbin install -m 0755 ${WORKDIR}/ampere_host_check.sh ${D}/${sbindir}/ diff --git a/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-bmc-reboot-host-check@.service b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-bmc-reboot-host-check@.service new file mode 100644 index 0000000000..feaa3d0b5f --- /dev/null +++ b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-bmc-reboot-host-check@.service @@ -0,0 +1,15 @@ +[Unit] +Description=Check Host%i status after bmc reboot +After=obmc-host-reset@%i.target +After=obmc-host-reset-running@%i.target +After=mapper-wait@-xyz-openbmc_project-state-host%i.service +OnSuccess=obmc-host-already-on@%i.target +ConditionPathExists=/run/openbmc/chassis@%i-on +ConditionPathExists=/run/openbmc/host@%i-on +Conflicts=obmc-chassis-poweroff@%i.target + +[Service] +Type=oneshot +ExecStart=/bin/sh -c "if [ $(busctl get-property `mapper get-service /xyz/openbmc_project/state/host0` /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host CurrentHostState | grep -i '\.Running' | wc -l) != 0 ]; then exit 0; fi" + + diff --git a/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-host-on-host-check@.service b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-host-on-host-check@.service index e3c87397dc..a68d0431f7 100644 --- a/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-host-on-host-check@.service +++ b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-host-on-host-check@.service @@ -5,6 +5,7 @@ After=obmc-power-start-pre@%i.target Conflicts=obmc-host-stop@%i.target Conflicts=phosphor-reset-host-check@%i.service OnFailure=obmc-host-quiesce@%i.target +OnSuccess=obmc-host-already-on@%i.target OnFailureJobMode=flush [Service] diff --git a/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/obmc-host-already-on@.target b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/obmc-host-already-on@.target new file mode 100644 index 0000000000..07f5039ec4 --- /dev/null +++ b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/obmc-host-already-on@.target @@ -0,0 +1,6 @@ +[Unit] +Description=Ampere Host %i already on target +Conflicts=obmc-chassis-poweroff@%i.target +Conflicts=obmc-host-quiesce@%i.target +Conflicts=ampere-host-force-reset@%i.service +Conflicts=ampere-host-shutdown-ack@%i.service diff --git a/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/obmc-power-already-on@.target b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/obmc-power-already-on@.target new file mode 100644 index 0000000000..63699cf8b2 --- /dev/null +++ b/meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/obmc-power-already-on@.target @@ -0,0 +1,5 @@ +[Unit] +Description=Ampere power %i already on target +After=op-wait-power-on@%i.service +Conflicts=obmc-chassis-poweroff@%i.target +Conflicts=ampere-host-shutdown-ack@%i.service |