diff options
6 files changed, 101 insertions, 6 deletions
diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/plat-phosphor-multi-gpio-monitor.json b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/plat-phosphor-multi-gpio-monitor.json index 27a0ec47a2..3ae18801e9 100644 --- a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/plat-phosphor-multi-gpio-monitor.json +++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/plat-phosphor-multi-gpio-monitor.json @@ -256,9 +256,13 @@ "Name": "health-mmc", "ChipId": "5", "GpioNum": 7, - "EventMon": "RISING", + "EventMon": "BOTH", "Targets": { - "RISING": ["mmc-recovery.service"] + "RISING": [ + "mmc-recovery.service", + "smc-deassert-log@5_health-mmc.service"], + "FALLING": [ + "smc-assert-log@5_health-mmc.timer"] }, "Continue": true } diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-assert-log@.service b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-assert-log@.service new file mode 100644 index 0000000000..7d389f5f00 --- /dev/null +++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-assert-log@.service @@ -0,0 +1,7 @@ +[Unit] +Description=%i SMC Assert + +[Service] +Type=oneshot +ExecStart=/usr/libexec/phosphor-gpio-monitor/smc-event-logger "assert" "%i" +SyslogIdentifier=%i-smc-assert diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-assert-log@.timer b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-assert-log@.timer new file mode 100644 index 0000000000..8ccb445c0d --- /dev/null +++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-assert-log@.timer @@ -0,0 +1,7 @@ +[Unit] +Description=Timer to trigger SMC ready +[Timer] +OnActiveSec=5s +Unit=smc-assert-log@%i.service +[Install] +WantedBy=timers.target diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-deassert-log@.service b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-deassert-log@.service new file mode 100644 index 0000000000..c4626b90ba --- /dev/null +++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-deassert-log@.service @@ -0,0 +1,10 @@ +[Unit] +Description=%i SMC Deassert + +[Service] +Type=oneshot +ExecStartPre=/bin/systemctl stop smc-assert-log@%i.timer +ExecStart=/usr/libexec/phosphor-gpio-monitor/smc-event-logger "deassert" "%i" +SyslogIdentifier=%i-smc-deassert + +Conflicts=smc-assert-log@%i.timer diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-event-logger b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-event-logger new file mode 100644 index 0000000000..f509614e21 --- /dev/null +++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/smc-event-logger @@ -0,0 +1,58 @@ +#!/bin/bash + +# shellcheck source=meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor/logging-util +source /usr/libexec/phosphor-gpio-monitor/logging-util + +HELP=" +Usage: smc-event-logger <event> <id_gpio-name> +<event> is the power rail event to log, +e.g. assert / deassert. + +<id_gpio-name> is defined in json file, +e.g. 5_health-mmc +" + +# get assert or deassert message +if [ "$1" == "assert" ]; then + action="SMCFailed" +elif [ "$1" == "deassert" ]; then + action="SMCRestored" +fi + +# get gpio chip ID +MESSAGE=$2 +number="${MESSAGE%%_*}" + +# remove prefix from 0_xxxxxx to xxxxxx +GPIO_NAME="${MESSAGE#*_}" + +MSG_ID="xyz.openbmc_project.State.SMC.$action" +DEVICE_PATH="/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0" +STASH_FILE="/run/$GPIO_NAME.log_entry" + +if gpio_logging_valid "$number" "$1" ; then + case $1 in + "-h") + echo "$HELP" + ;; + + "assert") + if [ ! -s "$STASH_FILE" ]; then + /usr/bin/log-create "$MSG_ID" --json \ + "{ \"IDENTIFIER\": \"${DEVICE_PATH}\", \"FAILURE_TYPE\": \"${GPIO_NAME}\"}" \ + > "${STASH_FILE}" + fi + ;; + + "deassert") + if [ -s "${STASH_FILE}" ]; then + log-resolve -p "$(< "${STASH_FILE}")" + rm "${STASH_FILE}" + fi + /usr/bin/log-create "$MSG_ID" --json \ + "{ \"IDENTIFIER\": \"${DEVICE_PATH}\"}" + ;; + esac +fi + +exit 0 diff --git a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend index 42a33f8554..b2d5d490bb 100644 --- a/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend +++ b/meta-facebook/meta-harma/recipes-phosphor/gpio/phosphor-gpio-monitor_%.bbappend @@ -40,6 +40,10 @@ SRC_URI += "file://assert-post-end \ file://power-rail-event-logger \ file://prochot-assert-log.service \ file://prochot-deassert-log.service \ + file://smc-assert-log@.service \ + file://smc-assert-log@.timer \ + file://smc-deassert-log@.service \ + file://smc-event-logger \ file://thermtrip-assert-log.service \ file://thermtrip-deassert-log.service \ file://thermal-event-logger \ @@ -60,14 +64,17 @@ SYSTEMD_SERVICE:${PN} += " \ deassert-post-end.service \ deassert-reset-button.service \ deassert-uart-switch-button.service \ - mmc-recovery.service \ - multi-gpios-sys-init.service \ device-reinitial@.service \ fan-reload.service \ - thermtrip-assert-log.service \ - thermtrip-deassert-log.service \ + mmc-recovery.service \ + multi-gpios-sys-init.service \ prochot-assert-log.service \ prochot-deassert-log.service \ + smc-assert-log@.service \ + smc-assert-log@.timer \ + smc-deassert-log@.service \ + thermtrip-assert-log.service \ + thermtrip-deassert-log.service \ " do_install:append() { @@ -82,10 +89,12 @@ do_install:append() { install -d ${D}${systemd_system_unitdir}/ install -m 0644 ${UNPACKDIR}/*.service ${D}${systemd_system_unitdir}/ + install -m 0644 ${UNPACKDIR}/*.timer ${D}${systemd_system_unitdir} install -d ${D}${libexecdir}/${PN} install -m 0755 ${UNPACKDIR}/gpios-event-logger ${D}${libexecdir}/${PN}/ install -m 0755 ${UNPACKDIR}/power-rail-event-logger ${D}${libexecdir}/${PN}/ + install -m 0755 ${UNPACKDIR}/smc-event-logger ${D}${libexecdir}/${PN}/ install -m 0755 ${UNPACKDIR}/thermal-event-logger ${D}${libexecdir}/${PN}/ install -m 0755 ${UNPACKDIR}/vr-fault-event-logger ${D}${libexecdir}/${PN}/ |