diff options
author | Peter Yin <peter.yin@quantatw.com> | 2024-05-29 12:19:11 +0300 |
---|---|---|
committer | Patrick Williams <patrick@stwcx.xyz> | 2024-06-24 17:42:21 +0300 |
commit | 591e573607e6ce42c761e5d071a866599965cede (patch) | |
tree | 719b25ba6994e5a0d3186b2c309b95ce786aadec | |
parent | afa66651b44c5d663107e7fd71317e44c3d94cc5 (diff) | |
download | openbmc-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>
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}/ } |