diff options
author | Thang Q. Nguyen <thang@os.amperecomputing.com> | 2022-02-18 08:57:04 +0300 |
---|---|---|
committer | Thang Q. Nguyen <thang@os.amperecomputing.com> | 2022-02-19 09:41:21 +0300 |
commit | d57a5fb5d687e7bdda1a21b23e6aa2119312dcb6 (patch) | |
tree | fbceffafa759cb40a0b9158f2880ce00ba77b301 /meta-ampere | |
parent | f0e9a31b089275a4e27e7ac65cb35a9607ede30e (diff) | |
download | openbmc-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.sh | 29 | ||||
-rw-r--r-- | meta-ampere/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend | 19 | ||||
-rw-r--r-- | meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils.bb | 2 | ||||
-rw-r--r-- | meta-ampere/meta-jade/recipes-ampere/platform/mtjade-utils/ampere_host_check.sh | 38 |
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 |