summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThu Nguyen <thu@os.amperecomputing.com>2022-08-29 05:46:09 +0300
committerThang Q. Nguyen <thang@os.amperecomputing.com>2022-10-06 04:31:22 +0300
commit6c188d6de10aa503e225e4b49333b1b4f6980304 (patch)
treee0ec98fa63a17d0cbdbdf9c8324f52607ed2d472
parente650417399da313c51bcfd6ce3f3d32f463ca002 (diff)
downloadopenbmc-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
-rw-r--r--meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl.bb21
-rw-r--r--meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-bmc-reboot-host-check@.service15
-rw-r--r--meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/ampere-host-on-host-check@.service1
-rw-r--r--meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/obmc-host-already-on@.target6
-rw-r--r--meta-ampere/meta-common/recipes-ampere/host/ampere-hostctrl/obmc-power-already-on@.target5
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