summaryrefslogtreecommitdiff
path: root/meta-fii
diff options
context:
space:
mode:
authorCharles Boyer <Charles.Boyer@fii-usa.com>2021-08-24 19:25:03 +0300
committerCharles Boyer <Charles.Boyer@fii-usa.com>2021-11-09 01:10:53 +0300
commit1c51ca54c8206feaeaea61c1e4831b4a68ddb0e5 (patch)
tree8f986e6717079f8bc3a5f3f49babf2c41ebe31a1 /meta-fii
parentc6001349529450007d0430377fca88ca11d3a71e (diff)
downloadopenbmc-1c51ca54c8206feaeaea61c1e4831b4a68ddb0e5.tar.xz
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 <Charles.Boyer@fii-usa.com> Change-Id: Ie2720ee60d489c4160165c6827a78a400ae4d30b
Diffstat (limited to 'meta-fii')
-rw-r--r--meta-fii/meta-kudo/conf/machine/kudo.conf6
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb4
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service11
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown-ack.service12
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh110
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh7
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json6
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service18
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend11
9 files changed, 113 insertions, 72 deletions
diff --git a/meta-fii/meta-kudo/conf/machine/kudo.conf b/meta-fii/meta-kudo/conf/machine/kudo.conf
index e065f2086..b53cc46df 100644
--- a/meta-fii/meta-kudo/conf/machine/kudo.conf
+++ b/meta-fii/meta-kudo/conf/machine/kudo.conf
@@ -37,4 +37,8 @@ PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-kudo-apps"
PREFERRED_PROVIDER_virtual/bmc-update = "kudo-bmc-update"
PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-kudo-apps"
# Remove unneeded binaries from image
-IMAGE_FEATURES:remove = "obmc-health-monitor"
+IMAGE_FEATURES:remove = "obmc-health-monitor \
+ obmc-fan-control \
+ obmc-inventory \
+ "
+
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 f7daa94a8..77ad9d5a1 100644
--- a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb
@@ -14,7 +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-host-reset-ack.service \
+ file://ampere-host-shutdown-ack.service \
file://ampere-host-force-reset.service \
file://ampere-host-power-cycle.service \
"
@@ -28,7 +28,7 @@ SYSTEMD_SERVICE:${PN} = " \
ampere-host-reset.service \
ampere-chassis-poweroff.service \
ampere-chassis-poweron.service \
- ampere-host-reset-ack.service \
+ ampere-host-shutdown-ack.service \
ampere-host-force-reset.service \
ampere-host-power-cycle.service \
"
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service
deleted file mode 100644
index a5338797a..000000000
--- a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Ampere Computing LLC triggering reset ACK
-Conflicts=obmc-host-start@0.target
-OnFailure=obmc-chassis-powerreset@0.target
-
-[Service]
-RemainAfterExit=no
-Type=oneshot
-ExecStart=/usr/bin/env ampere_power_util.sh mb force_reset
-SyslogIdentifier=ampere_power_util.sh
-
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown-ack.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown-ack.service
new file mode 100644
index 000000000..fe05915ac
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown-ack.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Ampere Computing LLC host shutdown ACK
+Requires=op-wait-power-off@%i.service
+Before=op-wait-power-off@%i.service
+Conflicts=obmc-chassis-poweron@0.target
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb shutdown_ack
+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 420abfb8c..8d58a0827 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
@@ -1,24 +1,36 @@
#!/bin/bash
+
+source /usr/sbin/kudo-lib.sh
+
# Usage of this utility
function usage() {
- echo "usage: power-util mb [on|off|status|cycle|reset|graceful_shutdown|graceful_reset|force_reset]";
+ echo "usage: power-util mb [on|off|graceful_shutdown|force_reset|shutdown_ack]";
+}
+
+force_off() {
+ echo "Powering down Server"
+
+ set_gpio_ctrl 203 out 1
+ sleep 6
+ set_gpio_ctrl 203 out 0
}
power_off() {
- echo "Shutting down Server $2"
+ busctl set-property xyz.openbmc_project.Watchdog /xyz/openbmc_project/watchdog/host0 xyz.openbmc_project.State.Watchdog ExpireAction s xyz.openbmc_project.State.Watchdog.Action.None
busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.Off
}
power_on() {
- echo "Powering on Server $2"
- gpioset 6 11=1
+ echo "Powering on Server"
+
+ set_gpio_ctrl 203 out 1
sleep 1
- gpioset 6 11=0
+ set_gpio_ctrl 203 out 0
busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.On
}
power_status() {
- st=$(busctl get-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis CurrentPowerState | cut -d"." -f6)
+ st=$(busctl get-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis CurrentPowerState | cut -d "." -f6)
if [ "$st" == "On\"" ]; then
echo "on"
else
@@ -26,33 +38,53 @@ power_status() {
fi
}
-power_reset() {
- echo "Reset on server $2"
- busctl set-property xyz.openbmc_project.State.Host /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host RequestedHostTransition s xyz.openbmc_project.State.Host.Transition.Reboot
+host_status() {
+ BOOT_OK=$(get_gpio_ctrl 194)
+ S5_N=$(get_gpio_ctrl 204)
+ if [ $S5_N == 1 ] || [ $BOOT_OK == 1 ]; then
+ echo "on"
+ else
+ echo "off"
+ fi
+}
+
+timestamp() {
+ date +"%s" # current time
}
graceful_shutdown() {
if [ -f "/run/openbmc/host@0-request" ]; then
- echo "shutdown host immediately"
- gpioset 6 11=1
- sleep 6
- gpioset 6 11=0
+ echo "Shutdown host immediately"
power_off
else
echo "Triggering graceful shutdown"
- gpioset -l 2 6=0
+ mkdir /run/openbmc
+ echo "$(timestamp)" > "/run/openbmc/host@0-shutdown-req-time"
+ set_gpio_ctrl 70 out 0
sleep 3
- gpioset -l 2 6=1
- sleep 30s
- power_off
+ set_gpio_ctrl 70 out 1
fi
}
force_reset() {
- echo "Triggering sysreset pin"
- gpioset -l 2 1=0
- sleep 1
- gpioset -l 2 1=1
+ if [ $(host_status) == "on" ]; then
+ echo "Triggering sysreset pin"
+ busctl set-property xyz.openbmc_project.Watchdog /xyz/openbmc_project/watchdog/host0 xyz.openbmc_project.State.Watchdog ExpireAction s xyz.openbmc_project.State.Watchdog.Action.None
+ set_gpio_ctrl 65 out 0
+ sleep 1
+ set_gpio_ctrl 65 out 1
+ else
+ echo "Host is off, cannot reset."
+ fi
+}
+
+shutdown_ack() {
+ echo "Receive shutdown ACK triggered"
+ power_off
+
+ if [ -f "/run/openbmc/host@0-shutdown-req-time" ]; then
+ rm -rf "/run/openbmc/host@0-shutdown-req-time"
+ fi
}
if [ $# -lt 2 ]; then
@@ -69,49 +101,27 @@ if [ $1 != "mb" ]; then
fi
if [ $2 = "on" ]; then
+ sleep 3
if [ $(power_status) == "off" ]; then
power_on
fi
elif [ $2 = "off" ]; then
if [ $(power_status) == "on" ]; then
power_off
- fi
- # If any request of graceful reset, need to power on
- if [ -f "/run/openbmc/host@0-graceful-reset" ]; then
- sleep 20s
- power_on
- rm -f "/run/openbmc/host@0-graceful-reset"
- fi
-elif [ $2 == "cycle" ]; then
- if [ $(power_status) == "on" ]; then
- echo "Power cycling server"
- power_off
- sleep 20s
- power_on
- else
- echo "Host is already off, do nothing"
- fi
-elif [ $2 == "reset" ]; then
- if [ $(power_status) == "on" ]; then
- power_reset
- else
- echo "ERROR: Server not powered on"
+ sleep 6
+ if [ $(host_status) == "on" ]; then
+ force_off
+ fi
fi
elif [[ $2 == "graceful_shutdown" ]]; then
graceful_shutdown
-elif [ $2 == "graceful_reset" ]; then
- mkdir -p "/run/openbmc/"
- touch "/run/openbmc/host@0-graceful-reset"
- graceful_shutdown
- sleep 20s
-elif [ $2 == "status" ]; then
- power_status
elif [ $2 == "force_reset" ]; then
force_reset
+elif [ $2 == "shutdown_ack" ]; then
+ shutdown_ack
else
echo "Invalid parameter2=$2"
usage;
fi
exit 0;
-
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
index d9dafb476..bb35b29be 100644
--- a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
@@ -42,10 +42,13 @@ function fwbios() {
# Disable LPI mode NV_SI_CPU_LPI_FREQ_DISABLE for SCP 1.06 and older.
nvparm -s 0x1 -o 0x114090
+
# Disable LPI mode NV_SI_CPU_LPI_FREQ_DISABLE for SCP 1.07 and newer
nvparm -s 0x1 -o 0x02A8
- # TODO: Disabled toggling of SMPro heartbeat (require CPLD v 1.12.0.0+)
- # nvparm -s 0x1 -o 0x5F0638
+
+ # Disable toggling of SMPro heartbeat
+ nvparm -s 0x0 -o 0x5F0638
+
if [ $? -ne 0 ]; then
echo "Setting default nvparms failed " >&2
return 1
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
+}
+