diff options
author | Peter Yin <peter.yin@quantatw.com> | 2025-07-14 12:40:04 +0300 |
---|---|---|
committer | Amithash Prasad <amithash@meta.com> | 2025-07-22 21:34:31 +0300 |
commit | 6c5cc06ea294b36bafb417b48fc874d45f98fa0a (patch) | |
tree | 0a74df1803b93d6a7c35a77fe3cafc15560c87fa | |
parent | fdc0479b63181f2a0f497ad7fa07e960694602a9 (diff) | |
download | openbmc-6c5cc06ea294b36bafb417b48fc874d45f98fa0a.tar.xz |
meta-facebook: harma: add SMC event log for health-mmc monitoring
Monitor health-mmc status to log an SMC event when issues are detected
or when MMC update completes, improving system observability.
'''
"4": {
"additional_data": {
"FAILURE_TYPE": "health-mmc",
"IDENTIFIER": "/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0",
"_CODE_FILE": "/usr/src/debug/phosphor-logging/1.0+git/log_create_main.cpp",
"_CODE_FUNC": "int generate_event(const std::string&, const nlohmann::json_abi_v3_11_3::json&)",
"_CODE_LINE": "34",
"_PID": "1076"
},
"event_id": "",
"message": "xyz.openbmc_project.State.SMC.SMCFailed",
"redfish": {
"args": [
"/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0"
],
"id": "OpenBMC_StateSMC.SMCFailed",
"message": "The Satellite Management Controller '/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0' is in a failure state."
},
"resolution": "",
"resolved": true,
"severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
"timestamp": "2025-07-14T09:39:10.403000000Z",
"updated_timestamp": "2025-07-14T09:39:25.462000000Z"
},
"5": {
"additional_data": {
"IDENTIFIER": "/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0",
"_CODE_FILE": "/usr/src/debug/phosphor-logging/1.0+git/log_create_main.cpp",
"_CODE_FUNC": "int generate_event(const std::string&, const nlohmann::json_abi_v3_11_3::json&)",
"_CODE_LINE": "34",
"_PID": "1107"
},
"event_id": "",
"message": "xyz.openbmc_project.State.SMC.SMCRestored",
"redfish": {
"args": [
"/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0"
],
"id": "OpenBMC_StateSMC.SMCRestored",
"message": "The Satellite Management Controller '/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/smc0' is in a restored state."
},
"resolution": "",
"resolved": false,
"severity": "xyz.openbmc_project.Logging.Entry.Level.Informational",
"timestamp": "2025-07-14T09:39:26.963000000Z",
"updated_timestamp": "2025-07-14T09:39:26.963000000Z"
},
'''
Change-Id: I71bbdcc5ba361543e373e5c43e722f0f14a54239
Signed-off-by: Peter Yin <peter.yin@quantatw.com>
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}/ |