summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Yin <peter.yin@quantatw.com>2024-05-29 12:19:11 +0300
committerPatrick Williams <patrick@stwcx.xyz>2024-06-24 17:42:21 +0300
commit591e573607e6ce42c761e5d071a866599965cede (patch)
tree719b25ba6994e5a0d3186b2c309b95ce786aadec
parentafa66651b44c5d663107e7fd71317e44c3d94cc5 (diff)
downloadopenbmc-591e573607e6ce42c761e5d071a866599965cede.tar.xz
meta-facebook: harma: revise PSM behavior
Redfish Command to map PSM behavior: "ForceOff": Press the power button for over 4 seconds to power off the host. "PowerCycle": Gracefully power off the host, then power on the host. "GracefulShutdown": Press the power button for 1 second to gracefully power off the host. "On": Press the power button for 1 second to power on the host. "ForceOn": Same as "On". "GracefulRestart": Same as "PowerCycle". "ForceRestart": Press the power button for over 4 seconds, then power on the host. Change-Id: I67b40620107bbf9e90c1c55e37b605ca573f84e4 Signed-off-by: Peter Yin <peter.yin@quantatw.com>
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/leds/phosphor-led-manager_%.bbappend6
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff (renamed from meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powerreset)3
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff@.service9
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweron2
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweron@.service9
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-force-poweroff (renamed from meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-poweroff)3
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-force-poweroff@.service14
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-graceful-poweroff (renamed from meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powercycle)7
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-graceful-poweroff@.service15
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powercycle@.service9
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-poweroff@.service9
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powerreset@.service9
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/phosphor-wait-power-off@.service19
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd28
-rw-r--r--meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager_%.bbappend83
15 files changed, 160 insertions, 65 deletions
diff --git a/meta-facebook/meta-harma/recipes-phosphor/leds/phosphor-led-manager_%.bbappend b/meta-facebook/meta-harma/recipes-phosphor/leds/phosphor-led-manager_%.bbappend
index 6b12a398f7..0aa18444ad 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/leds/phosphor-led-manager_%.bbappend
+++ b/meta-facebook/meta-harma/recipes-phosphor/leds/phosphor-led-manager_%.bbappend
@@ -1,3 +1,4 @@
+# phosphor led configuration
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
SRC_URI:append = " file://led-group-config.json"
@@ -5,3 +6,8 @@ SRC_URI:append = " file://led-group-config.json"
do_install:append() {
install -m 0644 ${WORKDIR}/led-group-config.json ${D}${datadir}/phosphor-led-manager/
}
+
+# Harma power led is follows the host status.
+CHASSIS_TARGETS = ""
+TGTFMT = ""
+
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powerreset b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff
index bd3a3fd84d..4a0d7e02e9 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powerreset
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff
@@ -2,4 +2,5 @@
# shellcheck source=meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
source /usr/libexec/phosphor-state-manager/power-cmd
-power_reset
+
+force_power_off
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff@.service b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff@.service
new file mode 100644
index 0000000000..09494c1cd9
--- /dev/null
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweroff@.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=power off chassis:%i
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-state-manager/chassis-poweroff %i
+
+[Install]
+WantedBy=obmc-chassis-hard-poweroff@%i.target
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweron b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweron
new file mode 100644
index 0000000000..06bd986563
--- /dev/null
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweron
@@ -0,0 +1,2 @@
+#!/bin/bash
+exit 0
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweron@.service b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweron@.service
new file mode 100644
index 0000000000..e65c96369b
--- /dev/null
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/chassis-poweron@.service
@@ -0,0 +1,9 @@
+[Unit]
+Description=power on chassis:%i
+
+[Service]
+Type=oneshot
+ExecStart=/usr/libexec/phosphor-state-manager/chassis-poweron %i
+
+[Install]
+RequiredBy=obmc-chassis-poweron@%i.target
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-poweroff b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-force-poweroff
index 506879e96e..4a0d7e02e9 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-poweroff
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-force-poweroff
@@ -2,4 +2,5 @@
# shellcheck source=meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
source /usr/libexec/phosphor-state-manager/power-cmd
-power_off
+
+force_power_off
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-force-poweroff@.service b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-force-poweroff@.service
new file mode 100644
index 0000000000..062d4f2098
--- /dev/null
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-force-poweroff@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=power off host:%i
+After=obmc-host-stop-pre@%i.target
+Before=obmc-host-stopping@%i.target
+Conflicts=obmc-host-startmin@%i.target
+
+[Service]
+Restart=no
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/libexec/phosphor-state-manager/host-force-poweroff %i
+
+[Install]
+RequiredBy=obmc-host-stop@%i.target
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powercycle b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-graceful-poweroff
index b2a09f09be..b83c8c6aad 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powercycle
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-graceful-poweroff
@@ -2,8 +2,5 @@
# shellcheck source=meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
source /usr/libexec/phosphor-state-manager/power-cmd
-if [ "$(power_status)" == "on" ]; then
- power_off
- sleep 10
- power_on
-fi
+
+graceful_power_off
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-graceful-poweroff@.service b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-graceful-poweroff@.service
new file mode 100644
index 0000000000..c8af4ee700
--- /dev/null
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-graceful-poweroff@.service
@@ -0,0 +1,15 @@
+[Unit]
+Description=power off host:%i
+Wants=obmc-host-stop-pre@%i.target
+Before=obmc-host-stop-pre@%i.target
+Conflicts=obmc-host-start@%i.target
+ConditionPathExists=!/run/openbmc/host@%i-request
+
+[Service]
+Restart=no
+Type=oneshot
+RemainAfterExit=yes
+ExecStart=/usr/libexec/phosphor-state-manager/host-graceful-poweroff %i
+
+[Install]
+WantedBy=obmc-host-shutdown@%i.target
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powercycle@.service b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powercycle@.service
deleted file mode 100644
index f45e71f8fe..0000000000
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powercycle@.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Host Power Cycle: %i
-
-[Service]
-Type=oneshot
-ExecStart=/usr/libexec/phosphor-state-manager/host-powercycle %i
-
-[Install]
-WantedBy=obmc-host-reboot@%i.target
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-poweroff@.service b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-poweroff@.service
deleted file mode 100644
index 3ead57e051..0000000000
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-poweroff@.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=power off host:%i
-
-[Service]
-Type=oneshot
-ExecStart=/usr/libexec/phosphor-state-manager/host-poweroff %i
-
-[Install]
-WantedBy=obmc-host-shutdown@%i.target
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powerreset@.service b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powerreset@.service
deleted file mode 100644
index 0fd059ce16..0000000000
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/host-powerreset@.service
+++ /dev/null
@@ -1,9 +0,0 @@
-[Unit]
-Description=Host Power Reset: %i
-
-[Service]
-Type=oneshot
-ExecStart=/usr/libexec/phosphor-state-manager/host-powerreset %i
-
-[Install]
-WantedBy=obmc-host-force-warm-reboot@%i.target
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/phosphor-wait-power-off@.service b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/phosphor-wait-power-off@.service
new file mode 100644
index 0000000000..74368c273e
--- /dev/null
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/phosphor-wait-power-off@.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=Wait for Power%i to turn off
+Before=obmc-power-off@%i.target
+Wants=obmc-power-stop@%i.target
+Before=obmc-power-stop@%i.target
+Wants=obmc-power-stop-pre@%i.target
+After=obmc-power-stop-pre@%i.target
+Conflicts=obmc-chassis-poweron@%i.target
+
+[Service]
+Type=oneshot
+RemainAfterExit=yes
+# This is wrong, but at least gives us something since we're not using
+# skeleton.
+ExecStart=sleep 15
+ExecStart=/bin/rm -f /run/openbmc/host@%i-request
+
+[Install]
+RequiredBy=obmc-host-stop@%i.target
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
index 6f6f411b53..d9a224ba12 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager/power-cmd
@@ -13,9 +13,21 @@ power_status() {
}
# DC off
-power_off() {
+graceful_power_off() {
+ if [ "$(power_status)" == "on" ]; then
+ set_gpio power-host-control 0
+ sleep 1
+ set_gpio power-host-control 1
+ sleep 1
+
+ # wait host power off
+ sleep 10
+ fi
+}
+
+# DC off
+force_power_off() {
if [ "$(power_status)" == "on" ]; then
- echo "Set Host Power Off"
set_gpio power-host-control 0
sleep 6
set_gpio power-host-control 1
@@ -35,25 +47,13 @@ power_on() {
do
sleep 1
if [ "$(power_status)" == "on" ]; then
-
- echo "Set Host Power On"
return 0
fi
if [ "$i" -eq 10 ]; then
- echo "Set Host Power On Fail"
return 1
fi
done
fi
return 0
}
-
-# Host reset
-power_reset() {
- echo "Set Host Reset"
- set_gpio reset-control 0
- sleep 1
- set_gpio reset-control 1
- sleep 1
-}
diff --git a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager_%.bbappend
index d89a0ba8a9..aead043cb1 100644
--- a/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager_%.bbappend
+++ b/meta-facebook/meta-harma/recipes-phosphor/state/phosphor-state-manager_%.bbappend
@@ -1,8 +1,11 @@
+#
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
PACKAGECONFIG:remove = "only-run-apr-on-power-loss"
PACKAGECONFIG:append = " host-gpio"
+# Chassis Config
+# TODO: Remove it when 69903 applied
CHASSIS_DEFAULT_TARGETS:remove = " \
obmc-chassis-powerreset@{}.target.requires/phosphor-reset-chassis-on@{}.service \
obmc-chassis-powerreset@{}.target.requires/phosphor-reset-chassis-running@{}.service \
@@ -10,32 +13,77 @@ CHASSIS_DEFAULT_TARGETS:remove = " \
obmc-chassis-poweron@{}.target.requires/obmc-power-start@{}.service \
"
+# TODO: Remove it when 69903 applied
+CHASSIS_DEFAULT_TARGETS:remove = " \
+ obmc-chassis-poweron@{}.target.wants/chassis-poweron@{}.service \
+ obmc-chassis-hard-poweroff@{}.target.wants/chassis-poweroff@{}.service \
+ obmc-chassis-powercycle@{}.target.wants/chassis-powercycle@{}.service \
+ "
+
+# TODO: Remove it when 69903 applied
+CHASSIS_DEFAULT_TARGETS:append = " \
+ obmc-chassis-poweron@{}.target.requires/chassis-poweron@{}.service \
+ obmc-chassis-powercycle@{}.target.requires/chassis-powercycle@{}.service \
+ "
+# TODO: Remove it when 69903 commit
+CHASSIS_DEFAULT_TARGETS:append = " \
+ obmc-chassis-poweroff@{}.target.requires/obmc-powered-off@{}.service \
+ "
+
+# Harma Chassis off is host force off
CHASSIS_DEFAULT_TARGETS:append = " \
- obmc-chassis-hard-poweroff@{}.target.wants/host-poweroff@0.service \
+ obmc-chassis-hard-poweroff@{}.target.requires/host-force-poweroff@{}.service \
"
+# Host Config
HOST_DEFAULT_TARGETS:remove = " \
- obmc-host-start@{}.target.wants/host-poweron@{}.service \
- obmc-host-force-warm-reboot@{}.target.requires/obmc-host-stop@{}.target \
- obmc-host-force-warm-reboot@{}.target.requires/phosphor-reboot-host@{}.service \
-"
+ obmc-host-warm-reboot@{}.target.requires/xyz.openbmc_project.Ipmi.Internal.SoftPowerOff.service \
+ "
+# TODO: Remove it when 69903 applied.
HOST_DEFAULT_TARGETS:append = " \
obmc-host-startmin@{}.target.requires/host-poweron@{}.service \
-"
+ "
+
+# TODO: Remove it when 69903 applied.
+HOST_DEFAULT_TARGETS:append = " \
+ obmc-host-shutdown@{}.target.requires/host-graceful-poweroff@{}.service \
+ obmc-host-warm-reboot@{}.target.requires/host-graceful-poweroff@{}.service \
+ "
+
+# TODO: Remove it when 69903 applied.
+HOST_DEFAULT_TARGETS:append = " \
+ obmc-host-stop@{}.target.requires/host-force-poweroff@{}.service \
+ "
+
+# TODO: Remove it when 69903 applied.
+HOST_DEFAULT_TARGETS:remove = " \
+ obmc-host-shutdown@{}.target.wants/host-poweroff@{}.service \
+ obmc-host-start@{}.target.wants/host-poweron@{}.service \
+ obmc-host-reboot@{}.target.wants/host-powercycle@{}.service \
+ obmc-host-force-warm-reboot@{}.target.wants/host-powerreset@{}.service \
+ "
+
+# TODO: Remove when 69903 applied.
+HOST_DEFAULT_TARGETS:remove = " \
+ obmc-host-reboot@{}.target.requires/obmc-host-shutdown@{}.service \
+ "
SRC_URI:append = " \
- file://chassis-powercycle@.service \
- file://host-poweroff@.service \
- file://host-poweron@.service \
- file://host-powercycle@.service \
- file://host-powerreset@.service \
file://chassis-powercycle \
- file://host-poweroff \
+ file://chassis-powercycle@.service \
+ file://chassis-poweroff \
+ file://chassis-poweroff@.service \
+ file://chassis-poweron \
+ file://chassis-poweron@.service \
+ file://host-force-poweroff \
+ file://host-force-poweroff@.service \
+ file://host-graceful-poweroff \
+ file://host-graceful-poweroff@.service \
file://host-poweron \
- file://host-powercycle \
- file://host-powerreset \
+ file://host-poweron@.service \
file://power-cmd \
+ file://phosphor-wait-power-off@.service \
file://discover-sys-init.conf \
file://phosphor-state-manager-init \
file://phosphor-state-manager-init.conf \
@@ -48,11 +96,12 @@ do_install:append() {
install -m 0644 ${WORKDIR}/*.service ${D}${systemd_system_unitdir}/
install -d ${D}${libexecdir}/${PN}
+ install -m 0755 ${WORKDIR}/chassis-poweroff ${D}${libexecdir}/${PN}/
+ install -m 0755 ${WORKDIR}/chassis-poweron ${D}${libexecdir}/${PN}/
install -m 0755 ${WORKDIR}/chassis-powercycle ${D}${libexecdir}/${PN}/
- install -m 0755 ${WORKDIR}/host-poweroff ${D}${libexecdir}/${PN}/
+ install -m 0755 ${WORKDIR}/host-force-poweroff ${D}${libexecdir}/${PN}/
+ install -m 0755 ${WORKDIR}/host-graceful-poweroff ${D}${libexecdir}/${PN}/
install -m 0755 ${WORKDIR}/host-poweron ${D}${libexecdir}/${PN}/
- install -m 0755 ${WORKDIR}/host-powercycle ${D}${libexecdir}/${PN}/
- install -m 0755 ${WORKDIR}/host-powerreset ${D}${libexecdir}/${PN}/
install -m 0755 ${WORKDIR}/power-cmd ${D}${libexecdir}/${PN}/
install -m 0755 ${WORKDIR}/phosphor-state-manager-init ${D}${libexecdir}/${PN}/
}