summaryrefslogtreecommitdiff
path: root/meta-ampere
diff options
context:
space:
mode:
authorThang Q. Nguyen <thang@os.amperecomputing.com>2022-02-18 08:57:04 +0300
committerThang Q. Nguyen <thang@os.amperecomputing.com>2022-02-19 09:41:21 +0300
commitd57a5fb5d687e7bdda1a21b23e6aa2119312dcb6 (patch)
treefbceffafa759cb40a0b9158f2880ce00ba77b301 /meta-ampere
parentf0e9a31b089275a4e27e7ac65cb35a9607ede30e (diff)
downloadopenbmc-d57a5fb5d687e7bdda1a21b23e6aa2119312dcb6.tar.xz
meta-ampere: enable Host check GPIO interface
Enable host-gpios option in phosphor-state-manager to support Host state checking when BMC reboots. Also updateampere_host_check.sh to check Host State via GPIO interface Tested: 1. Define host0-ready into device tree. 2. Power On the Host. Reboot BMC, then check if CurrentHostState shows Running. 3. Power OFF the Host. Reboot BMC, then check if CurrentHostState shows Off. Signed-off-by: Thang Q. Nguyen <thang@os.amperecomputing.com> Signed-off-by: Thang Tran <thuutran@amperecomputing.com> Change-Id: I0331dfa340eb5bba201475ab9cada42e0946c8f8
Diffstat (limited to 'meta-ampere')
-rw-r--r--meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl.bb (renamed from meta-ampere/meta-common/recipes-ac01/host/ampere-hostctrl.bb)15
-rw-r--r--meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere-host-force-reset@.service (renamed from meta-ampere/meta-common/recipes-ac01/host/ampere-hostctrl/ampere-host-force-reset@.service)0
-rw-r--r--meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere-host-on-host-check@.service (renamed from meta-ampere/meta-common/recipes-ac01/host/ampere-hostctrl/ampere-host-on-host-check@.service)4
-rw-r--r--meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere_host_check.sh29
-rw-r--r--meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend19
-rw-r--r--meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils.bb2
-rw-r--r--meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/ampere_host_check.sh38
7 files changed, 61 insertions, 46 deletions
diff --git a/meta-ampere/meta-common/recipes-ac01/host/ampere-hostctrl.bb b/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl.bb
index 03f0d58adf..b0498f8ebb 100644
--- a/meta-ampere/meta-common/recipes-ac01/host/ampere-hostctrl.bb
+++ b/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl.bb
@@ -7,17 +7,19 @@ LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7ca
inherit systemd
inherit obmc-phosphor-systemd
+RDEPENDS:${PN} = "bash"
S = "${WORKDIR}"
SRC_URI = " \
- file://ampere-host-force-reset@.service \
- file://ampere-host-on-host-check@.service \
+ file://ampere-host-force-reset@.service \
+ file://ampere-host-on-host-check@.service \
+ file://ampere_host_check.sh \
"
SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE:${PN} = " \
- ampere-host-force-reset@.service \
- "
+ ampere-host-force-reset@.service \
+ "
# append force reboot
HOST_WARM_REBOOT_FORCE_TGT = "ampere-host-force-reset@.service"
@@ -33,3 +35,8 @@ HOST_ON_RESET_HOSTTGTFMT = "obmc-host-startmin@{0}.target"
HOST_ON_RESET_HOSTFMT = "../${HOST_ON_RESET_HOSTTMPL}:${HOST_ON_RESET_HOSTTGTFMT}.requires/${HOST_ON_RESET_HOSTINSTMPL}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'HOST_ON_RESET_HOSTFMT', 'OBMC_HOST_INSTANCES')}"
SYSTEMD_SERVICE:${PN} += "${HOST_ON_RESET_HOSTTMPL}"
+
+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-ac01/host/ampere-hostctrl/ampere-host-force-reset@.service b/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere-host-force-reset@.service
index 6e03c8b816..6e03c8b816 100644
--- a/meta-ampere/meta-common/recipes-ac01/host/ampere-hostctrl/ampere-host-force-reset@.service
+++ b/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere-host-force-reset@.service
diff --git a/meta-ampere/meta-common/recipes-ac01/host/ampere-hostctrl/ampere-host-on-host-check@.service b/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere-host-on-host-check@.service
index 36e5a642ca..76980524f5 100644
--- a/meta-ampere/meta-common/recipes-ac01/host/ampere-hostctrl/ampere-host-on-host-check@.service
+++ b/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere-host-on-host-check@.service
@@ -1,7 +1,7 @@
[Unit]
Description=Check Host%i status before obmc-host-startmin
-Wants=obmc-host-started@%i.target
After=obmc-host-started@%i.target
+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
@@ -10,4 +10,4 @@ ConditionPathExists=!/run/openbmc/host@%i-on
[Service]
Type=oneshot
-ExecStart=/usr/sbin/ampere_host_check.sh 1 0
+ExecStart=/usr/sbin/ampere_host_check.sh
diff --git a/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere_host_check.sh b/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere_host_check.sh
new file mode 100644
index 0000000000..532b1399a8
--- /dev/null
+++ b/meta-ampere/meta-common/recipes-phosphor/host/ampere-hostctrl/ampere_host_check.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+
+# Check current Host status. Do nothing when the Host is currently ON
+st=$(busctl get-property xyz.openbmc_project.State.Host \
+ /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host \
+ CurrentHostState | cut -d"." -f6)
+if [ "$st" == "Running\"" ]; then
+ exit 0
+fi
+
+# Time out checking for Host ON is 60s
+cnt=60
+while [ "$cnt" -gt 0 ];
+do
+ cnt=$((cnt - 1))
+ st=$(busctl call xyz.openbmc_project.State.HostCondition.Gpio \
+ /xyz/openbmc_project/Gpios/host0 org.freedesktop.DBus.Properties \
+ Get ss xyz.openbmc_project.Condition.HostFirmware \
+ CurrentFirmwareCondition | cut -d"." -f6)
+ if [ "$st" == "Running\"" ]; then
+ mkdir -p /run/openbmc
+ echo "Creating /run/openbmc/host@0-on"
+ touch /run/openbmc/host@0-on
+ exit 0
+ fi
+ sleep 1
+done
+
+exit 1
diff --git a/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend
index 03df6a30e9..6ef9ac5bb7 100644
--- a/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend
+++ b/meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend
@@ -4,3 +4,22 @@ DEPS_CFG = "resetreason.conf"
DEPS_TGT = "phosphor-discover-system-state@.service"
SYSTEMD_OVERRIDE:${PN}-discover:append = "${DEPS_CFG}:${DEPS_TGT}.d/${DEPS_CFG}"
+DEPENDS += "gpioplus libgpiod"
+
+EXTRA_OEMESON:append = " -Dhost-gpios=enabled"
+
+FILES:${PN} += "${systemd_system_unitdir}/*"
+FILES:${PN}-host += "${bindir}/phosphor-host-condition-gpio"
+SYSTEMD_SERVICE:${PN}-host += "phosphor-host-condition-gpio@.service"
+
+pkg_postinst:${PN}-obmc-targets:prepend() {
+ mkdir -p $D$systemd_system_unitdir/multi-user.target.requires
+ LINK="$D$systemd_system_unitdir/multi-user.target.requires/phosphor-host-condition-gpio@0.service"
+ TARGET="../phosphor-host-condition-gpio@.service"
+ ln -s $TARGET $LINK
+}
+
+pkg_prerm:${PN}-obmc-targets:prepend() {
+ LINK="$D$systemd_system_unitdir/multi-user.target.requires/phosphor-host-condition-gpio@0.service"
+ rm $LINK
+}
diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils.bb b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils.bb
index 546315b7e1..21bdb4bf0f 100644
--- a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils.bb
+++ b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils.bb
@@ -8,7 +8,6 @@ SRC_URI = " \
file://gpio-defs.sh \
file://gpio-lib.sh \
file://ampere_power_util.sh \
- file://ampere_host_check.sh \
file://ampere_add_redfishevent.sh \
"
@@ -19,6 +18,5 @@ do_install() {
install -m 0755 ${WORKDIR}/gpio-lib.sh ${D}/${sbindir}/
install -m 0755 ${WORKDIR}/gpio-defs.sh ${D}/${sbindir}/
install -m 0755 ${WORKDIR}/ampere_power_util.sh ${D}/${sbindir}/
- install -m 0755 ${WORKDIR}/ampere_host_check.sh ${D}/${sbindir}/
install -m 0755 ${WORKDIR}/ampere_add_redfishevent.sh ${D}/${sbindir}/
}
diff --git a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/ampere_host_check.sh b/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/ampere_host_check.sh
deleted file mode 100644
index 024336d208..0000000000
--- a/meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/ampere_host_check.sh
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-# shellcheck source=/dev/null
-source /usr/sbin/gpio-defs.sh
-source /usr/sbin/gpio-lib.sh
-
-createFile=$1
-
-# Check current Host status. Do nothing when the Host is currently ON
-st=$(busctl get-property xyz.openbmc_project.State.Host \
- /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host \
- CurrentHostState | cut -d"." -f6)
-if [ "$st" == "Running\"" ]; then
- exit 0
-fi
-
-# Time out to check S0_FW_BOOT_OK is 60 seconds
-cnt=60
-val=0
-while [ "$cnt" -gt 0 ];
-do
- val=$(gpio_get_val "$S0_CPU_FW_BOOT_OK")
- cnt=$((cnt - 1))
- echo "$cnt S0_CPU_FW_BOOT_OK = $val"
- if [ "$val" == 1 ]; then
- # Sleep 5 second before the host is ready
- sleep 5
- if [ "$createFile" == 1 ]; then
- mkdir -p /run/openbmc
- echo "Creating /run/openbmc/host@0-on"
- touch /run/openbmc/host@0-on
- fi
- exit 0
- fi
- sleep 1
-done
-
-exit 1