From 1c51ca54c8206feaeaea61c1e4831b4a68ddb0e5 Mon Sep 17 00:00:00 2001 From: Charles Boyer Date: Tue, 24 Aug 2021 11:25:03 -0500 Subject: meta-fii/meta-kudo: Fix power control states and timing Summary of changes: 1. Adjust start time of xyz.openbmc_project.State.Chassis.service to fix initial chassis state 2. Add shutdown ack service 3. Remove reset ack service 4. Remove heartbeat mode 5. Remove sysreset pin control from power_control.exe 6. Remove all phosphor-fan services that caused power off during a system reset 7. Adjustments to ampere_power_util.sh (See below) ampere_power_util.sh: 1. Use GPIO instead of dbus for host state 2. Wait 3 seconds before checking power status for power on 3. Wait 6 seconds before checking power status for power off 4. Have force_off act GPIO while power_off sets Chassis state 5. Graceful shutdown acts GPIO 6. Check host status before issuing system reset 7. Set Watchdog Expire Action to None before power off and reset Signed-off-by: Charles Boyer Change-Id: Ie2720ee60d489c4160165c6827a78a400ae4d30b --- .../skeleton/obmc-libobmc-intf/gpio_defs.json | 6 ------ .../xyz.openbmc_project.State.Chassis.service | 18 ++++++++++++++++++ .../state/phosphor-state-manager_%.bbappend | 11 +++++++++++ 3 files changed, 29 insertions(+), 6 deletions(-) create mode 100644 meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service create mode 100644 meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend (limited to 'meta-fii/meta-kudo/recipes-phosphor') diff --git a/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json b/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json index 2dccd42e8..47cb2cc60 100644 --- a/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json +++ b/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json @@ -6,7 +6,6 @@ "power_up_outs": [ ], "reset_outs": [ - {"name": "BMC_S0_SYSRESET_N", "polarity": false} ] } }, @@ -16,11 +15,6 @@ "name": "PGOOD", "num": 200, "direction": "in" - }, - { - "name": "BMC_S0_SYSRESET_N", - "num": 65, - "direction": "out" } ] } diff --git a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service new file mode 100644 index 000000000..d8df56164 --- /dev/null +++ b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service @@ -0,0 +1,18 @@ +[Unit] +Description=Phosphor Chassis State Manager +Before=mapper-wait@-xyz-openbmc_project-state-chassis.service +Wants=obmc-mapper.target +After=obmc-mapper.target +After=org.openbmc.control.Power@0.service +After=host-powerctrl.service + +[Service] +ExecStartPre=/bin/sleep 5 +ExecStart=/usr/bin/phosphor-chassis-state-manager +Restart=always +Type=dbus +BusName=xyz.openbmc_project.State.Chassis + +[Install] +WantedBy=multi-user.target + diff --git a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend new file mode 100644 index 000000000..57e3aa6c8 --- /dev/null +++ b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend @@ -0,0 +1,11 @@ +FILESEXTRAPATHS:prepend:kudo := "${THISDIR}/${PN}:" + +SRC_URI:append:kudo = " \ + file://xyz.openbmc_project.State.Chassis.service \ + " + +do_install:append:kudo() { + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${WORKDIR}/xyz.openbmc_project.State.Chassis.service ${D}${systemd_system_unitdir}/xyz.openbmc_project.State.Chassis.service +} + -- cgit v1.2.3 From 17b216ac6c9762ea781786787c1ccc9199e291c3 Mon Sep 17 00:00:00 2001 From: Charles Boyer Date: Fri, 27 Aug 2021 16:09:03 -0500 Subject: meta-fii/meta-kudo: Customize chassis power cycle action Instead of a host or chassis restart for a Chassis PowerCycle, have both the BMC and host perform a hard reset. This requires changes to phosphor-state-manager to add the handling of xyz.openbmc_project.State.Chassis.Transition.PowerCycle. Currently, there is handling for On and Off, but not PowerCycle. Signed-off-by: Charles Boyer Change-Id: I3d934c47a68899b2fd8fcba966f8d92c97554a77 --- meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb | 7 +++++++ .../host/ampere-hostctrl/ampere-chassis-powercycle.service | 8 ++++++++ meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh | 8 +++++++- .../recipes-phosphor/state/phosphor-state-manager_%.bbappend | 2 ++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-powercycle.service (limited to 'meta-fii/meta-kudo/recipes-phosphor') diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb index 77ad9d5a1..327053cc9 100644 --- a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb +++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb @@ -14,6 +14,7 @@ SRC_URI = "file://ampere-host-shutdown.service \ file://ampere_power_util.sh \ file://ampere-chassis-poweroff.service \ file://ampere-chassis-poweron.service \ + file://ampere-chassis-powercycle.service \ file://ampere-host-shutdown-ack.service \ file://ampere-host-force-reset.service \ file://ampere-host-power-cycle.service \ @@ -28,6 +29,7 @@ SYSTEMD_SERVICE:${PN} = " \ ampere-host-reset.service \ ampere-chassis-poweroff.service \ ampere-chassis-poweron.service \ + ampere-chassis-powercycle.service \ ampere-host-shutdown-ack.service \ ampere-host-force-reset.service \ ampere-host-power-cycle.service \ @@ -68,6 +70,11 @@ CHASSIS_POWEROFF_TGTFMT = "obmc-chassis-poweroff@{0}.target" CHASSIS_POWEROFF_FMT = "../${CHASSIS_POWEROFF_SVC}:${CHASSIS_POWEROFF_TGTFMT}.requires/${CHASSIS_POWEROFF_SVC}" SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'CHASSIS_POWEROFF_FMT', 'OBMC_CHASSIS_INSTANCES')}" +CHASSIS_POWERCYCLE_SVC = "ampere-chassis-powercycle.service" +CHASSIS_POWERCYCLE_TGTFMT = "obmc-chassis-powercycle@{0}.target" +CHASSIS_POWERCYCLE_FMT = "../${CHASSIS_POWERCYCLE_SVC}:${CHASSIS_POWERCYCLE_TGTFMT}.requires/${CHASSIS_POWERCYCLE_SVC}" +SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'CHASSIS_POWERCYCLE_FMT', 'OBMC_CHASSIS_INSTANCES')}" + TMPL = "phosphor-gpio-monitor@.service" INSTFMT = "phosphor-gpio-monitor@{0}.service" TGT = "multi-user.target" diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-powercycle.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-powercycle.service new file mode 100644 index 000000000..c55fcd3db --- /dev/null +++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-powercycle.service @@ -0,0 +1,8 @@ +[Unit] +Description=Ampere Computing LLC Power OFF Chassis + +[Service] +RemainAfterExit=no +Type=oneshot +ExecStart=/usr/bin/env ampere_power_util.sh mb hotswap +SyslogIdentifier=ampere_power_util.sh diff --git a/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh b/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh index 8d58a0827..905c7f23a 100644 --- a/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh +++ b/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh @@ -4,7 +4,11 @@ source /usr/sbin/kudo-lib.sh # Usage of this utility function usage() { - echo "usage: power-util mb [on|off|graceful_shutdown|force_reset|shutdown_ack]"; + echo "usage: power-util mb [on|off|graceful_shutdown|force_reset|shutdown_ack|hotswap]"; +} + +hotswap() { + kudo.sh rst hotswap } force_off() { @@ -113,6 +117,8 @@ elif [ $2 = "off" ]; then force_off fi fi +elif [[ $2 == "hotswap" ]]; then + hotswap elif [[ $2 == "graceful_shutdown" ]]; then graceful_shutdown elif [ $2 == "force_reset" ]; then diff --git a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend index 57e3aa6c8..bbd60bb3f 100644 --- a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend +++ b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend @@ -1,5 +1,7 @@ FILESEXTRAPATHS:prepend:kudo := "${THISDIR}/${PN}:" +CHASSIS_ACTION_TARGETS:append:kudo = " powercycle" + SRC_URI:append:kudo = " \ file://xyz.openbmc_project.State.Chassis.service \ " -- cgit v1.2.3 From 6d7488dc7d017616953d65e65e0c6781928d9dcb Mon Sep 17 00:00:00 2001 From: Charles Boyer Date: Thu, 26 Aug 2021 16:24:20 -0500 Subject: meta-fii/meta-kudo: Revert host-check changes Kudo uses GPIO for checking the host status and does not use IPMI SMS. Therefore, this will remove the host-check feature as some of the recent recipe changes create stalls between host-state-manager and IPMI host control. Reference changes made in, https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-state-manager/+/45312 Signed-off-by: Charles Boyer Change-Id: I76b246dd003f94c95f194592647c4291014abf0b --- .../xyz.openbmc_project.State.Host.service | 16 +++++++++++++ .../state/phosphor-state-manager_%.bbappend | 26 ++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Host.service (limited to 'meta-fii/meta-kudo/recipes-phosphor') diff --git a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Host.service b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Host.service new file mode 100644 index 000000000..3455aeea2 --- /dev/null +++ b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Host.service @@ -0,0 +1,16 @@ +[Unit] +Description=Phosphor Host State Manager +Wants=mapper-wait@-xyz-openbmc_project-control-host0-auto_reboot.service +After=mapper-wait@-xyz-openbmc_project-control-host0-auto_reboot.service +Before=mapper-wait@-xyz-openbmc_project-state-host.service +Wants=obmc-mapper.target +After=obmc-mapper.target + +[Service] +ExecStart=/usr/bin/phosphor-host-state-manager +Restart=always +Type=dbus +BusName=xyz.openbmc_project.State.Host + +[Install] +WantedBy=multi-user.target diff --git a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend index bbd60bb3f..39106e8c1 100644 --- a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend +++ b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend @@ -2,12 +2,38 @@ FILESEXTRAPATHS:prepend:kudo := "${THISDIR}/${PN}:" CHASSIS_ACTION_TARGETS:append:kudo = " powercycle" +STATE_MGR_PACKAGES:remove:kudo = " ${PN}-host-check ${PN}-reset-sensor-states" +SYSTEMD_PACKAGES:remove:kudo = " ${PN}-reset-sensor-states" +RRECOMMENDS:${PN}-host:remove:kudo = " ${PN}-host-check ${PN}-reset-sensor-states" + +pkg_postinst:${PN}-obmc-targets:append:kudo() { + rm "$D$systemd_system_unitdir/obmc-host-shutdown@0.target.requires/obmc-chassis-poweroff@0.target" + + rm "$D$systemd_system_unitdir/obmc-host-warm-reboot@0.target.requires/xyz.openbmc_project.Ipmi.Internal.SoftPowerOff.service" + rm "$D$systemd_system_unitdir/obmc-host-warm-reboot@0.target.requires/obmc-host-force-warm-reboot@0.target" + + rm "$D$systemd_system_unitdir/obmc-host-reboot@0.target.requires/phosphor-reboot-host@0.service" + rm "$D$systemd_system_unitdir/obmc-host-reboot@0.target.requires/obmc-host-shutdown@0.target" + + rm "$D$systemd_system_unitdir/obmc-host-force-warm-reboot@0.target.requires/obmc-host-stop@0.target" + rm "$D$systemd_system_unitdir/obmc-host-force-warm-reboot@0.target.requires/phosphor-reboot-host@0.service" + + rm "$D$systemd_system_unitdir/obmc-host-reset@0.target.requires/phosphor-reset-host-running@0.service" + rm "$D$systemd_system_unitdir/obmc-host-quiesce@0.target.wants/phosphor-reset-sensor-states@0.service" + rm "$D$systemd_system_unitdir/obmc-host-stop@0.target.wants/phosphor-reset-sensor-states@0.service" +} + SRC_URI:append:kudo = " \ file://xyz.openbmc_project.State.Chassis.service \ + file://xyz.openbmc_project.State.Host.service \ " do_install:append:kudo() { install -d ${D}${systemd_system_unitdir} install -m 0644 ${WORKDIR}/xyz.openbmc_project.State.Chassis.service ${D}${systemd_system_unitdir}/xyz.openbmc_project.State.Chassis.service + install -m 0644 ${WORKDIR}/xyz.openbmc_project.State.Host.service ${D}${systemd_system_unitdir}/xyz.openbmc_project.State.Host.service + rm -f ${D}${systemd_system_unitdir}/phosphor-reset-host-check@.service + rm -f ${D}${systemd_system_unitdir}/phosphor-reset-sensor-states@.service + rm -f ${D}${systemd_system_unitdir}/phosphor-reset-host-running@.service } -- cgit v1.2.3