diff options
author | Raptor Engineering Development Team <support@raptorengineering.com> | 2019-04-19 08:35:02 +0000 |
---|---|---|
committer | Timothy Pearson <tpearson@raptorengineering.com> | 2019-04-25 08:02:05 +0000 |
commit | c6a41036bb2f2fedb9a37ab3e1721839110b32a1 (patch) | |
tree | 5d3723e067adac7eaa4843d7ef24fbd82dc2aceb /meta-rcs/meta-talos/recipes-phosphor | |
parent | fb83e16d3529ade1057088c33faeb4ea7ff922ed (diff) | |
download | blackbird-openbmc-c6a41036bb2f2fedb9a37ab3e1721839110b32a1.tar.gz blackbird-openbmc-c6a41036bb2f2fedb9a37ab3e1721839110b32a1.zip |
[Subtree] Bring openbmc machines to top level
Diffstat (limited to 'meta-rcs/meta-talos/recipes-phosphor')
74 files changed, 8175 insertions, 0 deletions
diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control.bb b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control.bb new file mode 100644 index 000000000..e74682dba --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control.bb @@ -0,0 +1,40 @@ +SUMMARY = "Talos II AVSBus control" +PR = "r1" + +inherit obmc-phosphor-systemd +inherit obmc-phosphor-license + +RDEPENDS_${PN} += "i2c-tools bash" + +S = "${WORKDIR}" +SRC_URI += "file://avsbus-workaround.sh \ + file://avsbus-enable.sh \ + file://avsbus-disable.sh" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/avsbus-workaround.sh \ + ${D}${bindir}/avsbus-workaround.sh + install -m 0755 ${WORKDIR}/avsbus-disable.sh \ + ${D}${bindir}/avsbus-disable.sh + install -m 0755 ${WORKDIR}/avsbus-enable.sh \ + ${D}${bindir}/avsbus-enable.sh +} + +TMPL_EN= "avsbus-enable@.service" +TMPL_DIS= "avsbus-disable@.service" +TMPL_WA= "avsbus-workaround@.service" +INSTFMT_EN= "avsbus-enable@{0}.service" +INSTFMT_DIS= "avsbus-disable@{0}.service" +INSTFMT_WA= "avsbus-workaround@{0}.service" +TGTFMT = "obmc-chassis-poweron@{0}.target" +FMT_EN = "../${TMPL_EN}:${TGTFMT}.requires/${INSTFMT_EN}" +FMT_DIS = "../${TMPL_DIS}:${TGTFMT}.requires/${INSTFMT_DIS}" +FMT_WA = "../${TMPL_WA}:${TGTFMT}.requires/${INSTFMT_WA}" + +SYSTEMD_SERVICE_${PN} += "${TMPL_EN}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_EN', 'OBMC_CHASSIS_INSTANCES')}" +SYSTEMD_SERVICE_${PN} += "${TMPL_DIS}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_DIS', 'OBMC_CHASSIS_INSTANCES')}" +SYSTEMD_SERVICE_${PN} += "${TMPL_WA}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT_WA', 'OBMC_CHASSIS_INSTANCES')}" diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh new file mode 100644 index 000000000..7ee4dfcd1 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# Get CPU count +CPU_COUNT=1 +STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +CPU_PRESENT_FLAG_N=$(( ${STATUS_FLAGS} & 0x20 )) +if [ $CPU_PRESENT_FLAG_N != 0 ]; then + CPU_COUNT=$(( ${CPU_COUNT} + 1 )) +fi +echo "Found $CPU_COUNT CPU(s)" + +i2cset -y 4 0x70 0x00 0x00 b # VDD 0 - PAGE set +i2cset -y 4 0x70 0x01 0x80 b # VDD 0 +i2cset -y 4 0x70 0x00 0x01 b # VCS 0 - PAGE set +i2cset -y 4 0x70 0x01 0x80 b # VCS 0 +i2cset -y 4 0x70 0x00 0x00 b # VCS 0 - PAGE reset +i2cset -y 4 0x73 0x00 0x00 b # VDN 0 - PAGE set +i2cset -y 4 0x73 0x01 0x80 b # VDN 0 + +if [ $CPU_COUNT -gt 1 ]; then + i2cset -y 5 0x70 0x00 0x00 b # VDD 1 - PAGE set + i2cset -y 5 0x70 0x01 0x80 b # VDD 1 + i2cset -y 5 0x70 0x00 0x01 b # VCS 1 - PAGE set + i2cset -y 5 0x70 0x01 0x80 b # VCS 1 + i2cset -y 5 0x70 0x00 0x00 b # VCS 1 - PAGE reset + i2cset -y 5 0x73 0x00 0x00 b # VDN 1 - PAGE set + i2cset -y 5 0x73 0x01 0x80 b # VDN 1 +fi diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service new file mode 100644 index 000000000..424aa2394 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-disable@.service @@ -0,0 +1,16 @@ +[Unit] +Description=Disable the AVS bus on the VRMs +Wants=avsbus-workaround@%i.service +After=avsbus-workaround@%i.service +Before=vrm-control@%i.service +Conflicts=obmc-chassis-poweroff@%i.target +ConditionPathExists=!/run/openbmc/chassis@%i-on + +[Service] +ExecStart=/usr/bin/env avsbus-disable.sh +SyslogIdentifier=avsbus-disable.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-poweron@%i.target diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh new file mode 100644 index 000000000..2621c9e24 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# Get CPU count +CPU_COUNT=1 +STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +CPU_PRESENT_FLAG_N=$(( ${STATUS_FLAGS} & 0x20 )) +if [ $CPU_PRESENT_FLAG_N != 0 ]; then + CPU_COUNT=$(( ${CPU_COUNT} + 1 )) +fi +echo "Found $CPU_COUNT CPU(s)" + +i2cset -y 4 0x70 0x00 0x00 b # VDD 0 - PAGE set +i2cset -y 4 0x70 0x01 0xB0 b # VDD 0 +i2cset -y 4 0x70 0x00 0x01 b # VCS 0 - PAGE set +i2cset -y 4 0x70 0x01 0xB0 b # VCS 0 +i2cset -y 4 0x70 0x00 0x00 b # VCS 0 - PAGE reset +i2cset -y 4 0x73 0x00 0x00 b # VDN 0 - PAGE set +i2cset -y 4 0x73 0x01 0xB0 b # VDN 0 + +if [ $CPU_COUNT -gt 1 ]; then + i2cset -y 5 0x70 0x00 0x00 b # VDD 1 - PAGE set + i2cset -y 5 0x70 0x01 0xB0 b # VDD 1 + i2cset -y 5 0x70 0x00 0x01 b # VCS 1 - PAGE set + i2cset -y 5 0x70 0x01 0xB0 b # VCS 1 + i2cset -y 5 0x70 0x00 0x00 b # VCS 1 - PAGE reset + i2cset -y 5 0x73 0x00 0x00 b # VDN 1 - PAGE set + i2cset -y 5 0x73 0x01 0xB0 b # VDN 1 +fi diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service new file mode 100644 index 000000000..4b0b19e8b --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-enable@.service @@ -0,0 +1,17 @@ +[Unit] +Description=Enable the AVS bus on VRMs +Wants=vrm-control@%i.service +After=vrm-control@%i.service +Wants=obmc-power-start@%i.target +Before=obmc-power-start@%i.target +Conflicts=obmc-chassis-poweroff@%i.target +ConditionPathExists=!/run/openbmc/chassis@%i-on + +[Service] +ExecStart=/usr/bin/env avsbus-enable.sh +SyslogIdentifier=avsbus-enable.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-poweron@%i.target diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh new file mode 100644 index 000000000..882f1637c --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +# Get CPU count +CPU_COUNT=1 +STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +CPU_PRESENT_FLAG_N=$(( ${STATUS_FLAGS} & 0x20 )) +if [ $CPU_PRESENT_FLAG_N != 0 ]; then + CPU_COUNT=$(( ${CPU_COUNT} + 1 )) +fi +echo "Found $CPU_COUNT CPU(s)" + +i2cset -y 4 0x28 0x2E 0x23 b # VDD/VCS 0 +i2cset -y 4 0x2B 0x2E 0x23 b # VDN 0 +if [ $CPU_COUNT -gt 1 ]; then + i2cset -y 5 0x28 0x2E 0x23 b # VDD/VCS 1 + i2cset -y 5 0x2B 0x2E 0x23 b # VDN 1 +fi diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service new file mode 100644 index 000000000..e7e00c046 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/avsbus-control/avsbus-workaround@.service @@ -0,0 +1,18 @@ +[Unit] +Description=Perform AVS bus workaround on VRMs +Wants=op-power-start@.service +After=op-power-start@.service +Wants=op-wait-power-on@%i.service +After=op-wait-power-on@%i.service +Before=avsbus-disable@%i.service +Conflicts=obmc-chassis-poweroff@%i.target +ConditionPathExists=!/run/openbmc/chassis@%i-on + +[Service] +ExecStart=/usr/bin/env avsbus-workaround.sh +SyslogIdentifier=avsbus-workaround.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-poweron@%i.target diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control.bb b/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control.bb new file mode 100644 index 000000000..e2eb9f3b9 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control.bb @@ -0,0 +1,26 @@ +SUMMARY = "Talos II VRM Overrides" +DESCRIPTION = "Sets Talos II VRMs to custom voltages" +PR = "r1" + +inherit obmc-phosphor-systemd +inherit obmc-phosphor-license + +RDEPENDS_${PN} += "i2c-tools bash" + +S = "${WORKDIR}" +SRC_URI += "file://vrm-control.sh \ + file://vrm.sh" + +do_install() { + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/vrm.sh ${D}${bindir}/vrm.sh + install -m 0755 ${WORKDIR}/vrm-control.sh ${D}${bindir}/vrm-control.sh +} + +TMPL = "vrm-control@.service" +INSTFMT = "vrm-control@{0}.service" +TGTFMT = "obmc-chassis-poweron@{0}.target" +FMT = "../${TMPL}:${TGTFMT}.requires/${INSTFMT}" + +SYSTEMD_SERVICE_${PN} += "${TMPL}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'FMT', 'OBMC_CHASSIS_INSTANCES')}" diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control.sh b/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control.sh new file mode 100644 index 000000000..be23d4691 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control.sh @@ -0,0 +1,137 @@ +#!/bin/bash +# ######################################################### +# Script to run on Talos II BMC to read/set vrm voltages + + +# ######################################################### +d2v () { +# usage: d2v <decimal volts> + +echo $1 | awk '{print $1 * 256 + .5}' | cut -d '.' -f 1 +} + + +# ######################################################### +v2d () { +# usage: v2d <hex val> + +printf " %0.3fV" `echo $1 | awk '{print $1 / 256}'` +} + + +# ######################################################### +i2d () { +# usage: i2d <hex val> <current divisor> + +# parse current mantisa and exponent +# format: SEEE ESMM MMMM MMMM +let e=$1/0x800 +let esign=e/0x10 +let m=$1\&0x07FF +let msign=m/0x0400 + +if [ $msign -eq 1 ] +then + # calc ones compliment + let m=($m^0x07FF)+1 + m="-$m" +fi +if [ $esign -eq 1 ] +then + # calc ones compliment + let e=(e^0x1F)+1 + e="-$e" +fi +printf " %0.3fA\n" `echo $m $e $2 | awk '{print ($1 * 2^$2) / $3}'` +} + + +# ######################################################### +rw_vc () { +# usage: rw_vc <bus> <addr> <current divisor> <channel> <value> + +# select channel +if [ $4 != "x" ] +then + i2cset -y $1 $2 0 $4 b +fi + +# write new voltage set point +if [ ! -e $5 ] +then + i2cset -y $1 $2 0x21 `d2v $5` w +fi + +# print voltage set point +v2d `i2cget -y $1 $2 0x21 w` + +# print voltage +v2d `i2cget -y $1 $2 0x8B w` + +# print current +i2d `i2cget -y $1 $2 0x8C w` $3 + +# default back to channel 0 +if [ $4 != "x" ] +then + i2cset -y $1 $2 0 0 b +fi +} + + +# ######################################################### +# Main + +if [ -e $1 ] +then + $0 vdda vcsa vdna vioa vddb vcsb vdnb viob + exit +fi + +if [ $1 == "-h" ] +then + echo " Usage: vrm [<rail>=[value] [<rail>=[value]] ...]" + echo " rail: vdda vcsa vdna vioa vddb vcsb vdnb viob" + echo " value: volts" + echo + echo " e.g., vrm vioa=1.0 viob=1.0" + echo + exit +fi + +echo "rail set read current" +echo "------- ------- ------- -------" +for param in ${@:1} +do + rail=`echo $param | cut -d'=' -f 1` + val=`echo ${param}= | cut -d'=' -f 2` + echo -n "$rail" + case "$rail" in + vdda) + rw_vc 4 0x70 2 0 $val + ;; + vddb) + rw_vc 5 0x70 2 0 $val + ;; + vcsa) + rw_vc 4 0x70 4 1 $val + ;; + vcsb) + rw_vc 5 0x70 4 1 $val + ;; + vdna) + rw_vc 4 0x73 2 0 $val + ;; + vdnb) + rw_vc 5 0x73 2 0 $val + ;; + vioa) + rw_vc 4 0x73 2 1 $val + ;; + viob) + rw_vc 5 0x73 2 1 $val + ;; + *) + echo " non-existant" + esac +done diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control@.service b/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control@.service new file mode 100644 index 000000000..5d072ad5f --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm-control@.service @@ -0,0 +1,15 @@ +[Unit] +Description=Apply voltage overrides to VRMs +Wants=avsbus-disable@%i.service +After=avsbus-disable@%i.service +Before=avsbus-enable@%i.service +Conflicts=obmc-chassis-poweroff@%i.target + +[Service] +ExecStart=/usr/bin/env vrm.sh +SyslogIdentifier=vrm.sh +Type=oneshot +RemainAfterExit=yes + +[Install] +WantedBy=obmc-chassis-poweron@%i.target diff --git a/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm.sh b/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm.sh new file mode 100644 index 000000000..86d5f1dd6 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/chassis/vrm-control/vrm.sh @@ -0,0 +1,22 @@ +#!/bin/sh + +# Get CPU count +CPU_COUNT=1 +STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +if [ $? != 0 ]; then + STATUS_FLAGS=$(i2cget -y 12 0x31 0x7) +fi +CPU_PRESENT_FLAG_N=$(( ${STATUS_FLAGS} & 0x20 )) +if [ $CPU_PRESENT_FLAG_N != 0 ]; then + CPU_COUNT=$(( ${CPU_COUNT} + 1 )) +fi +echo "Found $CPU_COUNT CPU(s)" + +if [ $CPU_COUNT -gt 1 ]; then + vrm-control.sh vdna=1.0 vdnb=1.0 +else + vrm-control.sh vdna=1.0 +fi diff --git a/meta-rcs/meta-talos/recipes-phosphor/console/obmc-console.bbappend b/meta-rcs/meta-talos/recipes-phosphor/console/obmc-console.bbappend new file mode 100644 index 000000000..5acf3af89 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/console/obmc-console.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend_talos := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-talos/recipes-phosphor/console/obmc-console/obmc-console.conf b/meta-rcs/meta-talos/recipes-phosphor/console/obmc-console/obmc-console.conf new file mode 100644 index 000000000..a5ba3f328 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/console/obmc-console/obmc-console.conf @@ -0,0 +1,4 @@ +lpc-address = 0x3f8 +sirq = 4 +local-tty = ttyS0 +local-tty-baud = 115200 diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%.bbappend b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%.bbappend new file mode 100644 index 000000000..76aad1558 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%.bbappend @@ -0,0 +1,33 @@ +FILESEXTRAPATHS_append := "${THISDIR}/${PN}:" + +# Package configuration +FAN_PACKAGES += " \ + phosphor-cooling-type \ +" + +PACKAGECONFIG += "cooling-type" + +RDEPENDS_phosphor-cooling-type += "libevdev" + +TMPL_COOLING = "phosphor-cooling-type@.service" +INSTFMT_COOLING = "phosphor-cooling-type@{0}.service" +COOLING_TGT = "${SYSTEMD_DEFAULT_TARGET}" +FMT_COOLING = "../${TMPL_COOLING}:${COOLING_TGT}.requires/${INSTFMT_COOLING}" + +FILES_phosphor-cooling-type = "${sbindir}/phosphor-cooling-type" +SYSTEMD_SERVICE_phosphor-cooling-type += "${TMPL_COOLING}" +SYSTEMD_LINK_phosphor-cooling-type += "${@compose_list(d, 'FMT_COOLING', 'OBMC_CHASSIS_INSTANCES')}" + +COOLING_ENV_FMT = "obmc/phosphor-fan/phosphor-cooling-type-{0}.conf" + +SYSTEMD_ENVIRONMENT_FILE_phosphor-cooling-type += "${@compose_list(d, 'COOLING_ENV_FMT', 'OBMC_CHASSIS_INSTANCES')}" + +#These services are protected by the watchdog +SYSTEMD_OVERRIDE_phosphor-fan-control-init += "fan-watchdog-monitor.conf:phosphor-fan-control-init@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-control += "fan-watchdog-monitor.conf:phosphor-fan-control@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor-init += "fan-watchdog-monitor.conf:phosphor-fan-monitor-init@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor += "fan-watchdog-monitor.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-monitor.conf" + +#These services need to be stopped when watchdog expires +SYSTEMD_OVERRIDE_phosphor-fan-control += "fan-watchdog-conflicts.conf:phosphor-fan-control@0.service.d/fan-watchdog-conflicts.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor += "fan-watchdog-conflicts.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-conflicts.conf" diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/fan-watchdog-conflicts.conf b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/fan-watchdog-conflicts.conf new file mode 100644 index 000000000..90b1e810e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/fan-watchdog-conflicts.conf @@ -0,0 +1,2 @@ +[Unit] +Conflicts=obmc-fan-watchdog-takeover.target diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/fan-watchdog-monitor.conf b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/fan-watchdog-monitor.conf new file mode 100644 index 000000000..240336343 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/fan-watchdog-monitor.conf @@ -0,0 +1,5 @@ +[Unit] +#These overrides allow the fan watchdog to take over when this service dies +OnFailure=talos-fan-watchdog-monitor@%n.service +StartLimitIntervalSec=5 +StartLimitBurst=3 diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/obmc/phosphor-fan/phosphor-cooling-type-0.conf b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/obmc/phosphor-fan/phosphor-cooling-type-0.conf new file mode 100644 index 000000000..6b74301d1 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/obmc/phosphor-fan/phosphor-cooling-type-0.conf @@ -0,0 +1,6 @@ +OBJPATH="--path=/system/chassis" +AIR="--air" +WATER="" +DEVICE="" +CODE="" + diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/phosphor-cooling-type@.service b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/phosphor-cooling-type@.service new file mode 100644 index 000000000..9a4f8df42 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan%/phosphor-cooling-type@.service @@ -0,0 +1,13 @@ +[Unit] +Description=Phosphor Cooling Type +Wants=mapper-wait@-xyz-openbmc_project-inventory.service +After=mapper-wait@-xyz-openbmc_project-inventory.service +ConditionPathExists={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf + +[Service] +EnvironmentFile={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf +ExecStart=/usr/bin/env phosphor-cooling-type ${{OBJPATH}} ${{AIR}} ${{WATER}} ${{DEVICE}} ${{CODE}} +SyslogIdentifier=phosphor-cooling-type + +[Install] +RequiredBy={SYSTEMD_DEFAULT_TARGET} diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-events-config-native.bbappend b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-events-config-native.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-events-config-native.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-events-config-native/events.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-events-config-native/events.yaml new file mode 100644 index 000000000..7efc2fefa --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-events-config-native/events.yaml @@ -0,0 +1,751 @@ +groups: + - name: air_cooled_zone0_fans + description: Group of fan inventory objects for air cooled zone 0 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan4 + - name: water_and_air_cooled_zone0_fans + description: Group of fan inventory objects for water/air cooled zone 0 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan4 + - name: air_cooled_zone1_fans + description: Group of fan inventory objects for air cooled zone 1 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan5 + - name: air_cooled_zone2_fans + description: Group of fan inventory objects for air cooled zone 2 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan0 + - /system/chassis/motherboard/fan1 + - /system/chassis/motherboard/fan2 + - /system/chassis/motherboard/fan3 + - name: water_and_air_cooled_zone2_fans + description: Group of fan inventory objects for water/air cooled zone 2 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan0 + - name: zone2_ambient + description: Group of ambient temperature sensors for zone 2 + type: /xyz/openbmc_project/sensors + members: + - /temperature/ambient + - /temperature/cpu_1_ambient + - /temperature/pcie + - name: occ0_object + description: Dbus object containing OCC0 properties + type: /org/open_power/control + members: + - /occ0 + - name: occ1_object + description: Dbus object containing OCC1 properties + type: /org/open_power/control + members: + - /occ1 + - name: zone0_cores + description: Group of core temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_core0_temp + - /temperature/p0_core1_temp + - /temperature/p0_core2_temp + - /temperature/p0_core3_temp + - /temperature/p0_core4_temp + - /temperature/p0_core5_temp + - /temperature/p0_core6_temp + - /temperature/p0_core7_temp + - /temperature/p0_core8_temp + - /temperature/p0_core9_temp + - /temperature/p0_core10_temp + - /temperature/p0_core11_temp + - /temperature/p0_core12_temp + - /temperature/p0_core13_temp + - /temperature/p0_core14_temp + - /temperature/p0_core15_temp + - /temperature/p0_core16_temp + - /temperature/p0_core17_temp + - /temperature/p0_core18_temp + - /temperature/p0_core19_temp + - /temperature/p0_core20_temp + - /temperature/p0_core21_temp + - /temperature/p0_core22_temp + - /temperature/p0_core23_temp + - name: zone1_cores + description: Group of core temperature sensors for zone 1 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p1_core0_temp + - /temperature/p1_core1_temp + - /temperature/p1_core2_temp + - /temperature/p1_core3_temp + - /temperature/p1_core4_temp + - /temperature/p1_core5_temp + - /temperature/p1_core6_temp + - /temperature/p1_core7_temp + - /temperature/p1_core8_temp + - /temperature/p1_core9_temp + - /temperature/p1_core10_temp + - /temperature/p1_core11_temp + - /temperature/p1_core12_temp + - /temperature/p1_core13_temp + - /temperature/p1_core14_temp + - /temperature/p1_core15_temp + - /temperature/p1_core16_temp + - /temperature/p1_core17_temp + - /temperature/p1_core18_temp + - /temperature/p1_core19_temp + - /temperature/p1_core20_temp + - /temperature/p1_core21_temp + - /temperature/p1_core22_temp + - /temperature/p1_core23_temp + - name: zone0_regulators + description: Group of regulator temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_vdd_temp + - name: zone1_regulators + description: Group of regulator temperature sensors for zone 1 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p1_vdd_temp + - name: zone0_dimms + description: Group of dimm temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/dimm0_temp + - /temperature/dimm1_temp + - /temperature/dimm2_temp + - /temperature/dimm3_temp + - /temperature/dimm4_temp + - /temperature/dimm5_temp + - /temperature/dimm6_temp + - /temperature/dimm7_temp + - name: zone1_dimms + description: Group of dimm temperature sensors for zone 1 + type: /xyz/openbmc_project/sensors + members: + - /temperature/dimm8_temp + - /temperature/dimm9_temp + - /temperature/dimm10_temp + - /temperature/dimm11_temp + - /temperature/dimm12_temp + - /temperature/dimm13_temp + - /temperature/dimm14_temp + - /temperature/dimm15_temp + - name: zone0_pcie + description: Group of pcie temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/pcie + +matches: + - name: propertiesChanged + description: > + A property changed match + parameters: + - object + - interface + signal: propertySignal + - name: interfacesAdded + description: > + An interfaces added match + parameters: + - object + signal: objectSignal + - name: interfacesRemoved + description: > + An interfaces removed match + parameters: + - object + signal: objectSignal + - name: nameOwnerChanged + description: > + A name owner changed match + parameters: + - object + - interface + signal: ownerSignal + +signals: + - name: propertySignal + description: > + Handle property signals + parameters: + - type + - object + - interface + - property + handler: setProperty + - name: objectSignal + description: > + Handle object signals + parameters: + - type + - object + - interface + - property + handler: setProperty + - name: ownerSignal + description: > + Handle owner signals + parameters: + - object + - interface + handler: setService + +handlers: + - name: setProperty + description: > + Sets a value for the given object/interface/property + parameters: + - type + - object + - interface + - property + - name: setService + description: > + Sets the service name(s) for the given group + parameters: + - group + +preconditions: + - name: property_states_match + description: > + All defined properties must match the values given to + enable a set speed event otherwise fan speeds are set to full + parameters: + - groups + +actions: + - name: call_actions_based_on_timer + description: > + Sets up a list of actions to be invoked when the defined timer + expires (or for each expiration of a repeating timer) + parameters: + - timer + - actions + - name: default_floor_on_missing_owner + description: > + Set the fan floor to the default floor + - name: set_speed_on_missing_owner + description: > + Set fans to the given speed when any service within the group + no longer exists + parameters: + - speed + - name: set_request_speed_base_with_max + description: > + Set the base request speed of a zone to the max value of a group for + calculating a new target speed + - name: count_state_before_speed + description: Set the speed when a number of properties at a state + parameters: + - count + - property + - speed + - name: set_floor_from_average_sensor_value + description: Set floor speed from first entry with average less than key + parameters: + - map + - name: set_ceiling_from_average_sensor_value + description: Set ceiling speed based on key transition values with average + parameters: + - map + - name: set_net_increase_speed + description: > + Set the speed increase delta based on a factor applied to + the delta increase size times the given value and property's + value difference + parameters: + - property + - factor + - delta + - name: set_net_decrease_speed + description: > + Set the speed decrease delta based on a factor applied to + the delta decrease size times the given value and property's + value difference + parameters: + - property + - factor + - delta + - name: run_pid_control + description: > + Runs PID control trying to keep value at property + parameters: + - property + - integrator_timestep + - kp + - ki + - kd + +events: + - name: default_fan_floor_on_service_fail + # No global zone conditions defined == all unless defined on group + groups: + - name: zone2_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: nameOwnerChanged + actions: + - name: call_actions_based_on_timer + timer: + delay: 5 + type: oneshot + actions: + - name: default_floor_on_missing_owner + - name: missing_before_high_speed_air_zone0 + groups: + - name: air_cooled_zone0_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Inventory.Item + property: + name: Present + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: missing_before_high_speed_air_zone1 + groups: + - name: air_cooled_zone1_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 1 + interface: xyz.openbmc_project.Inventory.Item + property: + name: Present + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: fails_before_high_speed_air_zone0 + groups: + - name: air_cooled_zone0_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: fails_before_high_speed_air_zone1 + groups: + - name: air_cooled_zone1_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 1 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: missing_before_high_speed_water_and_air_zone0 + groups: + - name: water_and_air_cooled_zone0_fans + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Inventory.Item + property: + name: Present + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: fails_before_high_speed_water_and_air_zone0 + groups: + - name: water_and_air_cooled_zone0_fans + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + matches: + - name: propertiesChanged + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 1000 + type: uint64_t + - name: set_air_cooled_speed_boundaries_based_on_ambient + groups: + - name: zone2_ambient + zone_conditions: + - name: air_cooled_chassis + zones: + - 2 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: propertiesChanged + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 22000: 100 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 27000: 1000 + type: std::map<int64_t, uint64_t> + - name: set_water_cooled_speed_boundaries_based_on_ambient + groups: + - name: zone2_ambient + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 2 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: propertiesChanged + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 22000: 250 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 27000: 1000 + type: std::map<int64_t, uint64_t> + - name: speed_changes_based_on_regulator_temps + groups: + - name: zone0_regulators + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: set_net_increase_speed + property: + value: 85000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t + timer: + interval: 5 + - name: occ_active_speed_changes_zone0 + precondition: + name: property_states_match + groups: + - name: occ0_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + matches: + - name: interfacesAdded + - name: propertiesChanged + events: + - name: speed_changes_based_on_core_temps_zone0 + groups: + - name: zone0_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: run_pid_control + property: + value: 63000 + type: int64_t + integrator_timestep: + value: 1 + type: int64_t + kp: + value: 3500 + type: int64_t + ki: + value: 100 + type: int64_t + kd: + value: 0 + type: int64_t + # Ensure PID values are always translated out to hardware + # This do-nothing "speed increase" is always called on every loop invocation + - name: set_net_increase_speed + property: + value: 0 + type: int64_t + factor: + value: 0 + type: int64_t + delta: + value: 0 + type: uint64_t + timer: + interval: 5 + - name: speed_changes_based_on_dimm_temps_zone0 + groups: + - name: zone0_dimms + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: set_net_increase_speed + property: + value: 64000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 4 + type: uint64_t + timer: + interval: 5 + - name: occ_active_speed_changes_zone1 + precondition: + name: property_states_match + groups: + - name: occ1_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + matches: + - name: interfacesAdded + - name: propertiesChanged + events: + - name: speed_changes_based_on_core_temps_zone1 + groups: + - name: zone1_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 1 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: run_pid_control + property: + value: 63001 + type: int64_t + integrator_timestep: + value: 1 + type: int64_t + kp: + value: 3500 + type: int64_t + ki: + value: 100 + type: int64_t + kd: + value: 0 + type: int64_t + # Ensure PID values are always translated out to hardware + # This do-nothing "speed increase" is always called on every loop invocation + - name: set_net_increase_speed + property: + value: 0 + type: int64_t + factor: + value: 0 + type: int64_t + delta: + value: 0 + type: uint64_t + timer: + interval: 5 + - name: speed_changes_based_on_dimm_temps_zone1 + groups: + - name: zone1_dimms + zone_conditions: + - name: air_cooled_chassis + zones: + - 1 + - name: water_and_air_cooled_chassis + zones: + - 2 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: set_net_increase_speed + property: + value: 64000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t + timer: + interval: 5 + - name: occ_active_speed_changes_zone2 + precondition: + name: property_states_match + groups: + - name: occ0_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + matches: + - name: interfacesAdded + - name: propertiesChanged + events: + - name: speed_changes_based_on_ambient_temp + groups: + - name: zone2_ambient + zone_conditions: + - name: air_cooled_chassis + zones: + - 2 + - name: water_and_air_cooled_chassis + zones: + - 2 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + matches: + - name: interfacesAdded + - name: propertiesChanged + actions: + - name: run_pid_control + property: + value: 42000 + type: int64_t + integrator_timestep: + value: 1 + type: int64_t + kp: + value: 2500 + type: int64_t + ki: + value: 50 + type: int64_t + kd: + value: 0 + type: int64_t + # Ensure PID values are always translated out to hardware + # This do-nothing "speed increase" is always called on every loop invocation + - name: set_net_increase_speed + property: + value: 0 + type: int64_t + factor: + value: 0 + type: int64_t + delta: + value: 0 + type: uint64_t + timer: + interval: 5 diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-fan-config%.bbappend b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-fan-config%.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-fan-config%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-fan-config%/fans.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-fan-config%/fans.yaml new file mode 100755 index 000000000..5bda3ccdb --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-fan-config%/fans.yaml @@ -0,0 +1,31 @@ +fans: + - inventory: /system/chassis/motherboard/fan4 + cooling_zone: 0 + cooling_profile: all + sensors: + - fan4 + - inventory: /system/chassis/motherboard/fan5 + cooling_zone: 1 + cooling_profile: air + sensors: + - fan5 + - inventory: /system/chassis/motherboard/fan0 + cooling_zone: 2 + cooling_profile: all + sensors: + - fan0 + - inventory: /system/chassis/motherboard/fan1 + cooling_zone: 2 + cooling_profile: air + sensors: + - fan1 + - inventory: /system/chassis/motherboard/fan2 + cooling_zone: 2 + cooling_profile: air + sensors: + - fan2 + - inventory: /system/chassis/motherboard/fan3 + cooling_zone: 2 + cooling_profile: air + sensors: + - fan3 diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native.bbappend b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native/zone_conditions.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native/zone_conditions.yaml new file mode 100644 index 000000000..244b6b16b --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config-native/zone_conditions.yaml @@ -0,0 +1,27 @@ +conditions: + - name: air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: false + + - name: water_and_air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: true + + - name: second_cpu_controlled + type: getProperty + properties: + - property: OccActive + interface: org.open_power.OCC.Status + path: /org/open_power/control/occ1 + type: bool + value: true
\ No newline at end of file diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-config-native.bbappend b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-config-native.bbappend new file mode 100644 index 000000000..6d4804d12 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-config-native.bbappend @@ -0,0 +1,2 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-config-native/zones.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-config-native/zones.yaml new file mode 100644 index 000000000..588fed35c --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-control-zone-config-native/zones.yaml @@ -0,0 +1,56 @@ +manager_configuration: + power_on_delay: 5 + +zone_configuration: + +#Air cooled zones +- zone_conditions: + - name: air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - air + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 + - zone: 1 + cooling_profiles: + - air + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 + - zone: 2 + cooling_profiles: + - air + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 + +#Water cooled zones +- zone_conditions: + - name: water_and_air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - water + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 + - zone: 2 + cooling_profiles: + - water + - all + full_speed: 1000 + default_floor: 100 + increase_delay: 5 + decrease_interval: 5 diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-monitor-config-native.bbappend b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-monitor-config-native.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-monitor-config-native.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-monitor-config-native/monitor.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-monitor-config-native/monitor.yaml new file mode 100644 index 000000000..1778bf2a1 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-monitor-config-native/monitor.yaml @@ -0,0 +1,64 @@ +fans: + - inventory: /system/chassis/motherboard/fan0 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan0 + has_target: true + + - inventory: /system/chassis/motherboard/fan1 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan1 + has_target: true + + - inventory: /system/chassis/motherboard/fan2 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan2 + has_target: true + + - inventory: /system/chassis/motherboard/fan3 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan3 + has_target: true + + - inventory: /system/chassis/motherboard/fan4 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan4 + has_target: true + + - inventory: /system/chassis/motherboard/fan5 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: -500 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan5 + has_target: true + +sensor_trust_groups: + - class: NonzeroSpeed + group: + - name: fan0 + - name: fan1 + - name: fan2 + - name: fan3 + - name: fan4 + - name: fan5 diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-presence-config-native%.bbappend b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-presence-config-native%.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-presence-config-native%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-presence-config-native%/config.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-presence-config-native%/config.yaml new file mode 100644 index 000000000..1e67ce56d --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/phosphor-fan-presence-config-native%/config.yaml @@ -0,0 +1,53 @@ +- name: fan0 + path: /system/chassis/motherboard/fan0 + methods: + - type: tach + sensors: + - fan0 + rpolicy: + type: anyof + +- name: fan1 + path: /system/chassis/motherboard/fan1 + methods: + - type: tach + sensors: + - fan1 + rpolicy: + type: anyof + +- name: fan2 + path: /system/chassis/motherboard/fan2 + methods: + - type: tach + sensors: + - fan2 + rpolicy: + type: anyof + +- name: fan3 + path: /system/chassis/motherboard/fan3 + methods: + - type: tach + sensors: + - fan3 + rpolicy: + type: anyof + +- name: fan4 + path: /system/chassis/motherboard/fan4 + methods: + - type: tach + sensors: + - fan4 + rpolicy: + type: anyof + +- name: fan5 + path: /system/chassis/motherboard/fan5 + methods: + - type: tach + sensors: + - fan5 + rpolicy: + type: anyof diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy-native.bb b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy-native.bb new file mode 100644 index 000000000..df6848d3c --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy-native.bb @@ -0,0 +1,16 @@ +SUMMARY = "Fan policy for Talos" +PR = "r1" + +inherit native +inherit obmc-phosphor-license +inherit phosphor-dbus-monitor + +SRC_URI += "file://air-cooled.yaml" +SRC_URI += "file://water-cooled.yaml" +SRC_URI += "file://fan-errors.yaml" + +do_install() { + install -D ${WORKDIR}/air-cooled.yaml ${D}${config_dir}/air-cooled.yaml + install -D ${WORKDIR}/water-cooled.yaml ${D}${config_dir}/water-cooled.yaml + install -D ${WORKDIR}/fan-errors.yaml ${D}${config_dir}/fan-errors.yaml +} diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/air-cooled.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/air-cooled.yaml new file mode 100644 index 000000000..f98b3d8fe --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/air-cooled.yaml @@ -0,0 +1,241 @@ +# Air cooled Talos fan policy for PDM. +# +# An air cooled Talos requires a minimum of one functional fan. +# If the number of functional fans drops below that +# power the system off. + +- name: fans + description: > + 'An air cooled Talos has six fans to monitor.' + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 + +- name: chassis state + description: > + 'Talos has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSISSTATE + path: /xyz/openbmc_project/state/chassis0 + +- name: chassis + description: > + 'Talos has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSIS + path: /xyz/openbmc_project/inventory/system/chassis + +- name: fan present + description: > + 'Monitor the presence state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Item + meta: PRESENT + property: Present + +- name: fan functional + description: > + 'Monitor the functional state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.State.Decorator.OperationalStatus + meta: FUNCTIONAL + property: Functional + +- name: chassis powered + description: > + 'Monitor the chassis power state.' + class: group + group: property + type: string + members: + - interface: xyz.openbmc_project.State.Chassis + meta: CHASSIS_STATE + property: CurrentPowerState + +- name: chassis air cooled + description: > + 'Monitor the chassis cooling type.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + meta: COOLING_TYPE + property: WaterCooled + +- name: watch fan present + description: > + 'Trigger logic on fan presence state changes.' + class: watch + watch: property + paths: fans + properties: fan present + callback: check cooling type + +- name: watch fan functional + description: > + 'Trigger logic on fan functional state changes.' + class: watch + watch: property + paths: fans + properties: fan functional + callback: check cooling type + +- name: watch chassis state + description: > + 'Trigger logic on chassis power state changes.' + class: watch + watch: property + paths: chassis state + properties: chassis powered + callback: check cooling type + +- name: watch cooling type + description: > + 'Maintain a cache of the chassis cooling type.' + class: watch + watch: property + paths: chassis + properties: chassis air cooled + +- name: check cooling type + description: > + 'If this condition passes the chassis is air cooled.' + class: condition + condition: count + paths: chassis + properties: chassis air cooled + callback: check power + countop: '==' + countbound: 0 + op: '==' + bound: true + +- name: check power + description: > + 'If the chassis has power, check fans.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fans + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check fans + description: > + 'Verify there are at least three functional fans, power off if not.' + class: callback + callback: group + members: + - check group presence + - check group functional + +- name: check group presence + description: > + 'If this condition passes more than one fan has been unplugged + for more than 25 seconds. Shut the system down. Count present + fans rather than non-present fans since the latter would pass + if the fan has not been created for some reason. + + For a more detailed definition of unplugged, consult the documentation + of xyz.openbmc_project.Inventory.Item and/or the documentation + of the fan inventory object implementation.' + class: condition + condition: count + paths: fans + properties: fan present + defer: 25000000us + callback: log and shutdown + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check group functional + description: > + 'If this condition passes more than one fan in the group has been + marked as nonfunctional for five seconds. Shut the system down. + + For a more detailed definition of nonfunctional, consult the documentation + of xyz.openbmc_project.State.Decorator.OperationalStatus and/or the + documentation of the fan inventory object implementation.' + class: condition + condition: count + paths: fans + properties: fan functional + defer: 5000000us + callback: log and shutdown + countop: '>' + countbound: 1 + op: '==' + bound: false + +- name: log and shutdown + description: > + 'Shut the system down, log an event in the journal, and create an + error log.' + class: callback + callback: group + members: + - shutdown + - log + - create shutdown error + +- name: shutdown + description: > + 'Shut down the system.' + class: callback + callback: method + service: org.freedesktop.systemd1 + path: /org/freedesktop/systemd1 + interface: org.freedesktop.systemd1.Manager + method: StartUnit + args: + - value: obmc-chassis-hard-poweroff@0.target + type: string + - value: replace + type: string + +- name: log + description: > + 'Log a shutdown event to the systemd journal.' + class: callback + callback: journal + paths: chassis state + properties: chassis powered + severity: ERR + message: Shutting down system. There are not enough functional fans. + +- name: create shutdown error + description: > + 'Create a Fan Shutdown Error log.' + class: callback + callback: elog + paths: chassis state + properties: chassis powered + error: xyz::openbmc_project::State::Shutdown::Inventory::Error::Fan diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/fan-errors.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/fan-errors.yaml new file mode 100644 index 000000000..15e03872b --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/fan-errors.yaml @@ -0,0 +1,934 @@ +# Talos fan error policy for PDM. +# +# * Create a NotPresent error if fan 0, 1, 2, 3, 4, 5, or 6 is not present for more +# than 20 seconds. +# * Create a Nonfunctional error if fan 0, 1, 2, 3, 4, 5, or 6 is not +# functional for any amount of time. +# +# The system must be powered on in both of these cases. +# If a water cooled system, don't create errors for fans 1, 2, 3, 5, or 6. +# Note: An error is created each time the chassis powers on. +# +# * Watch for fans to become functional, and then resolve their errors + +- name: fan0 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + +- name: fan1 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + +- name: fan2 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + +- name: fan3 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3 + +- name: fan4 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 + +- name: fan5 + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 + +- name: chassis state + description: > + 'Talos has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSISSTATE + path: /xyz/openbmc_project/state/chassis0 + +- name: chassis + description: > + 'Talos has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSIS + path: /xyz/openbmc_project/inventory/system/chassis + + +- name: fan present + description: > + 'Monitor the presence state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Item + meta: PRESENT + property: Present + +- name: fan functional + description: > + 'Monitor the functional state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.State.Decorator.OperationalStatus + meta: FUNCTIONAL + property: Functional + +- name: chassis powered + description: > + 'Monitor the chassis power state.' + class: group + group: property + type: string + members: + - interface: xyz.openbmc_project.State.Chassis + meta: CHASSIS_STATE + property: CurrentPowerState + +- name: chassis air cooled + description: > + 'The chassis cooling type.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + meta: COOLING_TYPE + property: WaterCooled + +- name: second cpu controlled + description: > + 'Whether or not the second CPU is installed and under thermal control.' + class: group + group: property + type: boolean + members: + - interface: org.open_power.OCC.Status + path: /org/open_power/control/occ1 + meta: SECOND_CPU_CONTROLLED + property: OccActive + +- name: watch chassis state + description: > + 'Trigger logic on chassis power state changes.' + class: watch + watch: property + paths: chassis state + properties: chassis powered + callback: check power + +- name: watch fan0 presence + description: > + 'Trigger logic on fan0 presence state changes.' + class: watch + watch: property + paths: fan0 + properties: fan present + callback: check power fan0 presence + +- name: watch fan0 functional + description: > + 'Trigger logic on fan0 functional state changes.' + class: watch + watch: property + paths: fan0 + properties: fan functional + callback: check power fan0 functional + +- name: watch fan1 presence + description: > + 'Trigger logic on fan1 presence state changes.' + class: watch + watch: property + paths: fan1 + properties: fan present + callback: check power fan1 presence + +- name: watch fan1 functional + description: > + 'Trigger logic on fan1 functional state changes.' + class: watch + watch: property + paths: fan1 + properties: fan functional + callback: check power fan1 functional + +- name: watch fan2 presence + description: > + 'Trigger logic on fan2 presence state changes.' + class: watch + watch: property + paths: fan2 + properties: fan present + callback: check power fan2 presence + +- name: watch fan2 functional + description: > + 'Trigger logic on fan2 functional state changes.' + class: watch + watch: property + paths: fan2 + properties: fan functional + callback: check power fan2 functional + +- name: watch fan3 presence + description: > + 'Trigger logic on fan3 presence state changes.' + class: watch + watch: property + paths: fan3 + properties: fan present + callback: check power fan3 presence + +- name: watch fan3 functional + description: > + 'Trigger logic on fan3 functional state changes.' + class: watch + watch: property + paths: fan3 + properties: fan functional + callback: check power fan3 functional + +- name: watch fan4 presence + description: > + 'Trigger logic on fan4 presence state changes.' + class: watch + watch: property + paths: fan4 + properties: fan present + callback: check power fan4 presence + +- name: watch fan4 functional + description: > + 'Trigger logic on fan4 functional state changes.' + class: watch + watch: property + paths: fan4 + properties: fan functional + callback: check power fan4 functional + +- name: watch fan0 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan0 + properties: fan functional + callback: resolve fan0 errors if functional + +- name: watch fan1 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan1 + properties: fan functional + callback: resolve fan1 errors if functional + +- name: watch fan2 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan2 + properties: fan functional + callback: resolve fan2 errors if functional + +- name: watch fan3 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan3 + properties: fan functional + callback: resolve fan3 errors if functional + +- name: watch fan4 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan4 + properties: fan functional + callback: resolve fan4 errors if functional + +- name: watch fan5 functional for resolving error logs + description: > + 'On fan functional state changes, check if errors need to be resolved.' + class: watch + watch: property + paths: fan5 + properties: fan functional + callback: resolve fan5 errors if functional + +- name: check power + description: > + 'If the chassis has power, check all fans.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fans + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan0 presence + description: > + 'If the chassis has power, check presence of fan0.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan0 presence + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan0 functional + description: > + 'If the chassis has power, check functional of fan0.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan0 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan1 presence + description: > + 'If the chassis has power, check presence of fan1.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan1 presence + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan1 functional + description: > + 'If the chassis has power, check functional of fan1.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan1 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan2 presence + description: > + 'If the chassis has power, check presence of fan2.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan2 presence + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan2 functional + description: > + 'If the chassis has power, check functional of fan2.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan2 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan3 presence + description: > + 'If the chassis has power, check presence of fan3.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan3 presence + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan3 functional + description: > + 'If the chassis has power, check functional of fan3.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan3 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan4 functional + description: > + 'If the chassis has power, check functional of fan4.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan4 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check power fan5 functional + description: > + 'If the chassis has power, check functional of fan5.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fan5 functional + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check fans + description: > + 'Verify each of the 6 fans are present.' + class: callback + callback: group + members: + - check fan0 presence + - check fan1 presence + - check fan2 presence + - check fan3 presence + - check fan4 presence + - check fan5 presence + - check fan0 functional + - check fan1 functional + - check fan2 functional + - check fan3 functional + - check fan4 functional + - check fan5 functional + +- name: check fan0 presence + description: > + 'If this condition passes fan0 has been unplugged for more than 20 seconds.' + class: condition + condition: count + paths: fan0 + properties: fan present + defer: 20000000us + callback: notpresent fan0 error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan0 functional + description: > + 'If this condition passes fan0 has been marked as nonfunctional.' + class: condition + condition: count + paths: fan0 + properties: fan functional + callback: nonfunctional fan0 error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check fan1 presence + description: > + 'If this condition passes fan1 has been unplugged for more than 20 seconds. + Fan 1 is not in a water cooled Talos, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan1 + properties: fan present + defer: 20000000us + callback: check cooling type notpresent error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan1 functional + description: > + 'If this condition passes fan1 has been marked as nonfunctional. + Fan 1 is not in a water cooled Talos, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan1 + properties: fan functional + callback: check cooling type nonfunctional error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check fan2 presence + description: > + 'If this condition passes fan2 has been unplugged for more than 20 seconds. + Fan 2 is not in a water cooled Talos, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan2 + properties: fan present + defer: 20000000us + callback: check cooling type notpresent error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan2 functional + description: > + 'If this condition passes fan2 has been marked as nonfunctional. + Fan 2 is not in a water cooled Talos, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan2 + properties: fan functional + callback: check cooling type nonfunctional error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check fan3 presence + description: > + 'If this condition passes fan3 has been unplugged for more than 20 seconds. + Fan 3 is not in a water cooled Talos, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan3 + properties: fan present + defer: 20000000us + callback: check cooling type notpresent error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan3 functional + description: > + 'If this condition passes fan3 has been marked as nonfunctional. + Fan 3 is not in a water cooled Talos, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan3 + properties: fan functional + callback: check cooling type nonfunctional error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check fan4 presence + description: > + 'If this condition passes fan4 has been unplugged for more than 20 seconds.' + class: condition + condition: count + paths: fan4 + properties: fan present + defer: 20000000us + callback: notpresent fan4 error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan4 functional + description: > + 'If this condition passes fan4 has been marked as nonfunctional.' + class: condition + condition: count + paths: fan4 + properties: fan functional + callback: nonfunctional fan4 error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check fan5 presence + description: > + 'If this condition passes fan5 has been unplugged for more than 20 seconds. + Fan 5 is not in a water cooled Talos, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan5 + properties: fan present + defer: 20000000us + callback: check second cpu controlled notpresent error + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check fan5 functional + description: > + 'If this condition passes fan5 has been marked as nonfunctional. + Fan 5 is not in a water cooled Talos, so check for cooling type + before creating an error.' + class: condition + condition: count + paths: fan5 + properties: fan functional + callback: check second cpu controlled nonfunctional error + countop: '>' + countbound: 0 + op: '==' + bound: false + +- name: check cooling type nonfunctional error + description: > + 'If this condition passes the chassis is air cooled and will create a + nonfunctional error for fans 1, 2, 3, 5, and 6.' + class: condition + condition: count + paths: chassis + properties: chassis air cooled + callback: nonfunctional fan1 error + countop: '==' + countbound: 0 + op: '==' + bound: true + +- name: check cooling type notpresent error + description: > + 'If this condition passes the chassis is air cooled and will create a + notpresent error for fans 1, 2, 3, 5, and 6.' + class: condition + condition: count + paths: chassis + properties: chassis air cooled + callback: notpresent fan1 error + countop: '==' + countbound: 0 + op: '==' + bound: true + +- name: check second cpu controlled nonfunctional error + description: > + 'If this condition passes the second CPU is controlled and will create a + nonfunctional error for fan 6 in air cooled mode.' + class: condition + condition: count + paths: chassis + properties: second cpu controlled + callback: check cooling type nonfunctional error + countop: '==' + countbound: 0 + op: '==' + bound: true + +- name: check second cpu controlled notpresent error + description: > + 'If this condition passes the second CPU is controlled and will create a + notpresent error for fan 6 in air cooled mode.' + class: condition + condition: count + paths: chassis + properties: second cpu controlled + callback: check cooling type notpresent error + countop: '==' + countbound: 0 + op: '==' + bound: true + +- name: notpresent fan0 error + class: callback + callback: elog + paths: fan0 + properties: fan present + error: xyz::openbmc_project::Inventory::Error::NotPresent + metadata: + - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + type: string + +- name: nonfunctional fan0 error + class: callback + callback: elog + paths: fan0 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + type: string + +- name: notpresent fan1 error + class: callback + callback: elog + paths: fan1 + properties: fan present + error: xyz::openbmc_project::Inventory::Error::NotPresent + metadata: + - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + type: string + +- name: nonfunctional fan1 error + class: callback + callback: elog + paths: fan1 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + type: string + +- name: notpresent fan2 error + class: callback + callback: elog + paths: fan2 + properties: fan present + error: xyz::openbmc_project::Inventory::Error::NotPresent + metadata: + - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + type: string + +- name: nonfunctional fan2 error + class: callback + callback: elog + paths: fan2 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + type: string + +- name: notpresent fan3 error + class: callback + callback: elog + paths: fan3 + properties: fan present + error: xyz::openbmc_project::Inventory::Error::NotPresent + metadata: + - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3 + type: string + +- name: nonfunctional fan3 error + class: callback + callback: elog + paths: fan3 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3 + type: string + +- name: notpresent fan4 error + class: callback + callback: elog + paths: fan4 + properties: fan present + error: xyz::openbmc_project::Inventory::Error::NotPresent + metadata: + - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 + type: string + +- name: nonfunctional fan4 error + class: callback + callback: elog + paths: fan4 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 + type: string + +- name: notpresent fan5 error + class: callback + callback: elog + paths: fan5 + properties: fan present + error: xyz::openbmc_project::Inventory::Error::NotPresent + metadata: + - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 + type: string + +- name: nonfunctional fan5 error + class: callback + callback: elog + paths: fan5 + properties: fan functional + error: xyz::openbmc_project::Inventory::Error::Nonfunctional + metadata: + - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH + value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 + type: string + +- name: resolve fan0 errors if functional + description: > + 'If fan0 is functional, call the resolve fan0 errors callback.' + class: condition + condition: count + paths: fan0 + properties: fan functional + callback: resolve fan0 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +#Go ahead and do this on water cooled as well +- name: resolve fan1 errors if functional + description: > + 'If fan1 is functional, call the resolve fan1 errors callback.' + class: condition + condition: count + paths: fan1 + properties: fan functional + callback: resolve fan1 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +#Go ahead and do this on water cooled as well +- name: resolve fan2 errors if functional + description: > + 'If fan2 is functional, call the resolve fan2 errors callback.' + class: condition + condition: count + paths: fan2 + properties: fan functional + callback: resolve fan2 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +#Go ahead and do this on water cooled as well +- name: resolve fan3 errors if functional + description: > + 'If fan3 is functional, call the resolve fan3 errors callback.' + class: condition + condition: count + paths: fan3 + properties: fan functional + callback: resolve fan3 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +- name: resolve fan4 errors if functional + description: > + 'If fan4 is functional, call the resolve fan4 errors callback.' + class: condition + condition: count + paths: fan4 + properties: fan functional + callback: resolve fan4 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +#Go ahead and do this on water cooled as well +- name: resolve fan5 errors if functional + description: > + 'If fan5 is functional, call the resolve fan5 errors callback.' + class: condition + condition: count + paths: fan5 + properties: fan functional + callback: resolve fan5 errors + countop: '>' + countbound: 0 + op: '==' + bound: true + +- name: resolve fan0 errors + class: callback + callback: resolve callout + paths: fan0 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + +- name: resolve fan1 errors + class: callback + callback: resolve callout + paths: fan1 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 + +- name: resolve fan2 errors + class: callback + callback: resolve callout + paths: fan2 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 + +- name: resolve fan3 errors + class: callback + callback: resolve callout + paths: fan3 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3 + +- name: resolve fan4 errors + class: callback + callback: resolve callout + paths: fan4 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 + +- name: resolve fan5 errors + class: callback + callback: resolve callout + paths: fan5 + properties: fan functional + callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/water-cooled.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/water-cooled.yaml new file mode 100644 index 000000000..689633a52 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-policy/water-cooled.yaml @@ -0,0 +1,233 @@ +# Water cooled Talos fan policy for PDM. +# +# A water cooled Talos requires a minimum of one functional fan and one functional pump. +# If the number of functional rotors drops below that +# power the system off. + +- name: fans + description: > + 'A water cooled Talos has two rotors to monitor.' + class: group + group: path + members: + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 + - meta: FAN + path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 + +- name: chassis state + description: > + 'Talos has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSISSTATE + path: /xyz/openbmc_project/state/chassis0 + +- name: chassis + description: > + 'Talos has a single chassis to monitor.' + class: group + group: path + members: + - meta: CHASSIS + path: /xyz/openbmc_project/inventory/system/chassis + +- name: fan present + description: > + 'Monitor the presence state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Item + meta: PRESENT + property: Present + +- name: fan functional + description: > + 'Monitor the functional state of each fan.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.State.Decorator.OperationalStatus + meta: FUNCTIONAL + property: Functional + +- name: chassis powered + description: > + 'Monitor the chassis power state.' + class: group + group: property + type: string + members: + - interface: xyz.openbmc_project.State.Chassis + meta: CHASSIS_STATE + property: CurrentPowerState + +- name: chassis water cooled + description: > + 'Monitor the chassis cooling type.' + class: group + group: property + type: boolean + members: + - interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + meta: COOLING_TYPE + property: WaterCooled + +- name: watch fan present + description: > + 'Trigger logic on fan presence state changes.' + class: watch + watch: property + paths: fans + properties: fan present + callback: check cooling type + +- name: watch fan functional + description: > + 'Trigger logic on fan functional state changes.' + class: watch + watch: property + paths: fans + properties: fan functional + callback: check cooling type + +- name: watch chassis state + description: > + 'Trigger logic on chassis power state changes.' + class: watch + watch: property + paths: chassis state + properties: chassis powered + callback: check cooling type + +- name: watch cooling type + description: > + 'Maintain a cache of the chassis cooling type.' + class: watch + watch: property + paths: chassis + properties: chassis water cooled + +- name: check cooling type + description: > + 'If this condition passes the chassis is water cooled.' + class: condition + condition: count + paths: chassis + properties: chassis water cooled + callback: check power + countop: '==' + countbound: 1 + op: '==' + bound: true + +- name: check power + description: > + 'If the chassis has power, check fans.' + class: condition + condition: count + paths: chassis state + properties: chassis powered + callback: check fans + countop: '>' + countbound: 0 + op: '==' + bound: xyz.openbmc_project.State.Chassis.PowerState.On + +- name: check fans + description: > + 'Verify there are at least two functional fans, power off if not.' + class: callback + callback: group + members: + - check group presence + - check group functional + +- name: check group presence + description: > + 'If this condition passes more than one fan has been unplugged + for more than 25 seconds. Shut the system down. Count present + fans rather than non-present fans since the latter would pass + if the fan has not been created for some reason. + + For a more detailed definition of unplugged, consult the documentation + of xyz.openbmc_project.Inventory.Item and/or the documentation + of the fan inventory object implementation.' + class: condition + condition: count + paths: fans + properties: fan present + defer: 25000000us + callback: log and shutdown + countop: '<' + countbound: 1 + op: '==' + bound: true + +- name: check group functional + description: > + 'If this condition passes more than one fan in the group has been marked + as nonfunctional for five seconds. Shut the system down. + + For a more detailed definition of nonfunctional, consult the documentation + of xyz.openbmc_project.State.Decorator.OperationalStatus and/or the + documentation of the fan inventory object implementation.' + class: condition + condition: count + paths: fans + properties: fan functional + defer: 5000000us + callback: log and shutdown + countop: '>' + countbound: 1 + op: '==' + bound: false + +- name: log and shutdown + description: > + 'Shut the system down, log an event in the journal, and create an + error log.' + class: callback + callback: group + members: + - shutdown + - log + - create shutdown error + +- name: shutdown + description: > + 'Shut down the system.' + class: callback + callback: method + service: org.freedesktop.systemd1 + path: /org/freedesktop/systemd1 + interface: org.freedesktop.systemd1.Manager + method: StartUnit + args: + - value: obmc-chassis-hard-poweroff@0.target + type: string + - value: replace + type: string + +- name: log + description: > + 'Log a shutdown event to the systemd journal.' + class: callback + callback: journal + paths: chassis state + properties: chassis powered + severity: ERR + message: Shutting down system. There are not enough functional fans. + +- name: create shutdown error + description: > + 'Create a Fan Shutdown Error log.' + class: callback + callback: elog + paths: chassis state + properties: chassis powered + error: xyz::openbmc_project::State::Shutdown::Inventory::Error::Fan diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog.bb b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog.bb new file mode 100644 index 000000000..19be898dd --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog.bb @@ -0,0 +1,22 @@ +SUMMARY = "Talos fan watchdog services" +PR = "r1" + +inherit obmc-phosphor-license +inherit obmc-phosphor-systemd + +RDEPENDS_${PN} += "virtual/obmc-gpio-monitor" +RDEPENDS_${PN} += "busybox" + +RESET_SERVICE = "talos-reset-fan-watchdog.service" +TGTFMT = "obmc-chassis-poweron@0.target" +RESET_FMT = "../${RESET_SERVICE}:${TGTFMT}.requires/${RESET_SERVICE}" + +MONITOR_SERVICE = "talos-fan-watchdog-monitor@.service" + +WATCHDOG_SERVICE = "talos-fan-watchdog.service" +WATCHDOG_FMT = "../${WATCHDOG_SERVICE}:${TGTFMT}.requires/${WATCHDOG_SERVICE}" + +SYSTEMD_SERVICE_${PN} += "${RESET_SERVICE} ${MONITOR_SERVICE} ${WATCHDOG_SERVICE}" +SYSTEMD_LINK_${PN} += "${RESET_FMT} ${WATCHDOG_FMT}" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/talos-fan-watchdog/reset-fan-watchdog.conf" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/talos-fan-watchdog/fan-watchdog.conf" diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/obmc/talos-fan-watchdog/fan-watchdog.conf b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/obmc/talos-fan-watchdog/fan-watchdog.conf new file mode 100644 index 000000000..b54faae3b --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/obmc/talos-fan-watchdog/fan-watchdog.conf @@ -0,0 +1,3 @@ +TIMEOUT=3 +INTERVAL=1 +DEVICE=/dev/watchdog0 diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/obmc/talos-fan-watchdog/reset-fan-watchdog.conf b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/obmc/talos-fan-watchdog/reset-fan-watchdog.conf new file mode 100644 index 000000000..b4e5ce74e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/obmc/talos-fan-watchdog/reset-fan-watchdog.conf @@ -0,0 +1,4 @@ +GPIO_PATH=/dev/gpiochip0 +GPIO=109 +DELAY=1 +ACTION=low_high diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-fan-watchdog-monitor@.service b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-fan-watchdog-monitor@.service new file mode 100644 index 000000000..945561b50 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-fan-watchdog-monitor@.service @@ -0,0 +1,10 @@ +[Unit] +Description=Fan Watchdog Failure Monitor + +#This can get called every time a process dies, so ensure it's never limited +StartLimitIntervalSec=0 + +[Service] +Type=oneshot +ExecStart=/usr/bin/env phosphor-unit-failure-monitor --source %i --target obmc-fan-watchdog-takeover.target --action start +SyslogIdentifier=phosphor-unit-failure-monitor diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-fan-watchdog.service b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-fan-watchdog.service new file mode 100644 index 000000000..c4696f72b --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-fan-watchdog.service @@ -0,0 +1,13 @@ +[Unit] +Description=Talos Fan Watchdog Daemon +Wants=phosphor-fan-control-init@0.service +Before=phosphor-fan-control-init@0.service +Conflicts=obmc-fan-watchdog-takeover.target + +[Service] +EnvironmentFile={envfiledir}/obmc/talos-fan-watchdog/fan-watchdog.conf +ExecStart=/sbin/watchdog -T ${{TIMEOUT}} -t ${{INTERVAL}} -F ${{DEVICE}} +KillSignal=SIGKILL + +[Install] +RequiredBy=obmc-chassis-poweron@0.target diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-reset-fan-watchdog.service b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-reset-fan-watchdog.service new file mode 100644 index 000000000..934892bc4 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-fan-watchdog/talos-reset-fan-watchdog.service @@ -0,0 +1,12 @@ +[Unit] +Description=Talos Fan Watchdog Reset +Wants=phosphor-fan-control-init@0.service +Before=phosphor-fan-control-init@0.service +Conflicts=obmc-chassis-poweroff@0.target + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile={envfiledir}/obmc/talos-fan-watchdog/reset-fan-watchdog.conf +ExecStart=/usr/bin/env phosphor-gpio-util -p ${{GPIO_PATH}} -g ${{GPIO}} -a ${{ACTION}} -d ${{DELAY}} +SyslogIdentifier=phosphor-gpio-util diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-thermal-policy-native.bb b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-thermal-policy-native.bb new file mode 100644 index 000000000..1b20e53a5 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-thermal-policy-native.bb @@ -0,0 +1,12 @@ +SUMMARY = "Thermal policy for Talos" +PR = "r1" + +inherit native +inherit obmc-phosphor-license +inherit phosphor-dbus-monitor + +SRC_URI += "file://thermal-policy.yaml" + +do_install() { + install -D ${WORKDIR}/thermal-policy.yaml ${D}${config_dir}/thermal-policy.yaml +} diff --git a/meta-rcs/meta-talos/recipes-phosphor/fans/talos-thermal-policy/thermal-policy.yaml b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-thermal-policy/thermal-policy.yaml new file mode 100644 index 000000000..28ba81cad --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/fans/talos-thermal-policy/thermal-policy.yaml @@ -0,0 +1,200 @@ +# Talos thermal policy for PDM. +# +# Shut down a Talos system if more than three POWER9 cores +# have a temperature greater than 115 degrees Celcius. + + +- name: core sensors + description: > + 'Talos has two POWER9 chips with up to 24 cores each.' + class: group + group: path + members: + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core0_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core1_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core2_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core3_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core4_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core5_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core6_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core7_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core8_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core9_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core10_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core11_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core12_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core13_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core14_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core15_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core16_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core17_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core18_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core19_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core20_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core21_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core22_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p0_core23_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core0_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core1_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core2_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core3_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core4_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core5_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core6_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core7_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core8_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core9_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core10_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core11_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core12_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core13_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core14_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core15_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core16_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core17_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core18_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core19_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core20_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core21_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core22_temp + - meta: SENSOR + path: /xyz/openbmc_project/sensors/temperature/p1_core23_temp + +- name: core temp + description: > + 'Monitor the temperature of each core.' + class: group + group: property + type: int64 + members: + - interface: xyz.openbmc_project.Sensor.Value + meta: TEMP + property: Value + +- name: watch core temps + description: > + 'Trigger logic on core temp changes.' + class: watch + watch: property + paths: core sensors + properties: core temp + callback: check temps + +- name: check temps + description: > + 'If this condition passes at least three cores are running + too hot. Shut the system down.' + class: condition + condition: count + paths: core sensors + properties: core temp + callback: log and shutdown + countop: '>=' + countbound: 3 + op: '>=' + bound: 115000 + +- name: log and shutdown + description: > + 'Shut the system down and log an event.' + class: callback + callback: group + members: + - shutdown + - log + - create criticalhigh error + - create shutdown error + +- name: shutdown + description: > + 'Shut down the system.' + class: callback + callback: method + service: org.freedesktop.systemd1 + path: /org/freedesktop/systemd1 + interface: org.freedesktop.systemd1.Manager + method: StartUnit + args: + - value: obmc-chassis-hard-poweroff@0.target + type: string + - value: replace + type: string + +- name: log + description: > + 'Log a shutdown event to the systemd journal.' + class: callback + callback: journal + paths: core sensors + properties: core temp + severity: ERR + message: The system is too hot. Shutting down. + +- name: create criticalhigh error + description: > + 'Create a CriticalHigh Error log.' + class: callback + callback: elog + paths: core sensors + properties: core temp + error: xyz::openbmc_project::Sensor::Threshold::Error::CriticalHigh + metadata: + - name: xyz::openbmc_project::Sensor::Threshold::CriticalHigh::SENSOR_TYPE + value: temperature + type: string + +- name: create shutdown error + description: > + 'Create a SystemShutdown Error log.' + class: callback + callback: elog + paths: core sensors + properties: core temp + error: xyz::openbmc_project::State::Shutdown::ThermalEvent::Error::Processor diff --git a/meta-rcs/meta-talos/recipes-phosphor/host/p9-host-start.bbappend b/meta-rcs/meta-talos/recipes-phosphor/host/p9-host-start.bbappend new file mode 100644 index 000000000..ac2013fd3 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/host/p9-host-start.bbappend @@ -0,0 +1,2 @@ +RDEPENDS_${PN} += 'avsbus-control' +RDEPENDS_${PN} += 'vrm-control' diff --git a/meta-rcs/meta-talos/recipes-phosphor/images/obmc-phosphor-image.bbappend b/meta-rcs/meta-talos/recipes-phosphor/images/obmc-phosphor-image.bbappend new file mode 100644 index 000000000..aa57bbfe6 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/images/obmc-phosphor-image.bbappend @@ -0,0 +1 @@ +OBMC_IMAGE_EXTRA_INSTALL_append = " mboxd" diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%.bbappend b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%/extra-properties.yaml b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%/extra-properties.yaml new file mode 100644 index 000000000..ae626ed05 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-properties%/extra-properties.yaml @@ -0,0 +1,159 @@ +/system/chassis/motherboard/cpu0: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/cpu1: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm0: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm1: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm2: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm3: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm4: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm5: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm6: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm7: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm8: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm9: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm10: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm11: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm12: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm13: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm14: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' + +/system/chassis/motherboard/dimm15: + xyz.openbmc_project.Inventory.Decorator.Replaceable: + FieldReplaceable: 'true' + xyz.openbmc_project.Inventory.Decorator.Cacheable: + Cached: 'true' + xyz.openbmc_project.Inventory.Item: + Present: 'true' diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-read-bmc-inventory%/bmc-fru-config.yaml b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-read-bmc-inventory%/bmc-fru-config.yaml new file mode 100644 index 000000000..8009eadaf --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-fru-read-bmc-inventory%/bmc-fru-config.yaml @@ -0,0 +1,36 @@ +50: + /system/chassis/motherboard/fan0: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product +51: + /system/chassis/motherboard/fan1: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product +52: + /system/chassis/motherboard/fan2: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product +53: + /system/chassis/motherboard/fan3: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product +54: + /system/chassis/motherboard/fan4: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product +55: + /system/chassis/motherboard/fan5: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Product Name + IPMIFruSection: Product diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host.bbappend b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host.bbappend new file mode 100644 index 000000000..1f0254d0f --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host.bbappend @@ -0,0 +1,48 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" +SRC_URI_append = " file://occ_sensors.hardcoded.yaml \ + file://dev_id.json \ + file://dcmi_sensors.json \ + file://power_reading.json \ + file://hwmon_sensors.hardcoded.yaml \ + " +inherit image_version + +# Calculate the auxiliary firmware revision to be updated in the dev_id.json +# file. It is calculated from the VERSION_ID field which currently has two +# formats. The revision field is 4 bytes, the first two bytes represent the +# count of commits from the tagging and next two bytes represent the version. +# Both fields are represented in BCD encoded format, so 9999 is the maximum +# value both fields can take. With the format "v2.1-216-ga78ace8", Petitboot +# would display the firmware revision as "Firmware version: 2.01.02160000", +# "0216" is count and the revision is "0000". With the format +# "ibm-v2.0-10-r41-0-gd0c319e" Petitboot would display the firmware revision +# as "Firmware version: 2.00.00100041", "0010" is count and the revision +# is "0041". + +python do_populate_aux_version() { + import json + import re + version_id = do_get_version(d) + + # count from the commit version + count = re.findall("-(\d{1,4})-", version_id) + + release = re.findall("-r(\d{1,4})", version_id) + if release: + auxVer = count[0] + "{0:0>4}".format(release[0]) + else: + auxVer = count[0] + "0000" + + # Update dev_id.json with the auxiliary firmware revision + workdir = d.getVar('WORKDIR', True) + file = os.path.join(workdir, 'dev_id.json') + + with open(file, "r+") as jsonFile: + data = json.load(jsonFile) + jsonFile.seek(0) + jsonFile.truncate() + data["aux"] = int(auxVer, 16) + json.dump(data, jsonFile) +} + +addtask populate_aux_version after do_configure before do_compile diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/dcmi_sensors.json b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/dcmi_sensors.json new file mode 100644 index 000000000..56170bf48 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/dcmi_sensors.json @@ -0,0 +1,59 @@ +{ + "inlet": [ + {"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/ambient", "record_id": 254} + ], + "baseboard": [ + {"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/pcie", "record_id": 253} + {"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/cpu_1_ambient", "record_id": 252} + ], + "cpu": [ + {"instance": 1, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core0_temp", "record_id": 17}, + {"instance": 2, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core1_temp", "record_id": 20}, + {"instance": 3, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core2_temp", "record_id": 23}, + {"instance": 4, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core3_temp", "record_id": 26}, + {"instance": 5, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core4_temp", "record_id": 29}, + {"instance": 6, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core5_temp", "record_id": 32}, + {"instance": 7, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core6_temp", "record_id": 35}, + {"instance": 8, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core7_temp", "record_id": 38}, + {"instance": 9, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core8_temp", "record_id": 41}, + {"instance": 10, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core9_temp", "record_id": 44}, + {"instance": 11, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core10_temp", "record_id": 47}, + {"instance": 12, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core11_temp", "record_id": 50}, + {"instance": 13, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core12_temp", "record_id": 53}, + {"instance": 14, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core13_temp", "record_id": 56}, + {"instance": 15, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core14_temp", "record_id": 59}, + {"instance": 16, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core15_temp", "record_id": 62}, + {"instance": 17, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core16_temp", "record_id": 65}, + {"instance": 18, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core17_temp", "record_id": 68}, + {"instance": 19, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core18_temp", "record_id": 71}, + {"instance": 20, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core19_temp", "record_id": 74}, + {"instance": 21, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core20_temp", "record_id": 77}, + {"instance": 22, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core21_temp", "record_id": 80}, + {"instance": 23, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core22_temp", "record_id": 83}, + {"instance": 24, "dbus": "/xyz/openbmc_project/sensors/temperature/p0_core23_temp", "record_id": 86}, + {"instance": 25, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core0_temp", "record_id": 91}, + {"instance": 26, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core1_temp", "record_id": 94}, + {"instance": 27, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core2_temp", "record_id": 97}, + {"instance": 28, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core3_temp", "record_id": 100}, + {"instance": 29, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core4_temp", "record_id": 103}, + {"instance": 30, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core5_temp", "record_id": 106}, + {"instance": 31, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core6_temp", "record_id": 109}, + {"instance": 32, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core7_temp", "record_id": 112}, + {"instance": 33, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core8_temp", "record_id": 115}, + {"instance": 34, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core9_temp", "record_id": 118}, + {"instance": 35, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core10_temp", "record_id": 121}, + {"instance": 36, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core11_temp", "record_id": 124}, + {"instance": 37, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core12_temp", "record_id": 127}, + {"instance": 38, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core13_temp", "record_id": 130}, + {"instance": 39, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core14_temp", "record_id": 133}, + {"instance": 40, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core15_temp", "record_id": 136}, + {"instance": 41, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core16_temp", "record_id": 139}, + {"instance": 42, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core17_temp", "record_id": 142}, + {"instance": 43, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core18_temp", "record_id": 145}, + {"instance": 44, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core19_temp", "record_id": 148}, + {"instance": 45, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core20_temp", "record_id": 151}, + {"instance": 46, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core21_temp", "record_id": 154}, + {"instance": 47, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core22_temp", "record_id": 157}, + {"instance": 48, "dbus": "/xyz/openbmc_project/sensors/temperature/p1_core23_temp", "record_id": 160} + ] +} diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/dev_id.json b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/dev_id.json new file mode 100644 index 000000000..f443fe134 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/dev_id.json @@ -0,0 +1,2 @@ +{"id": 0, "revision": 128, "addn_dev_support": 141, + "manuf_id": 51974, "prod_id": 1, "aux": 0} diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/hwmon_sensors.hardcoded.yaml b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/hwmon_sensors.hardcoded.yaml new file mode 100644 index 000000000..2c897df8f --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/hwmon_sensors.hardcoded.yaml @@ -0,0 +1,1759 @@ +0xa5:
+ entityID: 0x20
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm0_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xa7:
+ entityID: 0x20
+ entityInstance: 2
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm1_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xa9:
+ entityID: 0x20
+ entityInstance: 3
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm2_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xab:
+ entityID: 0x20
+ entityInstance: 4
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm3_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xad:
+ entityID: 0x20
+ entityInstance: 5
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm4_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xaf:
+ entityID: 0x20
+ entityInstance: 6
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm5_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb1:
+ entityID: 0x20
+ entityInstance: 7
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm6_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb3:
+ entityID: 0x20
+ entityInstance: 8
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm7_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb5:
+ entityID: 0x20
+ entityInstance: 9
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm8_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb7:
+ entityID: 0x20
+ entityInstance: 10
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm9_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xb9:
+ entityID: 0x20
+ entityInstance: 11
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm10_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xbb:
+ entityID: 0x20
+ entityInstance: 12
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm11_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xbd:
+ entityID: 0x20
+ entityInstance: 13
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm12_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xbf:
+ entityID: 0x20
+ entityInstance: 14
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm13_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xc1:
+ entityID: 0x20
+ entityInstance: 15
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm14_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xc3:
+ entityID: 0x20
+ entityInstance: 16
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/dimm15_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x11:
+ entityID: 0x03
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core0_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+
+0x14:
+ entityID: 0x03
+ entityInstance: 2
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core1_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x17:
+ entityID: 0x03
+ entityInstance: 3
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core2_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x1a:
+ entityID: 0x03
+ entityInstance: 4
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core3_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x1d:
+ entityID: 0x03
+ entityInstance: 5
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core4_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x20:
+ entityID: 0x03
+ entityInstance: 6
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core5_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x23:
+ entityID: 0x03
+ entityInstance: 7
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core6_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x26:
+ entityID: 0x03
+ entityInstance: 8
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core7_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x29:
+ entityID: 0x03
+ entityInstance: 9
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core8_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x2c:
+ entityID: 0x03
+ entityInstance: 10
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core9_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x2f:
+ entityID: 0x03
+ entityInstance: 11
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core10_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x32:
+ entityID: 0x03
+ entityInstance: 12
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core11_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x35:
+ entityID: 0x03
+ entityInstance: 13
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core12_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x38:
+ entityID: 0x03
+ entityInstance: 14
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core13_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x3b:
+ entityID: 0x03
+ entityInstance: 15
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core14_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x3e:
+ entityID: 0x03
+ entityInstance: 16
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core15_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x41:
+ entityID: 0x03
+ entityInstance: 17
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core16_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x44:
+ entityID: 0x03
+ entityInstance: 18
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core17_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+0x47:
+ entityID: 0x03
+ entityInstance: 19
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core18_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x4a:
+ entityID: 0x03
+ entityInstance: 20
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core19_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x4d:
+ entityID: 0x03
+ entityInstance: 21
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core20_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x50:
+ entityID: 0x03
+ entityInstance: 22
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core21_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x53:
+ entityID: 0x03
+ entityInstance: 23
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core22_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x56:
+ entityID: 0x03
+ entityInstance: 24
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p0_core23_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x5b:
+ entityID: 0x03
+ entityInstance: 25
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core0_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x5e:
+ entityID: 0x03
+ entityInstance: 26
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core1_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x61:
+ entityID: 0x03
+ entityInstance: 27
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core2_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x64:
+ entityID: 0x03
+ entityInstance: 28
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core3_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x67:
+ entityID: 0x03
+ entityInstance: 29
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core4_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x6a:
+ entityID: 0x03
+ entityInstance: 30
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core5_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x6d:
+ entityID: 0x03
+ entityInstance: 31
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core6_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x70:
+ entityID: 0x03
+ entityInstance: 32
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core7_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x73:
+ entityID: 0x03
+ entityInstance: 33
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core8_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+0x76:
+ entityID: 0x03
+ entityInstance: 34
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core9_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x79:
+ entityID: 0x03
+ entityInstance: 35
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core10_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x7c:
+ entityID: 0x03
+ entityInstance: 36
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core11_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x7f:
+ entityID: 0x03
+ entityInstance: 37
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core12_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x82:
+ entityID: 0x03
+ entityInstance: 38
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core13_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x85:
+ entityID: 0x03
+ entityInstance: 39
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core14_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x88:
+ entityID: 0x03
+ entityInstance: 40
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core15_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x8b:
+ entityID: 0x03
+ entityInstance: 41
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core16_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x8e:
+ entityID: 0x03
+ entityInstance: 42
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core17_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x91:
+ entityID: 0x03
+ entityInstance: 43
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core18_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x94:
+ entityID: 0x03
+ entityInstance: 44
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core19_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x97:
+ entityID: 0x03
+ entityInstance: 45
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core20_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x9a:
+ entityID: 0x03
+ entityInstance: 46
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core21_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0x9d:
+ entityID: 0x03
+ entityInstance: 47
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core22_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xa0:
+ entityID: 0x03
+ entityInstance: 48
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/p1_core23_temp
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: -127
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe7:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p0_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe8:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p0_vdd_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe9:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p0_vdn_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xea:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p1_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xeb:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p1_vdd_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xec:
+ entityID: 0x0A
+ entityInstance: 2
+ sensorType: 0x08
+ path: /xyz/openbmc_project/sensors/power/p1_vdn_power
+ sensorReadingType: 0x01
+ multiplierM: 1
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
+ scale: -6
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xdd:
+ entityID: 0x1D
+ entityInstance: 1
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan0
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xde:
+ entityID: 0x1D
+ entityInstance: 2
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan1
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xdf:
+ entityID: 0x1D
+ entityInstance: 3
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan2
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe2:
+ entityID: 0x1D
+ entityInstance: 4
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan3
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe3:
+ entityID: 0x1D
+ entityInstance: 5
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan4
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe4:
+ entityID: 0x1D
+ entityInstance: 6
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan5
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xe5:
+ entityID: 0x1D
+ entityInstance: 7
+ sensorType: 0x04
+ path: /xyz/openbmc_project/sensors/fan_tach/fan6
+ sensorReadingType: 0x01
+ multiplierM: 100
+ offsetB: 0
+ bExp: 0
+ rExp: 0
+ unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
+ scale: 0
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xfc:
+ entityID: 0x23
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/cpu_1_ambient
+ sensorReadingType: 0x01
+ multiplierM: 30
+ offsetB: 0
+ bExp: 0
+ rExp: -2
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xfd:
+ entityID: 0x23
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/pcie
+ sensorReadingType: 0x01
+ multiplierM: 30
+ offsetB: 0
+ bExp: 0
+ rExp: -2
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
+0xfe:
+ entityID: 0x40
+ entityInstance: 1
+ sensorType: 0x01
+ path: /xyz/openbmc_project/sensors/temperature/ambient
+ sensorReadingType: 0x01
+ multiplierM: 20
+ offsetB: 0
+ bExp: 0
+ rExp: -2
+ unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
+ scale: -3
+ serviceInterface: org.freedesktop.DBus.Properties
+ readingType: readingData
+ sensorNamePattern: nameLeaf
+ interfaces:
+ xyz.openbmc_project.Sensor.Value:
+ Value:
+ Offsets:
+ 0xFF:
+ type: int64_t
+
diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/occ_sensors.hardcoded.yaml b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/occ_sensors.hardcoded.yaml new file mode 100644 index 000000000..2855b0e82 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/occ_sensors.hardcoded.yaml @@ -0,0 +1,42 @@ +0x08: + entityID: 0xD2 + entityInstance: 1 + sensorType: 0x09 + path: /org/open_power/control/occ0 + sensorReadingType: 0x09 + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + sensorNamePattern: nameLeaf + interfaces: + org.open_power.OCC.Status: + OccActive: + Offsets: + 0x00: + assert: false + deassert: true + type: bool + 0x01: + assert: true + deassert: false + type: bool +0x09: + entityID: 0xD2 + entityInstance: 2 + sensorType: 0x09 + path: /org/open_power/control/occ1 + sensorReadingType: 0x09 + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + sensorNamePattern: nameLeaf + interfaces: + org.open_power.OCC.Status: + OccActive: + Offsets: + 0x00: + assert: false + deassert: true + type: bool + 0x01: + assert: true + deassert: false + type: bool diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/power_reading.json b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/power_reading.json new file mode 100644 index 000000000..97e8f32b5 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-host/power_reading.json @@ -0,0 +1,3 @@ +{ + "path": "/xyz/openbmc_project/sensors/power/total_power" +} diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%.bbappend b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%.bbappend new file mode 100644 index 000000000..72d991c7e --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%/config.yaml b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%/config.yaml new file mode 100755 index 000000000..69faf9dee --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/phosphor-ipmi-sensor-inventory%/config.yaml @@ -0,0 +1,1939 @@ +0x02: + sensorType: 0x0F + path: /xyz/openbmc_project/state/host0 + sensorReadingType: 0x6F + serviceInterface: org.freedesktop.DBus.Properties + readingType: eventdata2 + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Boot.Progress: + BootProgress: + Offsets: + 0x13: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart + 0x00: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified + 0x01: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MemoryInit + 0x07: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.PCIInit + 0x14: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MotherboardInit + 0x03: + type: string + set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.SecondaryProcInit +0x03: + sensorType: 0x07 + path: /org/open_power/control/occ0 + sensorReadingType: 0x09 + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + org.open_power.OCC.Status: + OccActive: + Offsets: + 0x00: + assert: false + deassert: true + type: bool + 0x01: + assert: true + deassert: false + type: bool +0x04: + sensorType: 0x07 + path: /org/open_power/control/occ1 + sensorReadingType: 0x09 + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + org.open_power.OCC.Status: + OccActive: + Offsets: + 0x00: + assert: false + deassert: true + type: bool + 0x01: + assert: true + deassert: false + type: bool +0x08: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool +0x09: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool +0x0b: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm0 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x0c: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm1 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x0d: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm2 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x0e: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm3 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x0f: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm4 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x10: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm5 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x11: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm6 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x12: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm7 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x13: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm8 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x14: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm9 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x15: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm10 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x16: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm11 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x17: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm12 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x18: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm13 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x19: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm14 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x1a: + sensorType: 0x0C + path: /system/chassis/motherboard/dimm15 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x06: + assert: true + deassert: false + type: bool + Offsets: + 0x04: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x06: + assert: true + deassert: false + type: bool +0x2b: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core0 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x2c: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core1 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x2d: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core2 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x2e: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core3 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x2f: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core4 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x30: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core5 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x31: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core6 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x32: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core7 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x33: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core8 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x34: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core9 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x35: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core10 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x36: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core11 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x37: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core12 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x38: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core13 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x39: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core14 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3a: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core15 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3b: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core16 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3c: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core17 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3d: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core18 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3e: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core19 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x3f: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core20 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x40: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core21 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x41: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core22 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x42: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu0/core23 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x43: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core0 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x44: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core1 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x45: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core2 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x46: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core3 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x47: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core4 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x48: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core5 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x49: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core6 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4a: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core7 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4b: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core8 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4c: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core9 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4d: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core10 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4e: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core11 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x4f: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core12 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x50: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core13 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x51: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core14 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x52: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core15 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x53: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core16 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x54: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core17 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x55: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core18 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x56: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core19 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x57: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core20 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x58: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core21 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x59: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core22 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x5a: + sensorType: 0x07 + path: /system/chassis/motherboard/cpu1/core23 + sensorReadingType: 0x6F + serviceInterface: xyz.openbmc_project.Inventory.Manager + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.Decorator.OperationalStatus: + Functional: + Prereqs: + 0x07: + assert: true + deassert: false + type: bool + Offsets: + 0x08: + assert: false + deassert: true + type: bool + xyz.openbmc_project.Inventory.Item: + Present: + Offsets: + 0x07: + assert: true + deassert: false + type: bool + skipOn: deassert +0x8B: + sensorType: 0xC3 + path: /xyz/openbmc_project/state/host0 + sensorReadingType: 0x6F + serviceInterface: org.freedesktop.DBus.Properties + readingType: readingAssertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.Control.Boot.RebootAttempts: + AttemptsLeft: + Offsets: + 0xFF: + type: uint32_t +0x91: + sensorType: 0x1F + path: /xyz/openbmc_project/state/host0 + sensorReadingType: 0x6F + serviceInterface: org.freedesktop.DBus.Properties + readingType: assertion + mutability: Mutability::Write|Mutability::Read + interfaces: + xyz.openbmc_project.State.OperatingSystem.Status: + OperatingSystemState: + Offsets: + 0x02: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.PXEBoot + type: string + 0x06: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.BootComplete + type: string + 0x04: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CDROMBoot + type: string + 0x01: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CBoot + type: string + 0x03: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.DiagBoot + type: string + 0x05: + assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.ROMBoot + type: string diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/talos-ipmi-inventory-map-native.bb b/meta-rcs/meta-talos/recipes-phosphor/ipmi/talos-ipmi-inventory-map-native.bb new file mode 100644 index 000000000..7dc9393fb --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/talos-ipmi-inventory-map-native.bb @@ -0,0 +1,23 @@ +SUMMARY = "Talos II IPMI to DBus Inventory mapping." +PR = "r1" + +inherit native +inherit obmc-phosphor-license +inherit phosphor-ipmi-fru + +SRC_URI += "file://config.yaml" + +PROVIDES += "virtual/phosphor-ipmi-fru-inventory" + +S = "${WORKDIR}" + +do_install() { + # TODO: install this to inventory_datadir + # after ipmi-fru-parser untangles the host + # firmware config from the machine inventory. + DEST=${D}${config_datadir} + + install -d ${DEST} + install config.yaml ${DEST} +} + diff --git a/meta-rcs/meta-talos/recipes-phosphor/ipmi/talos-ipmi-inventory-map/config.yaml b/meta-rcs/meta-talos/recipes-phosphor/ipmi/talos-ipmi-inventory-map/config.yaml new file mode 100644 index 000000000..de2e81474 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/ipmi/talos-ipmi-inventory-map/config.yaml @@ -0,0 +1,538 @@ +1: + /system/chassis/motherboard/cpu0: + entityID: 3 + entityInstance: 1 + interfaces: + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Custom Field 2 + IPMIFruSection: Board + IPMIFruValueDelimiter: 58 + xyz.openbmc_project.Inventory.Decorator.Asset: + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Board + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Board + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Board + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Board + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Board +2: + /system/chassis/motherboard/cpu1: + entityID: 3 + entityInstance: 2 + interfaces: + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Custom Field 2 + IPMIFruSection: Board + IPMIFruValueDelimiter: 58 + xyz.openbmc_project.Inventory.Decorator.Asset: + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Board + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Board + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Board + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Board + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Board + Value: False +3: + /system/chassis/motherboard: + entityID: 7 + entityInstance: 1 + interfaces: + xyz.openbmc_project.Inventory.Decorator.Asset: + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Board + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Board + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Board + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Board + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Board + /system: + entityID: 7 + entityInstance: 1 + interfaces: + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Chassis + Model: + IPMIFruProperty: Part Number + IPMIFruSection: Chassis + + +4: + /system/chassis/motherboard/dimm0: + entityID: 32 + entityInstance: 1 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +5: + /system/chassis/motherboard/dimm1: + entityID: 32 + entityInstance: 2 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +6: + /system/chassis/motherboard/dimm2: + entityID: 32 + entityInstance: 3 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +7: + /system/chassis/motherboard/dimm3: + entityID: 32 + entityInstance: 4 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +8: + /system/chassis/motherboard/dimm4: + entityID: 32 + entityInstance: 5 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +9: + /system/chassis/motherboard/dimm5: + entityID: 32 + entityInstance: 6 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +10: + /system/chassis/motherboard/dimm6: + entityID: 32 + entityInstance: 7 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +11: + /system/chassis/motherboard/dimm7: + entityID: 32 + entityInstance: 8 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +12: + /system/chassis/motherboard/dimm8: + entityID: 32 + entityInstance: 9 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +13: + /system/chassis/motherboard/dimm9: + entityID: 32 + entityInstance: 10 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +14: + /system/chassis/motherboard/dimm10: + entityID: 32 + entityInstance: 11 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +15: + /system/chassis/motherboard/dimm11: + entityID: 32 + entityInstance: 12 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +16: + /system/chassis/motherboard/dimm12: + entityID: 32 + entityInstance: 13 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +17: + /system/chassis/motherboard/dimm13: + entityID: 32 + entityInstance: 14 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +18: + /system/chassis/motherboard/dimm14: + entityID: 32 + entityInstance: 15 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version +19: + /system/chassis/motherboard/dimm15: + entityID: 32 + entityInstance: 16 + interfaces: + xyz.openbmc_project.Inventory.Item: + PrettyName: + IPMIFruProperty: Name + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Asset: + SerialNumber: + IPMIFruProperty: Serial Number + IPMIFruSection: Product + Manufacturer: + IPMIFruProperty: Manufacturer + IPMIFruSection: Product + PartNumber: + IPMIFruProperty: Part Number + IPMIFruSection: Product + BuildDate: + IPMIFruProperty: Mfg Date + IPMIFruSection: Product + Model: + IPMIFruProperty: Model Number + IPMIFruSection: Product + xyz.openbmc_project.Inventory.Decorator.Revision: + Version: + IPMIFruProperty: Version diff --git a/meta-rcs/meta-talos/recipes-phosphor/leds/talos-led-manager-config-native.bb b/meta-rcs/meta-talos/recipes-phosphor/leds/talos-led-manager-config-native.bb new file mode 100644 index 000000000..dd8502ca3 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/leds/talos-led-manager-config-native.bb @@ -0,0 +1,19 @@ +SUMMARY = "Phosphor LED Group Management for Talos II" +PR = "r1" + +inherit native +inherit obmc-phosphor-utils +inherit obmc-phosphor-license + +PROVIDES += "virtual/phosphor-led-manager-config-native" + +SRC_URI += "file://led.yaml" +S = "${WORKDIR}" + +# Overwrite the example led layout yaml file prior +# to building the phosphor-led-manager package +do_install() { + SRC=${S} + DEST=${D}${datadir}/phosphor-led-manager + install -D ${SRC}/led.yaml ${DEST}/led.yaml +} diff --git a/meta-rcs/meta-talos/recipes-phosphor/leds/talos-led-manager-config/led.yaml b/meta-rcs/meta-talos/recipes-phosphor/leds/talos-led-manager-config/led.yaml new file mode 100755 index 000000000..884353b04 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/leds/talos-led-manager-config/led.yaml @@ -0,0 +1,38 @@ +bmc_booted: + power: + Action: 'Blink' + DutyOn: 50 + Period: 1000 + Priority: 'On' + + bmc_ready: + Action: 'On' + +power_on: + power: + Action: 'On' + DutyOn: 50 + Period: 0 + Priority: 'On' + +enclosure_fault: + fault: + Action: 'On' + +enclosure_identify: + identify: + Action: 'Blink' + DutyOn: 50 + Period: 1000 + +# The Op Panel on the Talos II system holds a multicolor LED. +# Both the 'fault' and 'identify' gpios are wired to the same LED. +# By holding one in 'on' while the other in 'blink' state, ensures +# the manufacturing process can verify both colors function +lamp_test: + fault: + Action: 'Blink' + DutyOn: 50 + Period: 1000 + identify: + Action: 'On' diff --git a/meta-rcs/meta-talos/recipes-phosphor/mboxd/mboxd.bbappend b/meta-rcs/meta-talos/recipes-phosphor/mboxd/mboxd.bbappend new file mode 100644 index 000000000..8b6248a46 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/mboxd/mboxd.bbappend @@ -0,0 +1 @@ +MBOXD_FLASH_SIZE = "64M" diff --git a/meta-rcs/meta-talos/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend b/meta-rcs/meta-talos/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend new file mode 100644 index 000000000..7a7c879e1 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/packagegroups/packagegroup-obmc-apps.bbappend @@ -0,0 +1 @@ +RDEPENDS_${PN}-inventory += " openpower-fru-vpd openpower-occ-control phosphor-cooling-type" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%.bbappend b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%.bbappend new file mode 100644 index 000000000..b794bef1a --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%.bbappend @@ -0,0 +1,25 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" + +TALOS_CHIPS = " \ + i2c@1e78a000/i2c-bus@440/max31785@52 \ + i2c@1e78a000/i2c-bus@440/w83773g@4c \ + i2c@1e78a000/i2c-bus@440/power-supply@68 \ + i2c@1e78a000/i2c-bus@440/power-supply@69 \ + " +TALOS_ITEMSFMT = "ahb/apb/{0}.conf" +TALOS_ITEMS = "${@compose_list(d, 'TALOS_ITEMSFMT', 'TALOS_CHIPS')}" + +TALOS_OCCS = " \ + 00--00--00--06/sbefifo1-dev0/occ-hwmon.1 \ + 00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2 \ + " + +TALOS_OCCSFMT = "devices/platform/gpio-fsi/fsi0/slave@00--00/{0}.conf" +TALOS_OCCITEMS = "${@compose_list(d, 'TALOS_OCCSFMT', 'TALOS_OCCS')}" + +ENVS = "obmc/hwmon/{0}" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "${@compose_list(d, 'ENVS', 'TALOS_ITEMS')}" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "${@compose_list(d, 'ENVS', 'TALOS_OCCITEMS')}" + +SYSTEMD_ENVIRONMENT_FILE_max31785-msl += "obmc/hwmon-max31785/talos.conf" +SYSTEMD_LINK_max31785-msl += "../phosphor-max31785-msl@.service:${SYSTEMD_DEFAULT_TARGET}.wants/phosphor-max31785-msl@talos.service" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon-max31785/talos.conf b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon-max31785/talos.conf new file mode 100644 index 000000000..0fc81037c --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon-max31785/talos.conf @@ -0,0 +1,3 @@ +BUS=12 +PATHS="/system/chassis/motherboard/fan0 /system/chassis/motherboard/fan1 /system/chassis/motherboard/fan2 /system/chassis/motherboard/fan3 /system/chassis/motherboard/fan4 /system/chassis/motherboard/fan5" +REVISION=0x3030 diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/max31785@52.conf b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/max31785@52.conf new file mode 100644 index 000000000..204de8b8b --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/max31785@52.conf @@ -0,0 +1,16 @@ +LABEL_fan1 = "fan0" +LABEL_fan2 = "fan1" +LABEL_fan3 = "fan2" +LABEL_fan4 = "fan3" +LABEL_fan5 = "fan5" +LABEL_fan6 = "fan4" + +ENABLE_fan1 = "1" +ENABLE_fan2 = "1" +ENABLE_fan3 = "1" +ENABLE_fan4 = "1" +ENABLE_fan5 = "1" +ENABLE_fan6 = "1" + +# Legacy mode +TARGET_MODE = "RPM" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/power-supply@68.conf b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/power-supply@68.conf new file mode 100644 index 000000000..e463b517c --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/power-supply@68.conf @@ -0,0 +1,23 @@ +LABEL_in1="ps1_input_voltage" +WARNHI_in1="290000" +WARNLO_in1="200000" +CRITHI_in1="300000" +CRITLO_in1="180000" + +LABEL_in2="ps1_output_voltage" +WARNHI_in2="12700" +WARNLO_in2="0" +CRITHI_in2="13000" +CRITLO_in2="0" + +LABEL_curr1="ps1_output_current" +WARNHI_curr1="170000" +WARNLO_curr1="0" +CRITHI_curr1="180000" +CRITLO_curr1="0" + +LABEL_power1="ps1_input_power" +WARNHI_power1="2350000000" +WARNLO_power1="0" +CRITHI_power1="2500000000" +CRITLO_power1="0" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/power-supply@69.conf b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/power-supply@69.conf new file mode 100644 index 000000000..2fadbdec0 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/power-supply@69.conf @@ -0,0 +1,23 @@ +LABEL_in1="ps0_input_voltage" +WARNHI_in1="290000" +WARNLO_in1="200000" +CRITHI_in1="300000" +CRITLO_in1="180000" + +LABEL_in2="ps0_output_voltage" +WARNHI_in2="12700" +WARNLO_in2="0" +CRITHI_in2="13000" +CRITLO_in2="0" + +LABEL_curr1="ps0_output_current" +WARNHI_curr1="170000" +WARNLO_curr1="0" +CRITHI_curr1="180000" +CRITLO_curr1="0" + +LABEL_power1="ps0_input_power" +WARNHI_power1="2350000000" +WARNLO_power1="0" +CRITHI_power1="2500000000" +CRITLO_power1="0" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/w83773g@4c.conf b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/w83773g@4c.conf new file mode 100644 index 000000000..506687fcd --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/ahb/apb/i2c@1e78a000/i2c-bus@440/w83773g@4c.conf @@ -0,0 +1,3 @@ +LABEL_temp1 = "pcie" +LABEL_temp2 = "cpu_1_ambient" +LABEL_temp3 = "ambient" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf new file mode 100644 index 000000000..7752d2bbb --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--06/sbefifo1-dev0/occ-hwmon.1.conf @@ -0,0 +1,123 @@ +MODE_temp1 = "label" +MODE_temp2 = "label" +MODE_temp3 = "label" +MODE_temp4 = "label" +MODE_temp5 = "label" +MODE_temp6 = "label" +MODE_temp7 = "label" +MODE_temp8 = "label" +MODE_temp9 = "label" +MODE_temp10 = "label" +MODE_temp11 = "label" +MODE_temp12 = "label" +MODE_temp13 = "label" +MODE_temp14 = "label" +MODE_temp15 = "label" +MODE_temp16 = "label" +MODE_temp17 = "label" +MODE_temp18 = "label" +MODE_temp19 = "label" +MODE_temp20 = "label" +MODE_temp21 = "label" +MODE_temp22 = "label" +MODE_temp23 = "label" +MODE_temp24 = "label" +MODE_temp25 = "label" +MODE_temp26 = "label" +MODE_temp27 = "label" +MODE_temp28 = "label" +MODE_temp29 = "label" +MODE_temp30 = "label" +MODE_temp31 = "label" +MODE_temp32 = "label" +MODE_freq1 = "label" +MODE_freq2 = "label" +MODE_freq3 = "label" +MODE_freq4 = "label" +MODE_freq5 = "label" +MODE_freq6 = "label" +MODE_freq7 = "label" +MODE_freq8 = "label" +MODE_freq9 = "label" +MODE_freq10 = "label" +MODE_freq11 = "label" +MODE_freq12 = "label" +MODE_freq13 = "label" +MODE_freq14 = "label" +MODE_freq15 = "label" +MODE_freq16 = "label" +MODE_freq17 = "label" +MODE_freq18 = "label" +MODE_freq19 = "label" +MODE_freq20 = "label" +MODE_freq21 = "label" +MODE_freq22 = "label" +MODE_freq23 = "label" +MODE_freq24 = "label" +MODE_freq25 = "label" +MODE_freq26 = "label" +MODE_freq27 = "label" +MODE_freq28 = "label" +MODE_freq29 = "label" +MODE_freq30 = "label" +MODE_freq31 = "label" +MODE_freq32 = "label" +LABEL_temp91 = "p0_core0_temp" +LABEL_temp92 = "p0_core1_temp" +LABEL_temp93 = "p0_core2_temp" +LABEL_temp94 = "p0_core3_temp" +LABEL_temp95 = "p0_core4_temp" +LABEL_temp96 = "p0_core5_temp" +LABEL_temp97 = "p0_core6_temp" +LABEL_temp98 = "p0_core7_temp" +LABEL_temp99 = "p0_core8_temp" +LABEL_temp100 = "p0_core9_temp" +LABEL_temp101 = "p0_core10_temp" +LABEL_temp102 = "p0_core11_temp" +LABEL_temp103 = "p0_core12_temp" +LABEL_temp104 = "p0_core13_temp" +LABEL_temp105 = "p0_core14_temp" +LABEL_temp106 = "p0_core15_temp" +LABEL_temp107 = "p0_core16_temp" +LABEL_temp108 = "p0_core17_temp" +LABEL_temp109 = "p0_core18_temp" +LABEL_temp110 = "p0_core19_temp" +LABEL_temp111 = "p0_core20_temp" +LABEL_temp112 = "p0_core21_temp" +LABEL_temp113 = "p0_core22_temp" +LABEL_temp114 = "p0_core23_temp" +LABEL_temp27 = "dimm0_temp" +LABEL_temp28 = "dimm1_temp" +LABEL_temp29 = "dimm2_temp" +LABEL_temp30 = "dimm3_temp" +LABEL_temp31 = "dimm4_temp" +LABEL_temp32 = "dimm5_temp" +LABEL_temp33 = "dimm6_temp" +LABEL_temp34 = "dimm7_temp" +LABEL_freq91 = "p0_core0_freq" +LABEL_freq92 = "p0_core1_freq" +LABEL_freq93 = "p0_core2_freq" +LABEL_freq94 = "p0_core3_freq" +LABEL_freq95 = "p0_core4_freq" +LABEL_freq96 = "p0_core5_freq" +LABEL_freq97 = "p0_core6_freq" +LABEL_freq98 = "p0_core7_freq" +LABEL_freq99 = "p0_core8_freq" +LABEL_freq100 = "p0_core9_freq" +LABEL_freq101 = "p0_core10_freq" +LABEL_freq102 = "p0_core11_freq" +LABEL_freq103 = "p0_core12_freq" +LABEL_freq104 = "p0_core13_freq" +LABEL_freq105 = "p0_core14_freq" +LABEL_freq106 = "p0_core15_freq" +LABEL_freq107 = "p0_core16_freq" +LABEL_freq108 = "p0_core17_freq" +LABEL_freq109 = "p0_core18_freq" +LABEL_freq110 = "p0_core19_freq" +LABEL_freq111 = "p0_core20_freq" +LABEL_freq112 = "p0_core21_freq" +LABEL_freq113 = "p0_core22_freq" +LABEL_freq114 = "p0_core23_freq" +LABEL_power2 = "p0_power" +LABEL_power3 = "p0_vdd_power" +LABEL_power4 = "p0_vdn_power" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf new file mode 100644 index 000000000..d90820d8c --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon%/obmc/hwmon/devices/platform/gpio-fsi/fsi0/slave@00--00/00--00--00--0a/fsi1/slave@01--00/01--01--00--06/sbefifo2-dev0/occ-hwmon.2.conf @@ -0,0 +1,123 @@ +MODE_temp1 = "label" +MODE_temp2 = "label" +MODE_temp3 = "label" +MODE_temp4 = "label" +MODE_temp5 = "label" +MODE_temp6 = "label" +MODE_temp7 = "label" +MODE_temp8 = "label" +MODE_temp9 = "label" +MODE_temp10 = "label" +MODE_temp11 = "label" +MODE_temp12 = "label" +MODE_temp13 = "label" +MODE_temp14 = "label" +MODE_temp15 = "label" +MODE_temp16 = "label" +MODE_temp17 = "label" +MODE_temp18 = "label" +MODE_temp19 = "label" +MODE_temp20 = "label" +MODE_temp21 = "label" +MODE_temp22 = "label" +MODE_temp23 = "label" +MODE_temp24 = "label" +MODE_temp25 = "label" +MODE_temp26 = "label" +MODE_temp27 = "label" +MODE_temp28 = "label" +MODE_temp29 = "label" +MODE_temp30 = "label" +MODE_temp31 = "label" +MODE_temp32 = "label" +MODE_freq1 = "label" +MODE_freq2 = "label" +MODE_freq3 = "label" +MODE_freq4 = "label" +MODE_freq5 = "label" +MODE_freq6 = "label" +MODE_freq7 = "label" +MODE_freq8 = "label" +MODE_freq9 = "label" +MODE_freq10 = "label" +MODE_freq11 = "label" +MODE_freq12 = "label" +MODE_freq13 = "label" +MODE_freq14 = "label" +MODE_freq15 = "label" +MODE_freq16 = "label" +MODE_freq17 = "label" +MODE_freq18 = "label" +MODE_freq19 = "label" +MODE_freq20 = "label" +MODE_freq21 = "label" +MODE_freq22 = "label" +MODE_freq23 = "label" +MODE_freq24 = "label" +MODE_freq25 = "label" +MODE_freq26 = "label" +MODE_freq27 = "label" +MODE_freq28 = "label" +MODE_freq29 = "label" +MODE_freq30 = "label" +MODE_freq31 = "label" +MODE_freq32 = "label" +LABEL_temp115 = "p1_core0_temp" +LABEL_temp116 = "p1_core1_temp" +LABEL_temp117 = "p1_core2_temp" +LABEL_temp118 = "p1_core3_temp" +LABEL_temp119 = "p1_core4_temp" +LABEL_temp120 = "p1_core5_temp" +LABEL_temp121 = "p1_core6_temp" +LABEL_temp122 = "p1_core7_temp" +LABEL_temp123 = "p1_core8_temp" +LABEL_temp124 = "p1_core9_temp" +LABEL_temp125 = "p1_core10_temp" +LABEL_temp126 = "p1_core11_temp" +LABEL_temp127 = "p1_core12_temp" +LABEL_temp128 = "p1_core13_temp" +LABEL_temp129 = "p1_core14_temp" +LABEL_temp130 = "p1_core15_temp" +LABEL_temp131 = "p1_core16_temp" +LABEL_temp132 = "p1_core17_temp" +LABEL_temp133 = "p1_core18_temp" +LABEL_temp134 = "p1_core19_temp" +LABEL_temp135 = "p1_core20_temp" +LABEL_temp136 = "p1_core21_temp" +LABEL_temp137 = "p1_core22_temp" +LABEL_temp138 = "p1_core23_temp" +LABEL_temp35 = "dimm8_temp" +LABEL_temp36 = "dimm9_temp" +LABEL_temp37 = "dimm10_temp" +LABEL_temp38 = "dimm11_temp" +LABEL_temp39 = "dimm12_temp" +LABEL_temp40 = "dimm13_temp" +LABEL_temp41 = "dimm14_temp" +LABEL_temp42 = "dimm15_temp" +LABEL_freq115 = "p1_core0_freq" +LABEL_freq116 = "p1_core1_freq" +LABEL_freq117 = "p1_core2_freq" +LABEL_freq118 = "p1_core3_freq" +LABEL_freq119 = "p1_core4_freq" +LABEL_freq120 = "p1_core5_freq" +LABEL_freq121 = "p1_core6_freq" +LABEL_freq122 = "p1_core7_freq" +LABEL_freq123 = "p1_core8_freq" +LABEL_freq124 = "p1_core9_freq" +LABEL_freq125 = "p1_core10_freq" +LABEL_freq126 = "p1_core11_freq" +LABEL_freq127 = "p1_core12_freq" +LABEL_freq128 = "p1_core13_freq" +LABEL_freq129 = "p1_core14_freq" +LABEL_freq130 = "p1_core15_freq" +LABEL_freq131 = "p1_core16_freq" +LABEL_freq132 = "p1_core17_freq" +LABEL_freq133 = "p1_core18_freq" +LABEL_freq134 = "p1_core19_freq" +LABEL_freq135 = "p1_core20_freq" +LABEL_freq136 = "p1_core21_freq" +LABEL_freq137 = "p1_core22_freq" +LABEL_freq138 = "p1_core23_freq" +LABEL_power2 = "p1_power" +LABEL_power3 = "p1_vdd_power" +LABEL_power4 = "p1_vdn_power" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules new file mode 100644 index 000000000..070d88f51 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/70-hwmon.rules @@ -0,0 +1 @@ +SUBSYSTEM=="hwmon", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="xyz.openbmc_project.Hwmon@%E{OF_FULLNAME}.service" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/70-iio.rules b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/70-iio.rules new file mode 100644 index 000000000..f332d11ac --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/70-iio.rules @@ -0,0 +1 @@ +SUBSYSTEM=="iio", ACTION=="add", TAG+="systemd", ENV{SYSTEMD_WANTS}+="xyz.openbmc_project.Hwmon@%E{OF_FULLNAME}.service" diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/phosphor-max31785-msl@.service b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/phosphor-max31785-msl@.service new file mode 100644 index 000000000..d9de6c081 --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/phosphor-max31785-msl@.service @@ -0,0 +1,11 @@ +[Unit] +Description=Phosphor MAX31785 MSL +ConditionFileNotEmpty={envfiledir}/obmc/hwmon-max31785/%I.conf +Wants=mapper-wait@-xyz-openbmc_project-inventory.service +After=mapper-wait@-xyz-openbmc_project-inventory.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/env max31785-msl -p "${{PATHS}}" -b ${{BUS}} -r ${{REVISION}} +EnvironmentFile={envfiledir}/obmc/hwmon-max31785/%I.conf +SyslogIdentifier=max31785-msl diff --git a/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service new file mode 100644 index 000000000..8dca3ad4b --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/sensors/phosphor-hwmon/xyz.openbmc_project.Hwmon@.service @@ -0,0 +1,11 @@ +[Unit] +Description=Phosphor Hwmon Poller +ConditionFileNotEmpty=/etc/default/obmc/hwmon/%I.conf +StopWhenUnneeded=true +After=xyz.openbmc_project.ObjectMapper.service + +[Service] +Restart=always +ExecStart=/usr/bin/env phosphor-hwmon-readd -o %f +SyslogIdentifier=phosphor-hwmon-readd +EnvironmentFile=/etc/default/obmc/hwmon/%I.conf diff --git a/meta-rcs/meta-talos/recipes-phosphor/workbook/talos-config.bb b/meta-rcs/meta-talos/recipes-phosphor/workbook/talos-config.bb new file mode 100644 index 000000000..03164579c --- /dev/null +++ b/meta-rcs/meta-talos/recipes-phosphor/workbook/talos-config.bb @@ -0,0 +1,5 @@ +SUMMARY = "Talos II board wiring" +DESCRIPTION = "Talos II wiring information for the Talos II OpenPOWER system." +PR = "r1" + +inherit config-in-skeleton |