Initial commit
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
PACKAGECONFIG:append:p10bmc = " ibm-hypervisor-cert"
|
||||
PACKAGECONFIG:append:witherspoon-tacoma = " ibm-hypervisor-cert"
|
||||
@@ -0,0 +1,35 @@
|
||||
SUMMARY = "AVSBus control"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit obmc-phosphor-systemd
|
||||
|
||||
RDEPENDS:${PN} += "i2c-tools"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
SRC_URI:append:witherspoon = " file://avsbus-enable.sh"
|
||||
SRC_URI:append:witherspoon = " file://avsbus-disable.sh"
|
||||
|
||||
do_install:witherspoon() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${S}/avsbus-enable.sh ${D}${bindir}/avsbus-enable.sh
|
||||
install -m 0755 ${S}/avsbus-disable.sh ${D}${bindir}/avsbus-disable.sh
|
||||
}
|
||||
|
||||
|
||||
TMPL_EN= "avsbus-enable@.service"
|
||||
TMPL_DIS= "avsbus-disable@.service"
|
||||
INSTFMT_EN= "avsbus-enable@{0}.service"
|
||||
INSTFMT_DIS= "avsbus-disable@{0}.service"
|
||||
TGTFMT = "obmc-chassis-poweron@{0}.target"
|
||||
FMT_EN = "../${TMPL_EN}:${TGTFMT}.requires/${INSTFMT_EN}"
|
||||
FMT_DIS = "../${TMPL_DIS}:${TGTFMT}.requires/${INSTFMT_DIS}"
|
||||
|
||||
SYSTEMD_SERVICE:${PN}:append:witherspoon = " ${TMPL_EN}"
|
||||
SYSTEMD_SERVICE:${PN}:append:witherspoon = " ${TMPL_DIS}"
|
||||
SYSTEMD_LINK:${PN}:append:witherspoon = " ${@compose_list(d, 'FMT_DIS', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
SYSTEMD_LINK:${PN}:append:witherspoon = " ${@compose_list(d, 'FMT_EN', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh
|
||||
# For each AVSBus attached power rail set the default boot voltage and then
|
||||
# program the OPERATION register to switch to AVSBus mode and update default
|
||||
# start voltage to what was last programmed in VOUT_COMMAND. This should be run
|
||||
# before power-on. This is platform specific settings that must be
|
||||
# updated/removed if not Swift.
|
||||
|
||||
i2cset -y 9 0x70 0x00 0x00 b # VDD 0 - PAGE set
|
||||
i2cset -y 9 0x70 0x01 0xB0 b # VDD 0
|
||||
i2cset -y 9 0x71 0x00 0x01 b # VCS 0 - PAGE set
|
||||
i2cset -y 9 0x71 0x01 0xB0 b # VCS 0
|
||||
i2cset -y 9 0x71 0x00 0x00 b # VDN 0 - PAGE set
|
||||
i2cset -y 9 0x71 0x01 0xB0 b # VDN 0
|
||||
|
||||
i2cset -y 10 0x70 0x00 0x00 b # VDD 1 - PAGE set
|
||||
i2cset -y 10 0x70 0x01 0xB0 b # VDD 1
|
||||
i2cset -y 10 0x71 0x00 0x01 b # VCS 1 - PAGE set
|
||||
i2cset -y 10 0x71 0x01 0xB0 b # VCS 1
|
||||
i2cset -y 10 0x71 0x00 0x00 b # VDN 1 - PAGE set
|
||||
i2cset -y 10 0x71 0x01 0xB0 b # VDN 1
|
||||
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Enable the AVS bus on VRMs
|
||||
Wants=obmc-power-start@%i.service
|
||||
Before=obmc-power-start@%i.service
|
||||
Conflicts=obmc-chassis-poweroff@%i.target
|
||||
ConditionPathExists=!/run/openbmc/chassis@%i-on
|
||||
|
||||
[Service]
|
||||
ExecStart={bindir}/avsbus-enable.sh
|
||||
SyslogIdentifier=avsbus-enable.sh
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
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 0x71 0x00 0x00 b # VDN 0 - PAGE set
|
||||
i2cset -y 4 0x71 0x01 0x80 b # VDN 0
|
||||
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 0x71 0x00 0x00 b # VDN 1 - PAGE set
|
||||
i2cset -y 5 0x71 0x01 0x80 b # VDN 1
|
||||
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Disable the AVS bus on the VRMs
|
||||
Wants=power-workarounds@%i.service
|
||||
After=power-workarounds@%i.service
|
||||
Before=vrm-control@%i.service
|
||||
Conflicts=obmc-chassis-poweroff@%i.target
|
||||
ConditionPathExists=!/run/openbmc/chassis@%i-on
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/avsbus-disable.sh
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
|
||||
i2cset -y 4 0x70 0x00 0x00 b # VDD 0 - PAGE set
|
||||
i2cset -y 4 0x70 0x21 0x00 0x01 i # VDD 0 - Set default HW boot voltage
|
||||
i2cset -y 4 0x70 0x01 0xB0 b # VDD 0
|
||||
i2cset -y 4 0x70 0x00 0x01 b # VCS 0 - PAGE set
|
||||
i2cset -y 4 0x70 0x21 0x08 0x01 i # VCS 0 - Set default HW boot voltage
|
||||
i2cset -y 4 0x70 0x01 0xB0 b # VCS 0
|
||||
i2cset -y 4 0x70 0x00 0x00 b # VCS 0 - PAGE reset
|
||||
i2cset -y 4 0x71 0x00 0x00 b # VDN 0 - PAGE set
|
||||
i2cset -y 4 0x71 0x21 0x00 0x01 i # VDN 0 - Set default HW boot voltage
|
||||
i2cset -y 4 0x71 0x01 0xB0 b # VDN 0
|
||||
i2cset -y 5 0x70 0x00 0x00 b # VDD 1 - PAGE set
|
||||
i2cset -y 5 0x70 0x21 0x00 0x01 i # VDD 1 - Set default HW boot voltage
|
||||
i2cset -y 5 0x70 0x01 0xB0 b # VDD 1
|
||||
i2cset -y 5 0x70 0x00 0x01 b # VCS 1 - PAGE set
|
||||
i2cset -y 5 0x70 0x21 0x08 0x01 i # VCS 1 - Set default HW boot voltage
|
||||
i2cset -y 5 0x70 0x01 0xB0 b # VCS 1
|
||||
i2cset -y 5 0x70 0x00 0x00 b # VCS 1 - PAGE reset
|
||||
i2cset -y 5 0x71 0x00 0x00 b # VDN 1 - PAGE set
|
||||
i2cset -y 5 0x71 0x21 0x00 0x01 i # VDN 1 - Set default HW boot voltage
|
||||
i2cset -y 5 0x71 0x01 0xB0 b # VDN 1
|
||||
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=Enable the AVS bus on VRMs
|
||||
Wants=vrm-control@%i.service
|
||||
After=vrm-control@%i.service
|
||||
Conflicts=obmc-chassis-poweroff@%i.target
|
||||
ConditionPathExists=!/run/openbmc/chassis@%i-on
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/avsbus-enable.sh
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1 @@
|
||||
EXTRA_OEMESON:append:p10bmc = " -Dpower-button-profile=host_then_chassis_poweroff"
|
||||
@@ -0,0 +1,6 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
|
||||
# Remove, from the p10bmc image, the service file that starts the skeleton power
|
||||
# control application. That image will use the power control application
|
||||
# included in the phosphor-power repository.
|
||||
OBMC_CONTROL_POWER_FMT:p10bmc = ""
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
POLL_INTERVAL="500"
|
||||
PGOOD_TIMEOUT="10"
|
||||
@@ -0,0 +1,36 @@
|
||||
SUMMARY = "Power device Workarounds"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit obmc-phosphor-systemd
|
||||
|
||||
RDEPENDS:${PN} += "i2c-tools"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}/${MACHINE}:"
|
||||
SRC_URI:append:witherspoon = " file://power-workarounds.sh"
|
||||
SRC_URI:append:swift = " file://power-workarounds.sh"
|
||||
|
||||
do_install:append:witherspoon() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${S}/power-workarounds.sh ${D}${bindir}/power-workarounds.sh
|
||||
}
|
||||
|
||||
do_install:append:swift() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${S}/power-workarounds.sh ${D}${bindir}/power-workarounds.sh
|
||||
}
|
||||
|
||||
TMPL_WA = "power-workarounds@.service"
|
||||
INSTFMT_WA = "power-workarounds@{0}.service"
|
||||
TGTFMT = "obmc-chassis-poweron@{0}.target"
|
||||
FMT_WA = "../${TMPL_WA}:${TGTFMT}.requires/${INSTFMT_WA}"
|
||||
|
||||
SYSTEMD_SERVICE:${PN}:append:witherspoon = " ${TMPL_WA}"
|
||||
SYSTEMD_LINK:${PN}:append:witherspoon = "${@compose_list(d, 'FMT_WA', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
|
||||
SYSTEMD_SERVICE:${PN}:append:swift = " ${TMPL_WA}"
|
||||
SYSTEMD_LINK:${PN}:append:swift = "${@compose_list(d, 'FMT_WA', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
# This should be run before power-on and used to patch/update power specific
|
||||
# hardware settings. This is platform specific settings that must be
|
||||
# updated/removed if not Swift.
|
||||
|
||||
########## Program TPS53915 FSW to desired frequency #########
|
||||
# FREQUENCY_CONFIG D3h, bits 2:0
|
||||
|
||||
# AVDD, bus 3 addr 1D, set to 600khz
|
||||
# 600khz = 1,0,0
|
||||
i2cset -y 3 0x1D 0xD3 0x04 b
|
||||
|
||||
# 3.3VA, bus 3 addr 1C, set to 600khz
|
||||
i2cset -y 3 0x1C 0xD3 0x04 b
|
||||
|
||||
# 3.3VB, bus 3 addr 1B, set to 600khz
|
||||
i2cset -y 3 0x1B 0xD3 0x04 b
|
||||
|
||||
# 5.0V, bus 3 addr 1A, set to 850khz
|
||||
# 850khz = 1,1,0
|
||||
i2cset -y 3 0x1A 0xD3 0x06 b
|
||||
########## END Program TPS53915 FSW to desired frequency #########
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
[Unit]
|
||||
Description=Perform power workarounds on VRMs after PGOOD is up
|
||||
Wants=obmc-power-on@%i.target
|
||||
After=obmc-power-on@%i.target
|
||||
Before=obmc-host-start-pre@%i.target
|
||||
Conflicts=obmc-chassis-poweroff@%i.target
|
||||
ConditionPathExists=!/run/openbmc/chassis@%i-on
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/power-workarounds.sh
|
||||
SyslogIdentifier=power-workarounds.sh
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1,136 @@
|
||||
#!/bin/sh
|
||||
|
||||
# ensure VCS ON_OFF_CONFIG set correctly from prior FW drivers
|
||||
# A side
|
||||
i2cset -y 4 0x70 0x00 0x01 b
|
||||
i2cset -y 4 0x70 0x02 0x16 b #respond to ENABLE pin
|
||||
i2cset -y 4 0x70 0x00 0x00 b
|
||||
# B side
|
||||
i2cset -y 5 0x70 0x00 0x01 b
|
||||
i2cset -y 5 0x70 0x02 0x16 b #respond to ENABLE pin
|
||||
i2cset -y 5 0x70 0x00 0x00 b
|
||||
|
||||
# vddio = 1.0V, mdat/sdat PU enabled
|
||||
i2cset -y 4 0x12 0xFF 0x00 b # VDD/VCS 0
|
||||
i2cset -y 4 0x12 0x2E 0x03 b # VDD/VCS 0
|
||||
i2cset -y 4 0x13 0xFF 0x00 b # VDN 0
|
||||
i2cset -y 4 0x13 0x2E 0x03 b # VDN 0
|
||||
i2cset -y 5 0x12 0xFF 0x00 b # VDD/VCS 1
|
||||
i2cset -y 5 0x12 0x2E 0x03 b # VDD/VCS 1
|
||||
i2cset -y 5 0x13 0xFF 0x00 b # VDN 1
|
||||
i2cset -y 5 0x13 0x2E 0x03 b # VDN 1
|
||||
|
||||
# A side VDDR - set to 1.23V
|
||||
i2cset -y 4 0x71 0x00 0x01
|
||||
i2cset -y 4 0x71 0x21 0x3B 0x01 i
|
||||
i2cset -y 4 0x71 0x00 0x00
|
||||
|
||||
# B side VDDR - set to 1.23V
|
||||
i2cset -y 5 0x71 0x00 0x01
|
||||
i2cset -y 5 0x71 0x21 0x3B 0x01 i
|
||||
i2cset -y 5 0x71 0x00 0x00
|
||||
|
||||
# VDN A - PGOOD_ON threshold
|
||||
i2cset -y 4 0x71 0x00 0x00 b # PAGE
|
||||
i2cset -y 4 0x71 0x5E 0xCD 0x00 i # set to 0.8V
|
||||
|
||||
# VDN B - PGOOD_ON threshold
|
||||
i2cset -y 5 0x71 0x00 0x00 b # PAGE
|
||||
i2cset -y 5 0x71 0x5E 0xCD 0x00 i # set to 0.8V
|
||||
|
||||
# unbind ucd driver to permit i2cset
|
||||
ucd_retries=5
|
||||
ucd=
|
||||
|
||||
ucdpath="/sys/bus/i2c/drivers/ucd9000"
|
||||
if [ -e $ucdpath ]
|
||||
then
|
||||
# shellcheck disable=SC2010
|
||||
ucd=$(ls -1 $ucdpath | grep 64)
|
||||
if [ -n "$ucd" ]
|
||||
then
|
||||
echo "$ucd" > $ucdpath/unbind
|
||||
fi
|
||||
fi
|
||||
|
||||
# make sure VCS ON_OFF_CONFIG set correctly from old FW releases
|
||||
i2cset -y 11 0x64 0x00 0x0E i
|
||||
i2cset -y 11 0x64 0x02 0x16 i
|
||||
i2cset -y 11 0x64 0x00 0x0F i
|
||||
i2cset -y 11 0x64 0x02 0x16 i
|
||||
|
||||
## move memory enables to align with VDN (VDN to VDDR leakage issue)
|
||||
#GPO_CONFIG_1 (GPIO15) : mem 0 reg enables
|
||||
i2cset -y 11 0x64 0xF7 0x00 i
|
||||
i2cset -y 11 0x64 0xF8 0x15 0x6E 0x80 0x08 0x00 0x00 0x00 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 i
|
||||
#GPO_CONFIG_2 (GPIO7) : mem 1 reg enables
|
||||
i2cset -y 11 0x64 0xF7 0x01 i
|
||||
i2cset -y 11 0x64 0xF8 0x15 0x16 0x80 0x08 0x00 0x00 0x20 0x40 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 i
|
||||
|
||||
# change VDN delays based on UCD MFR_REVISION setting
|
||||
REV=$(i2cget -y 11 0x64 0x9B i 2|cut -f2 -d' ')
|
||||
if [ "$REV" = "0x01" ] || [ "$REV" = "0x02" ] ; then
|
||||
# use 20ms delay for VDN
|
||||
#TON_DELAY rail 8
|
||||
i2cset -y 11 0x64 0x00 0x07 i
|
||||
i2cset -y 11 0x64 0x60 0x80 0xDA i
|
||||
#TON_DELAY rail 9
|
||||
i2cset -y 11 0x64 0x00 0x08 i
|
||||
i2cset -y 11 0x64 0x60 0x80 0xDA i
|
||||
else
|
||||
# use 70ms delay for VDN
|
||||
#TON_DELAY rail 8
|
||||
i2cset -y 11 0x64 0x00 0x07 i
|
||||
i2cset -y 11 0x64 0x60 0x30 0xEA i
|
||||
#TON_DELAY rail 9
|
||||
i2cset -y 11 0x64 0x00 0x08 i
|
||||
i2cset -y 11 0x64 0x60 0x30 0xEA i
|
||||
fi
|
||||
|
||||
# Raise AVDD +100mV
|
||||
i2cset -y 11 0x64 0x00 0x09 i # set PAGE
|
||||
i2cset -y 11 0x64 0xF5 0x81 i # set margin_config
|
||||
i2cset -y 11 0x64 0x21 0x85 0x33 i # set VOUT_COMMAND
|
||||
|
||||
# Increase over-current settings
|
||||
#VDD A phase current
|
||||
i2cset -y 4 0x12 0xFF 0x04 b # set window register high byte to 4
|
||||
i2cset -y 4 0x12 0x3C 0x80 b # Set to 64A
|
||||
#VDD B phase current
|
||||
i2cset -y 5 0x12 0xFF 0x04 b # set window register high byte to 4
|
||||
i2cset -y 5 0x12 0x3C 0x80 b # Set to 64A
|
||||
#VDD A master OC fault to 445A
|
||||
i2cset -y 4 0x70 0x00 0x00 b # PAGE
|
||||
i2cset -y 4 0x70 0x46 0x08DE w
|
||||
# VDD A master OC warn to 326A
|
||||
i2cset -y 4 0x70 0x4A 0x08A3 w # A308
|
||||
#VDD B master OC fault to 445A
|
||||
i2cset -y 5 0x70 0x00 0x00 b # PAGE
|
||||
i2cset -y 5 0x70 0x46 0x08DE w
|
||||
# VDD B master OC warn to 326A
|
||||
i2cset -y 5 0x70 0x4A 0x08A3 w
|
||||
#VCS phase current to 30A C/C
|
||||
i2cset -y 4 0x12 0xFF 0x08 b # set window register to 8
|
||||
i2cset -y 4 0x12 0x3C 0x3C b # 30A
|
||||
i2cset -y 5 0x12 0xFF 0x08 b # set window register to 8
|
||||
i2cset -y 5 0x12 0x3C 0x3C b # 30A
|
||||
#VCS master OC to 43A
|
||||
i2cset -y 4 0x70 0x00 0x01 # PAGE 1
|
||||
i2cset -y 4 0x70 0x46 0x0816 w # OC to 43A
|
||||
i2cset -y 5 0x70 0x00 0x01 # PAGE 1
|
||||
i2cset -y 5 0x70 0x46 0x0816 w # OC to 43A
|
||||
|
||||
# re-bind ucd driver only if we unbound it (i.e. ucd has been set with a value)
|
||||
if [ -e $ucdpath ] && [ -n "$ucd" ]; then
|
||||
j=0
|
||||
until [ $j -ge $ucd_retries ] || [ -e "$ucdpath/$ucd" ]; do
|
||||
j=$((j+1))
|
||||
# shellcheck disable=2320
|
||||
echo "$ucd" > $ucdpath/bind || ret=$?
|
||||
if [ $j -gt 1 ]; then
|
||||
echo "rebinding UCD driver. Retry number $j"
|
||||
sleep 1
|
||||
fi
|
||||
done
|
||||
if [ ! -e "$ucdpath/$ucd" ]; then exit "$ret"; fi
|
||||
fi
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
[Unit]
|
||||
Description=Perform power workarounds on VRMs
|
||||
Wants=ir35221-on-unbind@%i.service
|
||||
After=ir35221-on-unbind@%i.service
|
||||
Before=avsbus-disable@%i.service
|
||||
Before=obmc-power-on@%i.target
|
||||
Conflicts=obmc-chassis-poweroff@%i.target
|
||||
ConditionPathExists=!/run/openbmc/chassis@%i-on
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/power-workarounds.sh
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1,39 @@
|
||||
SUMMARY = "VRM Overrides"
|
||||
DESCRIPTION = "Sets VRMs to custom voltages"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit obmc-phosphor-systemd
|
||||
|
||||
RDEPENDS:${PN} += "i2c-tools bash"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
SRC_URI:append:ibm-ac-server = " file://ir35221-unbind-bind.sh"
|
||||
SRC_URI:append:ibm-ac-server = " file://vrm-control.sh"
|
||||
|
||||
do_install:ibm-ac-server() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${WORKDIR}/ir35221-unbind-bind.sh ${D}${bindir}/ir35221-unbind-bind.sh
|
||||
install -m 0755 ${WORKDIR}/vrm-control.sh ${D}${bindir}/vrm-control.sh
|
||||
}
|
||||
|
||||
TMPL = "vrm-control@.service"
|
||||
INSTFMT = "vrm-control@{0}.service"
|
||||
TGTFMT_ON = "obmc-chassis-poweron@{0}.target"
|
||||
FMT_ON = "../${TMPL}:${TGTFMT_ON}.requires/${INSTFMT}"
|
||||
|
||||
TMPL_ON_IRBIND = "ir35221-on-bind@.service"
|
||||
INSTFMT_ON_IRBIND = "ir35221-on-bind@{0}.service"
|
||||
FMT_ON_IRBIND = "../${TMPL_ON_IRBIND}:${TGTFMT_ON}.wants/${INSTFMT_ON_IRBIND}"
|
||||
|
||||
TMPL_ON_IRUNBIND = "ir35221-on-unbind@.service"
|
||||
INSTFMT_ON_IRUNBIND = "ir35221-on-unbind@{0}.service"
|
||||
FMT_ON_IRUNBIND = "../${TMPL_ON_IRUNBIND}:${TGTFMT_ON}.requires/${INSTFMT_ON_IRUNBIND}"
|
||||
|
||||
SYSTEMD_SERVICE:${PN}:append:ibm-ac-server = " ${TMPL_ON_IRUNBIND} ${TMPL_ON_IRBIND}"
|
||||
SYSTEMD_SERVICE:${PN}:append:ibm-ac-server = " ${TMPL}"
|
||||
SYSTEMD_LINK:${PN}:append:ibm-ac-server = " ${@compose_list(d, 'FMT_ON', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
SYSTEMD_LINK:${PN}:append:ibm-ac-server = " ${@compose_list(d, 'FMT_ON_IRBIND', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
SYSTEMD_LINK:${PN}:append:ibm-ac-server = " ${@compose_list(d, 'FMT_ON_IRUNBIND', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
@@ -0,0 +1,82 @@
|
||||
#!/bin/bash
|
||||
# #########################################################
|
||||
# Script to run on witherspoon BMC to unbind/bind the ir35221
|
||||
# driver's devices
|
||||
|
||||
status=0
|
||||
max_retries=3
|
||||
driver_path="/sys/bus/i2c/drivers/ir35221/"
|
||||
platform_path="/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/"
|
||||
|
||||
unbind_driver () {
|
||||
echo "$1" > $driver_path/unbind
|
||||
}
|
||||
|
||||
bind_driver () {
|
||||
device=$1
|
||||
tries=0
|
||||
|
||||
until [ $tries -ge $max_retries ]; do
|
||||
tries=$((tries+1))
|
||||
ret=0
|
||||
# shellcheck disable=SC2320
|
||||
echo "$device" > $driver_path/bind || ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
echo "VRM $1 bind failed. Try $tries"
|
||||
sleep 1
|
||||
else
|
||||
tries=$((max_retries+1))
|
||||
fi
|
||||
done
|
||||
|
||||
#Script will return a nonzero value if any binds fail.
|
||||
if [ "$ret" -ne 0 ]; then
|
||||
status=$ret
|
||||
fi
|
||||
}
|
||||
|
||||
if [ "$1" = "unbind" ]
|
||||
then
|
||||
if [ -e $driver_path/4-0070 ]
|
||||
then
|
||||
unbind_driver "4-0070"
|
||||
fi
|
||||
|
||||
if [ -e $driver_path/4-0071 ]
|
||||
then
|
||||
unbind_driver "4-0071"
|
||||
fi
|
||||
|
||||
if [ -e $driver_path/5-0070 ]
|
||||
then
|
||||
unbind_driver "5-0070"
|
||||
fi
|
||||
|
||||
if [ -e $driver_path/5-0071 ]
|
||||
then
|
||||
unbind_driver "5-0071"
|
||||
fi
|
||||
elif [ "$1" = "bind" ]
|
||||
then
|
||||
if [ -e $platform_path/1e78a140.i2c-bus/i2c-4/4-0070 ]
|
||||
then
|
||||
bind_driver "4-0070"
|
||||
fi
|
||||
|
||||
if [ -e $platform_path/1e78a140.i2c-bus/i2c-4/4-0071 ]
|
||||
then
|
||||
bind_driver "4-0071"
|
||||
fi
|
||||
|
||||
if [ -e $platform_path/1e78a180.i2c-bus/i2c-5/5-0070 ]
|
||||
then
|
||||
bind_driver "5-0070"
|
||||
fi
|
||||
|
||||
if [ -e $platform_path/1e78a180.i2c-bus/i2c-5/5-0071 ]
|
||||
then
|
||||
bind_driver "5-0071"
|
||||
fi
|
||||
fi
|
||||
|
||||
exit "$status"
|
||||
@@ -0,0 +1,15 @@
|
||||
[Unit]
|
||||
Description=Power on bind ir35221 device driver devs
|
||||
After=avsbus-enable@%i.service
|
||||
Wants=obmc-host-start-pre@%i.target
|
||||
Before=obmc-host-start-pre@%i.target
|
||||
Conflicts=obmc-chassis-poweroff@%i.target
|
||||
ConditionPathExists=!/run/openbmc/chassis@%i-on
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/ir35221-unbind-bind.sh bind
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=power on mode unbind ir35221 device driver devs
|
||||
Wants=obmc-power-start-pre@%i.target
|
||||
Before=obmc-power-start-pre@%i.target
|
||||
Conflicts=obmc-chassis-poweroff@%i.target
|
||||
ConditionPathExists=!/run/openbmc/chassis@%i-on
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/ir35221-unbind-bind.sh unbind
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1,155 @@
|
||||
#!/bin/bash
|
||||
# #########################################################
|
||||
# Script to run on witherspoon BMC to read/set vrm voltages
|
||||
|
||||
|
||||
# #########################################################
|
||||
function d2v() {
|
||||
# usage: d2v <decimal volts>
|
||||
|
||||
echo "$1" | awk '{print $1 * 256 + .5}' | cut -d '.' -f 1
|
||||
}
|
||||
|
||||
|
||||
# #########################################################
|
||||
function v2d() {
|
||||
# usage: v2d <hex val>
|
||||
|
||||
printf " %0.3fV" "$(echo "$1" | awk '{print $1 / 256}')"
|
||||
}
|
||||
|
||||
|
||||
# #########################################################
|
||||
function i2d() {
|
||||
# usage: i2d <hex val> <current divisor>
|
||||
|
||||
# parse current mantisa and exponent
|
||||
# format: SEEE ESMM MMMM MMMM
|
||||
e=$(( $1/0x800 ))
|
||||
esign=$(( e/0x10 ))
|
||||
m=$(( $1 & 0x07FF ))
|
||||
msign=$(( m/0x0400 ))
|
||||
|
||||
if [ $msign -eq 1 ]
|
||||
then
|
||||
# calc ones compliment
|
||||
m=$(( (m^0x07FF)+1 ))
|
||||
m=$(( -m ))
|
||||
fi
|
||||
if [ $esign -eq 1 ]
|
||||
then
|
||||
# calc ones compliment
|
||||
e=$(( (e^0x1F)+1 ))
|
||||
e=$(( -e ))
|
||||
fi
|
||||
printf " %0.3fA\n" "$(echo $m $e "$2" | awk '{print ($1 * 2^$2)}')"
|
||||
}
|
||||
|
||||
|
||||
# #########################################################
|
||||
function 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 vddra vppa vddb vcsb vdnb viob vddrb vppb
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$1" == "-h" ]
|
||||
then
|
||||
echo " Usage: vrm [<rail>=[value] [<rail>=[value]] ...]"
|
||||
echo " rail: vdda vcsa vdna vioa vddra vppa vddb vcsb vdnb viob vddrb vppb vdnd viod"
|
||||
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 0x71 2 0 "$val"
|
||||
;;
|
||||
vdnb)
|
||||
rw_vc 5 0x71 2 0 "$val"
|
||||
;;
|
||||
vioa)
|
||||
rw_vc 4 0x40 2 x "$val"
|
||||
;;
|
||||
viob)
|
||||
rw_vc 5 0x40 2 x "$val"
|
||||
;;
|
||||
vddra)
|
||||
rw_vc 4 0x71 2 1 "$val"
|
||||
;;
|
||||
vddrb)
|
||||
rw_vc 5 0x71 2 1 "$val"
|
||||
;;
|
||||
vppa)
|
||||
rw_vc 12 0x41 2 x "$val"
|
||||
;;
|
||||
vppb)
|
||||
rw_vc 13 0x41 2 x "$val"
|
||||
;;
|
||||
vdnd)
|
||||
rw_vc 2 0x70 2 0 "$val"
|
||||
;;
|
||||
viod)
|
||||
rw_vc 2 0x70 2 1 "$val"
|
||||
;;
|
||||
*)
|
||||
echo " non-existant"
|
||||
esac
|
||||
done
|
||||
@@ -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
|
||||
ConditionPathExists=!/run/openbmc/chassis@%i-on
|
||||
|
||||
[Service]
|
||||
ExecStart=/usr/bin/vrm-control.sh vdna=0.9 vdnb=0.9
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
|
||||
[Install]
|
||||
WantedBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1,82 @@
|
||||
SUMMARY = "YAML configuration for ACx22 systems"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit mrw-xml
|
||||
|
||||
SRC_URI:ibm-ac-server = " \
|
||||
file://acx22-ipmi-fru-bmc.yaml \
|
||||
file://acx22-ipmi-fru-not-sent-by-host.yaml \
|
||||
file://acx22-ipmi-hwmon-sensors.yaml \
|
||||
file://acx22-ipmi-inventory-sensors.yaml \
|
||||
file://acx22-ipmi-occ-sensors.yaml \
|
||||
file://acx22-ipmi-sensors-mrw.yaml \
|
||||
"
|
||||
DEPENDS = " \
|
||||
mrw-native \
|
||||
mrw-perl-tools-native \
|
||||
openpower-yaml-config \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
ACx22_IPMI_EXTRA_FRU_READ_YAMLS:ibm-ac-server = " \
|
||||
acx22-ipmi-fru-bmc.yaml \
|
||||
acx22-ipmi-fru-not-sent-by-host.yaml \
|
||||
"
|
||||
ACx22_IPMI_EXTRA_SENSOR_YAMLS = " \
|
||||
acx22-ipmi-hwmon-sensors.yaml \
|
||||
acx22-ipmi-occ-sensors.yaml \
|
||||
"
|
||||
|
||||
do_install() {
|
||||
perlbin="${STAGING_DIR_NATIVE}${bindir}/perl-native/perl"
|
||||
scriptpath=${STAGING_DIR_NATIVE}${bindir}
|
||||
mrw=${STAGING_DIR_NATIVE}${datadir}/obmc-mrw/${MRW_XML}
|
||||
op_configpath=${STAGING_DIR_HOST}${datadir}/openpower-yaml-config
|
||||
|
||||
# generate extra-properties.yaml from the MRW for ipmi-fru-parser
|
||||
$perlbin $scriptpath/gen_fru_properties.pl -m $mrw \
|
||||
-c $op_configpath/ipmi-fru-properties-mrw.yaml \
|
||||
-o extra-properties.yaml ${EXTRA_MRW_SCRIPT_ARGS}
|
||||
|
||||
# generate fru-read.yaml from the MRW, for ipmid and ipmi-fru-parser
|
||||
$perlbin $scriptpath/gen_ipmi_fru.pl -i $mrw \
|
||||
-m $op_configpath/ipmi-hostboot-fru-mrw.yaml \
|
||||
-o fru-read-partial.yaml ${EXTRA_MRW_SCRIPT_ARGS}
|
||||
cat fru-read-partial.yaml ${ACx22_IPMI_EXTRA_FRU_READ_YAMLS} \
|
||||
> fru-read.yaml
|
||||
|
||||
# generate inventory-sensors.yaml from the MRW, for ipmid
|
||||
$perlbin $scriptpath/gen_ipmi_sel.pl -i $mrw \
|
||||
-m acx22-ipmi-inventory-sensors.yaml -o inventory-sensors.yaml \
|
||||
${EXTRA_MRW_SCRIPT_ARGS}
|
||||
|
||||
# generate sensors.yaml from the MRW, for ipmid
|
||||
cat acx22-ipmi-sensors-mrw.yaml \
|
||||
$op_configpath/ipmi-hostboot-volatile-sensor-mrw.yaml \
|
||||
$op_configpath/ipmi-occ-active-sensor-mrw.yaml \
|
||||
> sensors-mrw.yaml
|
||||
$perlbin $scriptpath/gen_ipmi_sensor.pl -i $mrw -m sensors-mrw.yaml \
|
||||
-o sensors-partial.yaml ${EXTRA_MRW_SCRIPT_ARGS}
|
||||
cat sensors-partial.yaml ${ACx22_IPMI_EXTRA_SENSOR_YAMLS} \
|
||||
> sensors.yaml
|
||||
|
||||
install -m 0644 -D extra-properties.yaml \
|
||||
${D}${datadir}/${BPN}/ipmi-extra-properties.yaml
|
||||
install -m 0644 -D fru-read.yaml ${D}${datadir}/${BPN}/ipmi-fru-read.yaml
|
||||
install -m 0644 -D inventory-sensors.yaml \
|
||||
${D}${datadir}/${BPN}/ipmi-inventory-sensors.yaml
|
||||
install -m 0644 -D sensors.yaml ${D}${datadir}/${BPN}/ipmi-sensors.yaml
|
||||
}
|
||||
|
||||
FILES:${PN}-dev = " \
|
||||
${datadir}/${BPN}/ipmi-extra-properties.yaml \
|
||||
${datadir}/${BPN}/ipmi-fru-read.yaml \
|
||||
${datadir}/${BPN}/ipmi-inventory-sensors.yaml \
|
||||
${datadir}/${BPN}/ipmi-sensors.yaml \
|
||||
"
|
||||
|
||||
ALLOW_EMPTY:${PN} = "1"
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
1:
|
||||
Offset: 2
|
||||
SensorType: 18
|
||||
3:
|
||||
Offset: 8
|
||||
SensorType: 7
|
||||
7:
|
||||
Offset: 0
|
||||
SensorType: 199
|
||||
32:
|
||||
Offset: 4
|
||||
SensorType: 12
|
||||
208:
|
||||
Offset: 8
|
||||
SensorType: 7
|
||||
216:
|
||||
Offset: 8
|
||||
SensorType: 23
|
||||
@@ -0,0 +1,44 @@
|
||||
8:
|
||||
entityID: 210
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
org.open_power.OCC.Status:
|
||||
OccActive:
|
||||
Offsets:
|
||||
0:
|
||||
assert: false
|
||||
deassert: true
|
||||
type: bool
|
||||
1:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
path: /org/open_power/control/occ0
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 9
|
||||
sensorType: 9
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
9:
|
||||
entityID: 210
|
||||
entityInstance: 2
|
||||
interfaces:
|
||||
org.open_power.OCC.Status:
|
||||
OccActive:
|
||||
Offsets:
|
||||
0:
|
||||
assert: false
|
||||
deassert: true
|
||||
type: bool
|
||||
1:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
path: /org/open_power/control/occ1
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 9
|
||||
sensorType: 9
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
+351
@@ -0,0 +1,351 @@
|
||||
boot_count_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Control.Boot.RebootAttempts:
|
||||
AttemptsLeft:
|
||||
Offsets:
|
||||
255:
|
||||
type: uint32_t
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
path: /xyz/openbmc_project/state/host0
|
||||
readingType: readingAssertion
|
||||
sensorNamePattern: nameProperty
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
cpu_func_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
Present:
|
||||
Offsets:
|
||||
7:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
xyz.openbmc_project.State.Decorator.OperationalStatus:
|
||||
Functional:
|
||||
Offsets:
|
||||
8:
|
||||
assert: false
|
||||
deassert: true
|
||||
type: bool
|
||||
Prereqs:
|
||||
7:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: xyz.openbmc_project.Inventory.Manager
|
||||
cpucore_func_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
Present:
|
||||
Offsets:
|
||||
7:
|
||||
assert: true
|
||||
deassert: false
|
||||
skipOn: deassert
|
||||
type: bool
|
||||
xyz.openbmc_project.State.Decorator.OperationalStatus:
|
||||
Functional:
|
||||
Offsets:
|
||||
8:
|
||||
assert: false
|
||||
deassert: true
|
||||
type: bool
|
||||
Prereqs:
|
||||
7:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameParentLeaf
|
||||
serviceInterface: xyz.openbmc_project.Inventory.Manager
|
||||
cpucore_temp_sensor:
|
||||
bExp: 0
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
offsetB: -127
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
dimm_func_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
Present:
|
||||
Offsets:
|
||||
6:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
xyz.openbmc_project.State.Decorator.OperationalStatus:
|
||||
Functional:
|
||||
Offsets:
|
||||
4:
|
||||
assert: false
|
||||
deassert: true
|
||||
type: bool
|
||||
Prereqs:
|
||||
6:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: xyz.openbmc_project.Inventory.Manager
|
||||
dimm_temp_sensor:
|
||||
bExp: 0
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
offsetB: -127
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
fw_boot_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.State.Boot.Progress:
|
||||
BootProgress:
|
||||
Offsets:
|
||||
0:
|
||||
set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.Unspecified
|
||||
type: string
|
||||
1:
|
||||
set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MemoryInit
|
||||
type: string
|
||||
3:
|
||||
set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.SecondaryProcInit
|
||||
type: string
|
||||
7:
|
||||
set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.PCIInit
|
||||
type: string
|
||||
19:
|
||||
set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.OSStart
|
||||
type: string
|
||||
20:
|
||||
set: xyz.openbmc_project.State.Boot.Progress.ProgressStages.MotherboardInit
|
||||
type: string
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
path: /xyz/openbmc_project/state/host0
|
||||
readingType: eventdata2
|
||||
sensorNamePattern: nameProperty
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
gpu_func_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item.Accelerator:
|
||||
xyz.openbmc_project.Inventory.Decorator.Replaceable:
|
||||
FieldReplaceable:
|
||||
Offsets:
|
||||
7:
|
||||
assert: true
|
||||
deassert: true
|
||||
type: bool
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
Present:
|
||||
Offsets:
|
||||
7:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
xyz.openbmc_project.State.Decorator.OperationalStatus:
|
||||
Functional:
|
||||
Offsets:
|
||||
8:
|
||||
assert: false
|
||||
deassert: true
|
||||
type: bool
|
||||
Prereqs:
|
||||
7:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: xyz.openbmc_project.Inventory.Manager
|
||||
gpu_temp_sensor:
|
||||
bExp: 0
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
offsetB: -127
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
host_auto_reboot_control_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Control.Boot.RebootPolicy:
|
||||
AutoReboot:
|
||||
Offsets:
|
||||
0:
|
||||
assert: false
|
||||
type: bool
|
||||
1:
|
||||
assert: true
|
||||
type: bool
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
path: /xyz/openbmc_project/control/host0/auto_reboot
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
memory_temp_sensor:
|
||||
bExp: 0
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
offsetB: -127
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
os_boot_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.State.OperatingSystem.Status:
|
||||
OperatingSystemState:
|
||||
Offsets:
|
||||
1:
|
||||
assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CBoot
|
||||
type: string
|
||||
2:
|
||||
assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.PXEBoot
|
||||
type: string
|
||||
3:
|
||||
assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.DiagBoot
|
||||
type: string
|
||||
4:
|
||||
assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.CDROMBoot
|
||||
type: string
|
||||
5:
|
||||
assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.ROMBoot
|
||||
type: string
|
||||
6:
|
||||
assert: xyz.openbmc_project.State.OperatingSystem.Status.OSStatus.BootComplete
|
||||
type: string
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
path: /xyz/openbmc_project/state/host0
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameProperty
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
ps_derating_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Control.PowerSupplyAttributes:
|
||||
DeratingFactor:
|
||||
Offsets:
|
||||
255:
|
||||
type: uint32_t
|
||||
mutability: Mutability::Read
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameProperty
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
ps_redundancy_state_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Control.PowerSupplyRedundancy:
|
||||
PowerSupplyRedundancyEnabled:
|
||||
Offsets:
|
||||
0:
|
||||
assert: false
|
||||
type: bool
|
||||
1:
|
||||
assert: true
|
||||
type: bool
|
||||
mutability: Mutability::Read
|
||||
path: /xyz/openbmc_project/control/power_supply_redundancy
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameProperty
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
tpm_required_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Control.TPM.Policy:
|
||||
TPMEnable:
|
||||
Offsets:
|
||||
0:
|
||||
assert: false
|
||||
type: bool
|
||||
1:
|
||||
assert: true
|
||||
type: bool
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
path: /xyz/openbmc_project/control/host0/TPMEnable
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
turbo_allowed_sensor:
|
||||
interfaces:
|
||||
xyz.openbmc_project.Control.Host.TurboAllowed:
|
||||
TurboAllowed:
|
||||
Offsets:
|
||||
0:
|
||||
assert: false
|
||||
deassert: true
|
||||
type: bool
|
||||
1:
|
||||
assert: true
|
||||
deassert: false
|
||||
type: bool
|
||||
mutability: Mutability::Read
|
||||
path: /xyz/openbmc_project/control/host0/turbo_allowed
|
||||
readingType: assertion
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
vrm_vdd_temp_sensor:
|
||||
bExp: 0
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
offsetB: -127
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
clear_host_security_keys:
|
||||
interfaces:
|
||||
org.open_power.Control.TPM.SecurityKeys:
|
||||
ClearHostSecurityKeys:
|
||||
Offsets:
|
||||
255:
|
||||
type: uint8_t
|
||||
path: /org/open_power/control/host0/ClearHostSecurityKeys
|
||||
readingType: readingData
|
||||
mutability: Mutability::Write|Mutability::Read
|
||||
sensorNamePattern: nameLeaf
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
60:
|
||||
/system/chassis/motherboard/fan0:
|
||||
entityID: 29
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
61:
|
||||
/system/chassis/motherboard/fan1:
|
||||
entityID: 29
|
||||
entityInstance: 2
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
62:
|
||||
/system/chassis/motherboard/fan2:
|
||||
entityID: 29
|
||||
entityInstance: 3
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
63:
|
||||
/system/chassis/motherboard/fan3:
|
||||
entityID: 29
|
||||
entityInstance: 4
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
70:
|
||||
/system/chassis/motherboard/management_card/bmc:
|
||||
entityID: 6
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
xyz.openbmc_project.Inventory.Decorator.Asset:
|
||||
PartNumber:
|
||||
IPMIFruProperty: Part Number
|
||||
IPMIFruSection: Board
|
||||
SerialNumber:
|
||||
IPMIFruProperty: Serial Number
|
||||
IPMIFruSection: Board
|
||||
Model:
|
||||
IPMIFruProperty: Model Number
|
||||
IPMIFruSection: Board
|
||||
Manufacturer:
|
||||
IPMIFruProperty: Manufacturer
|
||||
IPMIFruSection: Board
|
||||
BuildDate:
|
||||
IPMIFruProperty: Mfg Date
|
||||
IPMIFruSection: Board
|
||||
80:
|
||||
/system/chassis/motherboard/management_card/bmc/ethernet:
|
||||
entityID: 1
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
85:
|
||||
/system/chassis/motherboard/powersupply0:
|
||||
entityID: 10
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
xyz.openbmc_project.Inventory.Decorator.Asset:
|
||||
PartNumber:
|
||||
IPMIFruProperty: Part Number
|
||||
IPMIFruSection: Board
|
||||
SerialNumber:
|
||||
IPMIFruProperty: Serial Number
|
||||
IPMIFruSection: Board
|
||||
Model:
|
||||
IPMIFruProperty: Model Number
|
||||
IPMIFruSection: Board
|
||||
Manufacturer:
|
||||
IPMIFruProperty: Manufacturer
|
||||
IPMIFruSection: Board
|
||||
BuildDate:
|
||||
IPMIFruProperty: Mfg Date
|
||||
IPMIFruSection: Board
|
||||
86:
|
||||
/system/chassis/motherboard/powersupply1:
|
||||
entityID: 10
|
||||
entityInstance: 2
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
xyz.openbmc_project.Inventory.Decorator.Asset:
|
||||
PartNumber:
|
||||
IPMIFruProperty: Part Number
|
||||
IPMIFruSection: Board
|
||||
SerialNumber:
|
||||
IPMIFruProperty: Serial Number
|
||||
IPMIFruSection: Board
|
||||
Model:
|
||||
IPMIFruProperty: Model Number
|
||||
IPMIFruSection: Board
|
||||
Manufacturer:
|
||||
IPMIFruProperty: Manufacturer
|
||||
IPMIFruSection: Board
|
||||
BuildDate:
|
||||
IPMIFruProperty: Mfg Date
|
||||
IPMIFruSection: Board
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
15:
|
||||
/system/chassis/motherboard/ga100card0: &DEFAULTS
|
||||
entityInstance: 1
|
||||
entityID: 3
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
16:
|
||||
/system/chassis/motherboard/ga100card1:
|
||||
<<: *DEFAULTS
|
||||
entityInstance: 2
|
||||
17:
|
||||
/system/chassis/motherboard/ga100card2:
|
||||
<<: *DEFAULTS
|
||||
entityInstance: 3
|
||||
18:
|
||||
/system/chassis/motherboard/ga100card3:
|
||||
<<: *DEFAULTS
|
||||
entityInstance: 4
|
||||
+484
@@ -0,0 +1,484 @@
|
||||
232:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan0_0
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
233:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 3
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan1_0
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
234:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 5
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan2_0
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
235:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 7
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan3_0
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
236:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/fan_disk_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
237:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 9
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p0_io_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
238:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 10
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p1_io_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
239:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 11
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p0_mem_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
240:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 12
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p1_mem_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
241:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 13
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p0_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
242:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 14
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p1_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
243:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 15
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 10
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/ps0_input_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
244:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 16
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 10
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/ps1_input_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
245:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 17
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 20
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/total_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
246:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 19
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/voltage/ps0_input_voltage
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 2
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
|
||||
247:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 20
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/voltage/ps1_input_voltage
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 2
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
|
||||
248:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 21
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 10
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/voltage/ps0_output_voltage
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 2
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
|
||||
249:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 22
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 10
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/voltage/ps1_output_voltage
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 2
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
|
||||
250:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 23
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/current/ps0_output_current
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 3
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
|
||||
251:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 24
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/current/ps1_output_current
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 3
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
|
||||
252:
|
||||
bExp: 0
|
||||
entityID: 35
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 30
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/temperature/pcie0_1
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 1
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
253:
|
||||
bExp: 0
|
||||
entityID: 35
|
||||
entityInstance: 2
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 30
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/temperature/pcie2_3
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 1
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
254:
|
||||
bExp: 0
|
||||
entityID: 64
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 20
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/temperature/ambient0
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 1
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
50:
|
||||
/system/chassis/motherboard/fan0:
|
||||
entityID: 29
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
51:
|
||||
/system/chassis/motherboard/fan1:
|
||||
entityID: 29
|
||||
entityInstance: 2
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
52:
|
||||
/system/chassis/motherboard/fan2:
|
||||
entityID: 29
|
||||
entityInstance: 3
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
53:
|
||||
/system/chassis/motherboard/fan3:
|
||||
entityID: 29
|
||||
entityInstance: 4
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
60:
|
||||
/system/chassis/motherboard/boxelder/bmc:
|
||||
entityID: 6
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Decorator.Asset:
|
||||
BuildDate:
|
||||
IPMIFruProperty: Mfg Date
|
||||
IPMIFruSection: Board
|
||||
Manufacturer:
|
||||
IPMIFruProperty: Manufacturer
|
||||
IPMIFruSection: Board
|
||||
Model:
|
||||
IPMIFruProperty: Model Number
|
||||
IPMIFruSection: Board
|
||||
PartNumber:
|
||||
IPMIFruProperty: Part Number
|
||||
IPMIFruSection: Board
|
||||
SerialNumber:
|
||||
IPMIFruProperty: Serial Number
|
||||
IPMIFruSection: Board
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
70:
|
||||
/system/chassis/motherboard/boxelder/bmc/ethernet:
|
||||
entityID: 1
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Product Name
|
||||
IPMIFruSection: Product
|
||||
75:
|
||||
/system/chassis/motherboard/powersupply0:
|
||||
entityID: 10
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Decorator.Asset:
|
||||
BuildDate:
|
||||
IPMIFruProperty: Mfg Date
|
||||
IPMIFruSection: Board
|
||||
Manufacturer:
|
||||
IPMIFruProperty: Manufacturer
|
||||
IPMIFruSection: Board
|
||||
Model:
|
||||
IPMIFruProperty: Model Number
|
||||
IPMIFruSection: Board
|
||||
PartNumber:
|
||||
IPMIFruProperty: Part Number
|
||||
IPMIFruSection: Board
|
||||
SerialNumber:
|
||||
IPMIFruProperty: Serial Number
|
||||
IPMIFruSection: Board
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
76:
|
||||
/system/chassis/motherboard/powersupply1:
|
||||
entityID: 10
|
||||
entityInstance: 2
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Decorator.Asset:
|
||||
BuildDate:
|
||||
IPMIFruProperty: Mfg Date
|
||||
IPMIFruSection: Board
|
||||
Manufacturer:
|
||||
IPMIFruProperty: Manufacturer
|
||||
IPMIFruSection: Board
|
||||
Model:
|
||||
IPMIFruProperty: Model Number
|
||||
IPMIFruSection: Board
|
||||
PartNumber:
|
||||
IPMIFruProperty: Part Number
|
||||
IPMIFruSection: Board
|
||||
SerialNumber:
|
||||
IPMIFruProperty: Serial Number
|
||||
IPMIFruSection: Board
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
20:
|
||||
/system/chassis/motherboard/gv100card0:
|
||||
entityID: 3
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
21:
|
||||
/system/chassis/motherboard/gv100card1:
|
||||
entityID: 3
|
||||
entityInstance: 2
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
22:
|
||||
/system/chassis/motherboard/gv100card2:
|
||||
entityID: 3
|
||||
entityInstance: 3
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
23:
|
||||
/system/chassis/motherboard/gv100card3:
|
||||
entityID: 3
|
||||
entityInstance: 4
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
24:
|
||||
/system/chassis/motherboard/gv100card4:
|
||||
entityID: 3
|
||||
entityInstance: 5
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
25:
|
||||
/system/chassis/motherboard/gv100card5:
|
||||
entityID: 3
|
||||
entityInstance: 6
|
||||
interfaces:
|
||||
xyz.openbmc_project.Inventory.Item:
|
||||
PrettyName:
|
||||
IPMIFruProperty: Board Name
|
||||
IPMIFruSection: Board
|
||||
+546
@@ -0,0 +1,546 @@
|
||||
221:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan0_0
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
223:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 3
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan1_0
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
227:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 5
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan2_0
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
229:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 7
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan3_0
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
231:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/fan_disk_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
238:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 9
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p0_io_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
239:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 10
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p1_io_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
240:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 11
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p0_mem_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
241:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 12
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p1_mem_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
242:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 13
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p0_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
243:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 14
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/p1_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
244:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 15
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 10
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/ps0_input_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
245:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 16
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 10
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/ps1_input_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
246:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 17
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 20
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/power/total_power
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -6
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 8
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Watts
|
||||
247:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 19
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/voltage/ps0_input_voltage
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 2
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
|
||||
248:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 20
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 2
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/voltage/ps1_input_voltage
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 2
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
|
||||
249:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 21
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 10
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/voltage/ps0_output_voltage
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 2
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
|
||||
250:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 22
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 10
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/voltage/ps1_output_voltage
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 2
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Volts
|
||||
251:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 23
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/current/ps0_output_current
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 3
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
|
||||
252:
|
||||
bExp: 0
|
||||
entityID: 10
|
||||
entityInstance: 24
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 1
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/current/ps1_output_current
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 3
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.Amperes
|
||||
253:
|
||||
bExp: 0
|
||||
entityID: 35
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 30
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/temperature/pcie
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 1
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
254:
|
||||
bExp: 0
|
||||
entityID: 64
|
||||
entityInstance: 1
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 20
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/temperature/ambient
|
||||
rExp: -2
|
||||
readingType: readingData
|
||||
scale: -3
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 1
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.DegreesC
|
||||
222:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 2
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan0_1
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
226:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 4
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan1_1
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
228:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 6
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan2_1
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
230:
|
||||
bExp: 0
|
||||
entityID: 29
|
||||
entityInstance: 8
|
||||
interfaces:
|
||||
xyz.openbmc_project.Sensor.Value:
|
||||
Value:
|
||||
Offsets:
|
||||
255:
|
||||
type: double
|
||||
multiplierM: 100
|
||||
offsetB: 0
|
||||
path: /xyz/openbmc_project/sensors/fan_tach/fan3_1
|
||||
rExp: 0
|
||||
readingType: readingData
|
||||
scale: 0
|
||||
sensorNamePattern: nameLeaf
|
||||
sensorReadingType: 1
|
||||
sensorType: 4
|
||||
serviceInterface: org.freedesktop.DBus.Properties
|
||||
unit: xyz.openbmc_project.Sensor.Value.Unit.RPMS
|
||||
@@ -0,0 +1,23 @@
|
||||
SUMMARY = "YAML configuration for p10bmc"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
|
||||
SRC_URI = " \
|
||||
file://p10bmc-ipmi-fru.yaml \
|
||||
"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
|
||||
do_install() {
|
||||
install -m 0644 -D p10bmc-ipmi-fru.yaml \
|
||||
${D}${datadir}/${BPN}/ipmi-fru-read.yaml
|
||||
}
|
||||
|
||||
FILES:${PN}-dev = " \
|
||||
${datadir}/${BPN}/ipmi-fru-read.yaml \
|
||||
"
|
||||
|
||||
ALLOW_EMPTY:${PN} = "1"
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,5 @@
|
||||
lpc-address = 0x3f8
|
||||
sirq = 4
|
||||
local-tty = ttyS0
|
||||
local-tty-baud = 115200
|
||||
logsize = 256k
|
||||
@@ -0,0 +1 @@
|
||||
console-id = hypervisor
|
||||
@@ -0,0 +1,5 @@
|
||||
lpc-address = 0x3f8
|
||||
sirq = 4
|
||||
local-tty = ttyS0
|
||||
local-tty-baud = 115200
|
||||
logsize = 256k
|
||||
@@ -0,0 +1,5 @@
|
||||
lpc-address = 0x2f8
|
||||
sirq = 3
|
||||
console-id = hypervisor
|
||||
logsize = 256k
|
||||
logfile = /var/log/obmc-console1.log
|
||||
@@ -0,0 +1 @@
|
||||
console-id = hypervisor
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
lpc-address = 0x3f8
|
||||
sirq = 4
|
||||
logsize = 256k
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
lpc-address = 0x2f8
|
||||
sirq = 3
|
||||
console-id = hypervisor
|
||||
@@ -0,0 +1,64 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
|
||||
SRC_URI:remove:df-openpower = "file://${BPN}.conf"
|
||||
SRC_URI:append:df-openpower = " file://server.ttyVUART0.conf"
|
||||
|
||||
install_concurrent_console_config() {
|
||||
# Install configuration for the servers and clients. Keep commandline
|
||||
# compatibility with previous configurations by defaulting to not
|
||||
# specifying a console-id for VUART0/2200
|
||||
install -m 0755 -d ${D}${sysconfdir}/${BPN}
|
||||
|
||||
# Remove the default client configuration as we don't to define a
|
||||
# console-id for the 2200 console
|
||||
rm -f ${D}${sysconfdir}/${BPN}/client.2200.conf
|
||||
|
||||
# However, now link to /dev/null as a way of not specifying a
|
||||
# console-id while having a configuration file present. We need to
|
||||
# provide a configuration path to meet the requirements of the packaged
|
||||
# unit file.
|
||||
ln -sr ${D}/dev/null ${D}${sysconfdir}/${BPN}/client.2200.conf
|
||||
|
||||
# We need to populate console-id for remaining consoles
|
||||
install -m 0644 ${WORKDIR}/client.2201.conf ${D}${sysconfdir}/${BPN}/
|
||||
|
||||
# Install configuration for remaining servers - the base recipe
|
||||
# installs the configuration for the first.
|
||||
install -m 0644 ${WORKDIR}/server.ttyVUART1.conf ${D}${sysconfdir}/${BPN}/
|
||||
}
|
||||
|
||||
SRC_URI:append:p10bmc = " file://client.2201.conf"
|
||||
SRC_URI:append:p10bmc = " file://server.ttyVUART1.conf"
|
||||
|
||||
REGISTERED_SERVICES:${PN}:append:p10bmc = " obmc_console_hypervisor:tcp:2201:"
|
||||
|
||||
SYSTEMD_SERVICE:${PN}:append:p10bmc = " obmc-console-ssh@2200.service \
|
||||
obmc-console-ssh@2201.service \
|
||||
"
|
||||
SYSTEMD_SERVICE:${PN}:remove:p10bmc = "obmc-console-ssh.socket"
|
||||
|
||||
FILES:${PN}:remove:p10bmc = "${systemd_system_unitdir}/obmc-console-ssh@.service.d/use-socket.conf"
|
||||
|
||||
PACKAGECONFIG:append:p10bmc = " concurrent-servers"
|
||||
|
||||
do_install:append:p10bmc() {
|
||||
install_concurrent_console_config
|
||||
}
|
||||
|
||||
SRC_URI:append:witherspoon-tacoma = " file://client.2201.conf"
|
||||
SRC_URI:append:witherspoon-tacoma = " file://server.ttyVUART1.conf"
|
||||
|
||||
REGISTERED_SERVICES:${PN}:append:witherspoon-tacoma = " obmc_console_hypervisor:tcp:2201:"
|
||||
|
||||
SYSTEMD_SERVICE:${PN}:append:witherspoon-tacoma = " obmc-console-ssh@2200.service \
|
||||
obmc-console-ssh@2201.service \
|
||||
"
|
||||
SYSTEMD_SERVICE:${PN}:remove:witherspoon-tacoma = "obmc-console-ssh.socket"
|
||||
|
||||
FILES:${PN}:remove:witherspoon-tacoma = "${systemd_system_unitdir}/obmc-console-ssh@.service.d/use-socket.conf"
|
||||
|
||||
EXTRA_OECONF:append:witherspoon-tacoma = " --enable-concurrent-servers"
|
||||
|
||||
do_install:append:witherspoon-tacoma() {
|
||||
install_concurrent_console_config
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
SUMMARY = "Event policy configuration for meta-witherspoon machines"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit phosphor-dbus-monitor
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
SRC_URI += "file://config.yaml"
|
||||
|
||||
do_install() {
|
||||
install -D ${WORKDIR}/config.yaml ${D}${config_dir}/config.yaml
|
||||
}
|
||||
|
||||
FILES:${PN} += "${config_dir}/config.yaml"
|
||||
@@ -0,0 +1,114 @@
|
||||
- name: occpath group
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: PATH
|
||||
path: /org/open_power/control/occ0
|
||||
|
||||
- name: occproctemp property
|
||||
class: group
|
||||
group: property
|
||||
type: boolean
|
||||
members:
|
||||
- interface: org.open_power.OCC.Status
|
||||
meta: PROPERTY
|
||||
property: ThrottleProcTemp
|
||||
|
||||
- name: occprocpower property
|
||||
class: group
|
||||
group: property
|
||||
type: boolean
|
||||
members:
|
||||
- interface: org.open_power.OCC.Status
|
||||
meta: PROPERTY
|
||||
property: ThrottleProcPower
|
||||
|
||||
- name: occmemtemp property
|
||||
class: group
|
||||
group: property
|
||||
type: boolean
|
||||
members:
|
||||
- interface: org.open_power.OCC.Status
|
||||
meta: PROPERTY
|
||||
property: ThrottleMemTemp
|
||||
|
||||
- name: watch occproctemp
|
||||
class: watch
|
||||
watch: property
|
||||
paths: occpath group
|
||||
properties: occproctemp property
|
||||
callback: check occproctemp
|
||||
|
||||
- name: watch occprocpower
|
||||
class: watch
|
||||
watch: property
|
||||
paths: occpath group
|
||||
properties: occprocpower property
|
||||
callback: check occprocpower
|
||||
|
||||
- name: watch occmemtemp
|
||||
class: watch
|
||||
watch: property
|
||||
paths: occpath group
|
||||
properties: occmemtemp property
|
||||
callback: check occmemtemp
|
||||
|
||||
- name: check occproctemp
|
||||
class: condition
|
||||
condition: count
|
||||
paths: occpath group
|
||||
properties: occproctemp property
|
||||
defer: 1000us
|
||||
callback: create occproctemp event
|
||||
countop: '=='
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check occprocpower
|
||||
class: condition
|
||||
condition: count
|
||||
paths: occpath group
|
||||
properties: occprocpower property
|
||||
defer: 1000us
|
||||
callback: create occprocpower event
|
||||
countop: '=='
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check occmemtemp
|
||||
class: condition
|
||||
condition: count
|
||||
paths: occpath group
|
||||
properties: occmemtemp property
|
||||
defer: 1000us
|
||||
callback: create occmemtemp event
|
||||
countop: '=='
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: create occproctemp event
|
||||
class: callback
|
||||
callback: event
|
||||
paths: occpath group
|
||||
properties: occproctemp property
|
||||
eventName: occ
|
||||
eventMessage: "Processor throttled due to an over temperature condition."
|
||||
|
||||
- name: create occprocpower event
|
||||
class: callback
|
||||
callback: event
|
||||
paths: occpath group
|
||||
properties: occprocpower property
|
||||
eventName: occ
|
||||
eventMessage: "Processor throttled due to reaching the power cap limit."
|
||||
|
||||
- name: create occmemtemp event
|
||||
class: callback
|
||||
callback: event
|
||||
paths: occpath group
|
||||
properties: occmemtemp property
|
||||
eventName: occ
|
||||
eventMessage: "Memory throttled due to an over temperature condition."
|
||||
@@ -0,0 +1,30 @@
|
||||
SUMMARY = "Fan policy configurations for meta-witherspoon machines"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit phosphor-dbus-monitor
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
SRC_URI:append:df-openpower = " file://air-cooled.yaml"
|
||||
SRC_URI:append:ibm-ac-server = " file://water-cooled.yaml"
|
||||
SRC_URI:append:df-openpower = " file://fan-errors.yaml"
|
||||
|
||||
SRC_URI:remove:p10bmc = "file://air-cooled.yaml"
|
||||
SRC_URI:remove:p10bmc = "file://fan-errors.yaml"
|
||||
|
||||
do_install:append:ibm-ac-server() {
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
FILES:${PN} += "${config_dir}/air-cooled.yaml"
|
||||
FILES:${PN}:append:ibm-ac-server = " ${config_dir}/water-cooled.yaml"
|
||||
FILES:${PN} += "${config_dir}/fan-errors.yaml"
|
||||
|
||||
FILES:${PN}:remove:p10bmc = "${config_dir}/air-cooled.yaml"
|
||||
FILES:${PN}:remove:p10bmc = "${config_dir}/fan-errors.yaml"
|
||||
@@ -0,0 +1,274 @@
|
||||
# Air cooled Swift fan policy for PDM.
|
||||
#
|
||||
# An air cooled Swift requires a minimum of three functional fan enclosures.
|
||||
# If the number of functional fan enclosures is below three, soft poweroff
|
||||
# the system.
|
||||
|
||||
- name: fan enclosures
|
||||
description: >
|
||||
'An air cooled Swift has four fan enclosures 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
|
||||
|
||||
- name: chassis state
|
||||
description: >
|
||||
'Swift has a single chassis to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: CHASSISSTATE
|
||||
path: /xyz/openbmc_project/state/chassis0
|
||||
|
||||
- name: chassis
|
||||
description: >
|
||||
'Swift 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 enclosure presence state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan enclosures
|
||||
properties: fan present
|
||||
callback: check cooling type
|
||||
|
||||
- name: watch fan functional
|
||||
description: >
|
||||
'Trigger logic on fan enclosure functional state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan enclosures
|
||||
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 fan enclosures,
|
||||
power off if not.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- check group presence
|
||||
- check group functional enclosures
|
||||
|
||||
- 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: fan enclosures
|
||||
properties: fan present
|
||||
defer: 25000000us
|
||||
callback: log and shutdown
|
||||
countop: '<'
|
||||
countbound: 3
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check group functional enclosures
|
||||
description: >
|
||||
'If this condition passes more than one fan enclosure 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: fan enclosures
|
||||
properties: fan functional
|
||||
defer: 5000000us
|
||||
callback: log and shutdown
|
||||
countop: '>'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: false
|
||||
|
||||
- name: log and poweroff
|
||||
description: >
|
||||
'Immediately poweroff, log an event in the journal, and create an
|
||||
error log.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- hard poweroff
|
||||
- log hard poweroff
|
||||
- create shutdown error
|
||||
|
||||
- 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 shutdown
|
||||
- create shutdown error
|
||||
|
||||
- name: hard poweroff
|
||||
description: >
|
||||
'Immediately power off 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: 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-host-shutdown@0.target
|
||||
type: string
|
||||
- value: replace
|
||||
type: string
|
||||
|
||||
- name: log hard poweroff
|
||||
description: >
|
||||
'Log a hard poweroff event to the systemd journal.'
|
||||
class: callback
|
||||
callback: journal
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
severity: ERR
|
||||
message: Immediate poweroff of system. There are not enough functional fans.
|
||||
|
||||
- name: log shutdown
|
||||
description: >
|
||||
'Log a shutdown event to the systemd journal.'
|
||||
class: callback
|
||||
callback: journal
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
severity: ERR
|
||||
message: Request shutdown of 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
|
||||
@@ -0,0 +1,671 @@
|
||||
# Swift fan error policy for PDM.
|
||||
#
|
||||
# * Create a NotPresent error if fan 0, 1, 2, or 3 is not present for more
|
||||
# than 20 seconds.
|
||||
# * Create a Nonfunctional error if fan 0, 1, 2, or 3 is not
|
||||
# functional for any amount of time.
|
||||
#
|
||||
# The system must be powered on in both of these cases.
|
||||
# Note: An error is created each time the chassis powers on.
|
||||
#
|
||||
# * Watch for fans to become both present and 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: chassis state
|
||||
description: >
|
||||
'Swift has a single chassis to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: CHASSISSTATE
|
||||
path: /xyz/openbmc_project/state/chassis0
|
||||
|
||||
- name: chassis
|
||||
description: >
|
||||
'Swift 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: fan present and functional
|
||||
description: >
|
||||
'Monitor the present and functional state of each fan.'
|
||||
class: group
|
||||
group: property
|
||||
type: boolean
|
||||
members:
|
||||
- interface: xyz.openbmc_project.Inventory.Item
|
||||
meta: PRESENT
|
||||
property: Present
|
||||
- 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: 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 fan0 present and functional for resolving error logs
|
||||
description: >
|
||||
'On fan present or functional state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan0
|
||||
properties: fan present and functional
|
||||
callback: resolve fan0 errors if present and functional
|
||||
|
||||
- name: watch fan1 present and functional for resolving error logs
|
||||
description: >
|
||||
'On fan present or functional state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan1
|
||||
properties: fan present and functional
|
||||
callback: resolve fan1 errors if present and functional
|
||||
|
||||
- name: watch fan2 present and functional for resolving error logs
|
||||
description: >
|
||||
'On fan present or functional state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan2
|
||||
properties: fan present and functional
|
||||
callback: resolve fan2 errors if present and functional
|
||||
|
||||
- name: watch fan3 present and functional for resolving error logs
|
||||
description: >
|
||||
'On fan present or functional state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan3
|
||||
properties: fan present and functional
|
||||
callback: resolve fan3 errors if present and 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 fans
|
||||
description: >
|
||||
'Verify each of the 3 fans are present.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- check fan0 presence
|
||||
- check fan1 presence
|
||||
- check fan2 presence
|
||||
- check fan3 presence
|
||||
- check fan0 functional
|
||||
- check fan1 functional
|
||||
- check fan2 functional
|
||||
- check fan3 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.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan1
|
||||
properties: fan present
|
||||
defer: 20000000us
|
||||
callback: notpresent fan1 error
|
||||
countop: '<'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check fan1 functional
|
||||
description: >
|
||||
'If this condition passes fan1 has been marked as nonfunctional.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan1
|
||||
properties: fan functional
|
||||
callback: nonfunctional fan1 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.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan2
|
||||
properties: fan present
|
||||
defer: 20000000us
|
||||
callback: notpresent fan2 error
|
||||
countop: '<'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check fan2 functional
|
||||
description: >
|
||||
'If this condition passes fan2 has been marked as nonfunctional.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan2
|
||||
properties: fan functional
|
||||
callback: nonfunctional fan2 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.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan3
|
||||
properties: fan present
|
||||
defer: 20000000us
|
||||
callback: notpresent fan3 error
|
||||
countop: '<'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check fan3 functional
|
||||
description: >
|
||||
'If this condition passes fan3 has been marked as nonfunctional.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan3
|
||||
properties: fan functional
|
||||
callback: nonfunctional fan3 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 fan 1.'
|
||||
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 fan 1.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: chassis
|
||||
properties: chassis air cooled
|
||||
callback: notpresent fan1 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: resolve fan0 errors if present and functional
|
||||
description: >
|
||||
'If fan0 is present and functional, call the resolve fan0 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan0
|
||||
properties: fan present and functional
|
||||
callback: resolve fan0 errors
|
||||
countop: '=='
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
#Go ahead and do this on water cooled as well
|
||||
- name: resolve fan1 errors if present and functional
|
||||
description: >
|
||||
'If fan1 is present and functional, call the resolve fan1 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan1
|
||||
properties: fan present and functional
|
||||
callback: resolve fan1 errors
|
||||
countop: '=='
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: resolve fan2 errors if present and functional
|
||||
description: >
|
||||
'If fan2 is present and functional, call the resolve fan2 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan2
|
||||
properties: fan present and functional
|
||||
callback: resolve fan2 errors
|
||||
countop: '=='
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: resolve fan3 errors if present and functional
|
||||
description: >
|
||||
'If fan3 is present and functional, call the resolve fan3 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan3
|
||||
properties: fan present and functional
|
||||
callback: resolve fan3 errors
|
||||
countop: '=='
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: resolve fan0 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: fan0
|
||||
properties: fan present and functional
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
|
||||
|
||||
- name: resolve fan1 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: fan1
|
||||
properties: fan present and functional
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
|
||||
|
||||
- name: resolve fan2 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: fan2
|
||||
properties: fan present and functional
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
|
||||
|
||||
- name: resolve fan3 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: fan3
|
||||
properties: fan present and functional
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
|
||||
@@ -0,0 +1,274 @@
|
||||
# Water cooled Swift fan policy for PDM.
|
||||
#
|
||||
# A water cooled Swift requires a minimum of three functional fan
|
||||
# enclosures. If the number of functional fan enclosures is below three,
|
||||
# soft poweroff the system.
|
||||
|
||||
- name: fan enclosures
|
||||
description: >
|
||||
'A water cooled Swift has four fan enclosures 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
|
||||
|
||||
- name: chassis state
|
||||
description: >
|
||||
'Swift has a single chassis to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: CHASSISSTATE
|
||||
path: /xyz/openbmc_project/state/chassis0
|
||||
|
||||
- name: chassis
|
||||
description: >
|
||||
'Swift 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 enclosure presence state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan enclosures
|
||||
properties: fan present
|
||||
callback: check cooling type
|
||||
|
||||
- name: watch fan functional
|
||||
description: >
|
||||
'Trigger logic on fan enclosure functional state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan enclosures
|
||||
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 three functional fan enclosures,
|
||||
power off if not.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- check group presence
|
||||
- check group functional enclosures
|
||||
|
||||
- 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: fan enclosures
|
||||
properties: fan present
|
||||
defer: 25000000us
|
||||
callback: log and shutdown
|
||||
countop: '<'
|
||||
countbound: 3
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check group functional enclosures
|
||||
description: >
|
||||
'If this condition passes more than one fan enclosure 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: fan enclosures
|
||||
properties: fan functional
|
||||
defer: 5000000us
|
||||
callback: log and shutdown
|
||||
countop: '>'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: false
|
||||
|
||||
- name: log and poweroff
|
||||
description: >
|
||||
'Immediately poweroff, log an event in the journal, and create an
|
||||
error log.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- hard poweroff
|
||||
- log hard poweroff
|
||||
- create shutdown error
|
||||
|
||||
- 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 shutdown
|
||||
- create shutdown error
|
||||
|
||||
- name: hard poweroff
|
||||
description: >
|
||||
'Immediately power off 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: 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-host-shutdown@0.target
|
||||
type: string
|
||||
- value: replace
|
||||
type: string
|
||||
|
||||
- name: log hard poweroff
|
||||
description: >
|
||||
'Log a hard poweroff event to the systemd journal.'
|
||||
class: callback
|
||||
callback: journal
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
severity: ERR
|
||||
message: Immediate poweroff of system. There are not enough functional fans.
|
||||
|
||||
- name: log shutdown
|
||||
description: >
|
||||
'Log a shutdown event to the systemd journal.'
|
||||
class: callback
|
||||
callback: journal
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
severity: ERR
|
||||
message: Request shutdown of 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
|
||||
@@ -0,0 +1,328 @@
|
||||
# Air cooled Witherspoon fan policy for PDM.
|
||||
#
|
||||
# An air cooled Witherspoon requires a minimum of three functional fans
|
||||
# enclosures or six functional fan rotors across all enclosures.
|
||||
# If the number of functional fan enclosures is below three, soft poweroff
|
||||
# the system, whereas if the number of fan rotors drop below six, an
|
||||
# immediate hard poweroff of the system occurs.
|
||||
|
||||
- name: fan enclosures
|
||||
description: >
|
||||
'An air cooled Witherspoon has four fan enclosures 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
|
||||
|
||||
- name: fan rotors
|
||||
description: >
|
||||
'An air cooled Witherspoon has eight fan rotors to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0/fan0_0
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0/fan0_1
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1/fan1_0
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1/fan1_1
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2/fan2_0
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2/fan2_1
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3/fan3_0
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3/fan3_1
|
||||
|
||||
- name: chassis state
|
||||
description: >
|
||||
'Witherspoon has a single chassis to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: CHASSISSTATE
|
||||
path: /xyz/openbmc_project/state/chassis0
|
||||
|
||||
- name: chassis
|
||||
description: >
|
||||
'Witherspoon 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 enclosure presence state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan enclosures
|
||||
properties: fan present
|
||||
callback: check cooling type
|
||||
|
||||
- name: watch fan functional
|
||||
description: >
|
||||
'Trigger logic on fan enclosure functional state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan enclosures
|
||||
properties: fan functional
|
||||
callback: check cooling type
|
||||
|
||||
- name: watch fan rotor functional
|
||||
description: >
|
||||
'Trigger logic on fan rotor functional state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan rotors
|
||||
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 fan enclosures and at least
|
||||
six functional fan rotors, power off if not.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- check group presence
|
||||
- check group functional enclosures
|
||||
- check group functional rotors
|
||||
|
||||
- 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: fan enclosures
|
||||
properties: fan present
|
||||
defer: 25000000us
|
||||
callback: log and shutdown
|
||||
countop: '<'
|
||||
countbound: 3
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check group functional enclosures
|
||||
description: >
|
||||
'If this condition passes more than one fan enclosure 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: fan enclosures
|
||||
properties: fan functional
|
||||
defer: 5000000us
|
||||
callback: log and shutdown
|
||||
countop: '>'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: false
|
||||
|
||||
- name: check group functional rotors
|
||||
description: >
|
||||
'If this condition passes more than two fan rotors in the group have been
|
||||
marked as nonfunctional for five seconds. Immediately power off.
|
||||
|
||||
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: fan rotors
|
||||
properties: fan functional
|
||||
defer: 5000000us
|
||||
callback: log and poweroff
|
||||
countop: '>'
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: false
|
||||
|
||||
- name: log and poweroff
|
||||
description: >
|
||||
'Immediately poweroff, log an event in the journal, and create an
|
||||
error log.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- hard poweroff
|
||||
- log hard poweroff
|
||||
- create shutdown error
|
||||
|
||||
- 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 shutdown
|
||||
- create shutdown error
|
||||
|
||||
- name: hard poweroff
|
||||
description: >
|
||||
'Immediately power off 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: 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-host-shutdown@0.target
|
||||
type: string
|
||||
- value: replace
|
||||
type: string
|
||||
|
||||
- name: log hard poweroff
|
||||
description: >
|
||||
'Log a hard poweroff event to the systemd journal.'
|
||||
class: callback
|
||||
callback: journal
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
severity: ERR
|
||||
message: Immediate poweroff of system. There are not enough functional fans.
|
||||
|
||||
- name: log shutdown
|
||||
description: >
|
||||
'Log a shutdown event to the systemd journal.'
|
||||
class: callback
|
||||
callback: journal
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
severity: ERR
|
||||
message: Request shutdown of 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
|
||||
@@ -0,0 +1,676 @@
|
||||
# Witherspoon fan error policy for PDM.
|
||||
#
|
||||
# * Create a NotPresent error if fan 0, 1, 2, or 3 is not present for more
|
||||
# than 20 seconds.
|
||||
# * Create a Nonfunctional error if fan 0, 1, 2, or 3 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 fan 1.
|
||||
# Note: An error is created each time the chassis powers on.
|
||||
#
|
||||
# * Watch for fans to become both present and 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: chassis state
|
||||
description: >
|
||||
'Witherspoon has a single chassis to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: CHASSISSTATE
|
||||
path: /xyz/openbmc_project/state/chassis0
|
||||
|
||||
- name: chassis
|
||||
description: >
|
||||
'Witherspoon 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: fan present and functional
|
||||
description: >
|
||||
'Monitor the present and functional state of each fan.'
|
||||
class: group
|
||||
group: property
|
||||
type: boolean
|
||||
members:
|
||||
- interface: xyz.openbmc_project.Inventory.Item
|
||||
meta: PRESENT
|
||||
property: Present
|
||||
- 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: 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 fan0 present and functional for resolving error logs
|
||||
description: >
|
||||
'On fan present or functional state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan0
|
||||
properties: fan present and functional
|
||||
callback: resolve fan0 errors if present and functional
|
||||
|
||||
- name: watch fan1 present and functional for resolving error logs
|
||||
description: >
|
||||
'On fan present or functional state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan1
|
||||
properties: fan present and functional
|
||||
callback: resolve fan1 errors if present and functional
|
||||
|
||||
- name: watch fan2 present and functional for resolving error logs
|
||||
description: >
|
||||
'On fan present or functional state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan2
|
||||
properties: fan present and functional
|
||||
callback: resolve fan2 errors if present and functional
|
||||
|
||||
- name: watch fan3 present and functional for resolving error logs
|
||||
description: >
|
||||
'On fan present or functional state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan3
|
||||
properties: fan present and functional
|
||||
callback: resolve fan3 errors if present and 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 fans
|
||||
description: >
|
||||
'Verify each of the 3 fans are present.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- check fan0 presence
|
||||
- check fan1 presence
|
||||
- check fan2 presence
|
||||
- check fan3 presence
|
||||
- check fan0 functional
|
||||
- check fan1 functional
|
||||
- check fan2 functional
|
||||
- check fan3 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 Witherspoon, 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 Witherspoon, 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.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan2
|
||||
properties: fan present
|
||||
defer: 20000000us
|
||||
callback: notpresent fan2 error
|
||||
countop: '<'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check fan2 functional
|
||||
description: >
|
||||
'If this condition passes fan2 has been marked as nonfunctional.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan2
|
||||
properties: fan functional
|
||||
callback: nonfunctional fan2 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.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan3
|
||||
properties: fan present
|
||||
defer: 20000000us
|
||||
callback: notpresent fan3 error
|
||||
countop: '<'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check fan3 functional
|
||||
description: >
|
||||
'If this condition passes fan3 has been marked as nonfunctional.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan3
|
||||
properties: fan functional
|
||||
callback: nonfunctional fan3 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 fan 1.'
|
||||
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 fan 1.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: chassis
|
||||
properties: chassis air cooled
|
||||
callback: notpresent fan1 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: resolve fan0 errors if present and functional
|
||||
description: >
|
||||
'If fan0 is present and functional, call the resolve fan0 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan0
|
||||
properties: fan present and functional
|
||||
callback: resolve fan0 errors
|
||||
countop: '=='
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
#Go ahead and do this on water cooled as well
|
||||
- name: resolve fan1 errors if present and functional
|
||||
description: >
|
||||
'If fan1 is present and functional, call the resolve fan1 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan1
|
||||
properties: fan present and functional
|
||||
callback: resolve fan1 errors
|
||||
countop: '=='
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: resolve fan2 errors if present and functional
|
||||
description: >
|
||||
'If fan2 is present and functional, call the resolve fan2 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan2
|
||||
properties: fan present and functional
|
||||
callback: resolve fan2 errors
|
||||
countop: '=='
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: resolve fan3 errors if present and functional
|
||||
description: >
|
||||
'If fan3 is present and functional, call the resolve fan3 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: fan3
|
||||
properties: fan present and functional
|
||||
callback: resolve fan3 errors
|
||||
countop: '=='
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: resolve fan0 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: fan0
|
||||
properties: fan present and functional
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0
|
||||
|
||||
- name: resolve fan1 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: fan1
|
||||
properties: fan present and functional
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1
|
||||
|
||||
- name: resolve fan2 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: fan2
|
||||
properties: fan present and functional
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2
|
||||
|
||||
- name: resolve fan3 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: fan3
|
||||
properties: fan present and functional
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
|
||||
@@ -0,0 +1,322 @@
|
||||
# Water cooled Witherspoon fan policy for PDM.
|
||||
#
|
||||
# A water cooled Witherspoon requires a minimum of two functional fan
|
||||
# enclosures or four functional fan rotors across all enclosures.
|
||||
# If the number of functional fan enclosures is below two, soft poweroff
|
||||
# the system, whereas if the number of fan rotors drop below four, an
|
||||
# immediate hard poweroff of the system occurs.
|
||||
|
||||
- name: fan enclosures
|
||||
description: >
|
||||
'A water cooled Witherspoon has three fan enclosures 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/fan2
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3
|
||||
|
||||
- name: fan rotors
|
||||
description: >
|
||||
'A water cooled Witherspoon has six fan rotors to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0/fan0_0
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0/fan0_1
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2/fan2_0
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2/fan2_1
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3/fan3_0
|
||||
- meta: FAN
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3/fan3_1
|
||||
|
||||
- name: chassis state
|
||||
description: >
|
||||
'Witherspoon has a single chassis to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: CHASSISSTATE
|
||||
path: /xyz/openbmc_project/state/chassis0
|
||||
|
||||
- name: chassis
|
||||
description: >
|
||||
'Witherspoon 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 enclosure presence state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan enclosures
|
||||
properties: fan present
|
||||
callback: check cooling type
|
||||
|
||||
- name: watch fan functional
|
||||
description: >
|
||||
'Trigger logic on fan enclosure functional state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan enclosures
|
||||
properties: fan functional
|
||||
callback: check cooling type
|
||||
|
||||
- name: watch fan rotor functional
|
||||
description: >
|
||||
'Trigger logic on fan rotor functional state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: fan rotors
|
||||
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 fan enclosures and at least
|
||||
four functional fan rotors, power off if not.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- check group presence
|
||||
- check group functional enclosures
|
||||
- check group functional rotors
|
||||
|
||||
- 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: fan enclosures
|
||||
properties: fan present
|
||||
defer: 25000000us
|
||||
callback: log and shutdown
|
||||
countop: '<'
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check group functional enclosures
|
||||
description: >
|
||||
'If this condition passes more than one fan enclosure 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: fan enclosures
|
||||
properties: fan functional
|
||||
defer: 5000000us
|
||||
callback: log and shutdown
|
||||
countop: '>'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: false
|
||||
|
||||
- name: check group functional rotors
|
||||
description: >
|
||||
'If this condition passes more than two fan rotors in the group have been
|
||||
marked as nonfunctional for five seconds. Immediately power off.
|
||||
|
||||
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: fan rotors
|
||||
properties: fan functional
|
||||
defer: 5000000us
|
||||
callback: log and poweroff
|
||||
countop: '>'
|
||||
countbound: 2
|
||||
op: '=='
|
||||
bound: false
|
||||
|
||||
- name: log and poweroff
|
||||
description: >
|
||||
'Immediately poweroff, log an event in the journal, and create an
|
||||
error log.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- hard poweroff
|
||||
- log hard poweroff
|
||||
- create shutdown error
|
||||
|
||||
- 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 shutdown
|
||||
- create shutdown error
|
||||
|
||||
- name: hard poweroff
|
||||
description: >
|
||||
'Immediately power off 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: 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-host-shutdown@0.target
|
||||
type: string
|
||||
- value: replace
|
||||
type: string
|
||||
|
||||
- name: log hard poweroff
|
||||
description: >
|
||||
'Log a hard poweroff event to the systemd journal.'
|
||||
class: callback
|
||||
callback: journal
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
severity: ERR
|
||||
message: Immediate poweroff of system. There are not enough functional fans.
|
||||
|
||||
- name: log shutdown
|
||||
description: >
|
||||
'Log a shutdown event to the systemd journal.'
|
||||
class: callback
|
||||
callback: journal
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
severity: ERR
|
||||
message: Request shutdown of 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
|
||||
@@ -0,0 +1,6 @@
|
||||
PHOSPHOR_DBUS_MONITOR_CONFIGS:append:ibm-ac-server = " fan-policy"
|
||||
PHOSPHOR_DBUS_MONITOR_CONFIGS:append:ibm-ac-server = " thermal-policy"
|
||||
PHOSPHOR_DBUS_MONITOR_CONFIGS:append:ibm-ac-server = " power-supply-policy"
|
||||
PHOSPHOR_DBUS_MONITOR_CONFIGS:append:ibm-ac-server = " events-policy"
|
||||
PHOSPHOR_DBUS_MONITOR_CONFIGS:append:ibm-ac-server = " snmp-policy"
|
||||
PHOSPHOR_DBUS_MONITOR_CONFIGS:append:p10bmc = " snmp-policy"
|
||||
@@ -0,0 +1,3 @@
|
||||
[Unit]
|
||||
Wants=mapper-wait@-xyz-openbmc_project-network-snmp.service
|
||||
After=mapper-wait@-xyz-openbmc_project-network-snmp.service
|
||||
@@ -0,0 +1,4 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
SYSTEMD_LINK:phosphor-msl-verify:append:ibm-ac-server = " ../phosphor-msl-verify.service:obmc-chassis-poweron@0.target.requires/phosphor-msl-verify.service"
|
||||
SYSTEMD_OVERRIDE:${PN}:append = " phosphor-dbus-monitor-snmp.conf:phosphor-dbus-monitor.service.d/phosphor-dbus-monitor-snmp.conf"
|
||||
@@ -0,0 +1,2 @@
|
||||
PACKAGECONFIG = "unit-failure-monitor"
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
SUMMARY = "Power supply policy configuration for meta-witherspoon machines"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit phosphor-dbus-monitor
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
SRC_URI += "file://power-supply-policy.yaml"
|
||||
|
||||
do_install() {
|
||||
install -D ${WORKDIR}/power-supply-policy.yaml ${D}${config_dir}/power-supply-policy.yaml
|
||||
}
|
||||
|
||||
FILES:${PN} += "${config_dir}/power-supply-policy.yaml"
|
||||
@@ -0,0 +1,215 @@
|
||||
# Machine power supply policy for PDM.
|
||||
#
|
||||
# Create an error if a power supply is removed while the system is powered on
|
||||
|
||||
- name: power supply0
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: POWER SUPPLY
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
|
||||
|
||||
- name: power supply1
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: POWER SUPPLY
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
|
||||
|
||||
- name: power supplies
|
||||
description: >
|
||||
'The machine has two power supplies to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: POWER SUPPLY
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
|
||||
- meta: POWER SUPPLY
|
||||
path: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
|
||||
|
||||
- name: chassis state
|
||||
description: >
|
||||
'The machine has a single chassis to monitor.'
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: CHASSISSTATE
|
||||
path: /xyz/openbmc_project/state/chassis0
|
||||
|
||||
- name: power supply present
|
||||
description: >
|
||||
'Monitor the presence state of each power supply.'
|
||||
class: group
|
||||
group: property
|
||||
type: boolean
|
||||
members:
|
||||
- interface: xyz.openbmc_project.Inventory.Item
|
||||
meta: PRESENT
|
||||
property: Present
|
||||
|
||||
- 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: watch power supply present
|
||||
description: >
|
||||
'Trigger logic on power supply presence state changes.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: power supplies
|
||||
properties: power supply present
|
||||
callback: check power
|
||||
|
||||
- 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: check power
|
||||
description: >
|
||||
'If the chassis has power, check for power supplies.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: chassis state
|
||||
properties: chassis powered
|
||||
callback: check power supplies
|
||||
countop: '>'
|
||||
countbound: 0
|
||||
op: '=='
|
||||
bound: xyz.openbmc_project.State.Chassis.PowerState.On
|
||||
|
||||
- name: check power supplies
|
||||
description: >
|
||||
'Create an error if a power supply is not present.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- check power supply0 presence
|
||||
- check power supply1 presence
|
||||
|
||||
- name: check power supply0 presence
|
||||
description: >
|
||||
'If this condition passes power supply0 has been unplugged for more than
|
||||
5 seconds. Count present power supplies rather than non-present
|
||||
power supplies since the latter would pass if the power supply 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 power supply inventory object implementation.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: power supply0
|
||||
properties: power supply present
|
||||
defer: 5000000us
|
||||
callback: notpresent power supply0 error
|
||||
countop: '<'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: check power supply1 presence
|
||||
description: >
|
||||
'If this condition passes power supply1 has been unplugged for more than
|
||||
5 seconds.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: power supply1
|
||||
properties: power supply present
|
||||
defer: 5000000us
|
||||
callback: notpresent power supply1 error
|
||||
countop: '<'
|
||||
countbound: 1
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: notpresent power supply0 error
|
||||
class: callback
|
||||
callback: elog
|
||||
paths: power supply0
|
||||
properties: power supply 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/powersupply0
|
||||
type: string
|
||||
|
||||
- name: notpresent power supply1 error
|
||||
class: callback
|
||||
callback: elog
|
||||
paths: power supply1
|
||||
properties: power supply 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/powersupply1
|
||||
type: string
|
||||
|
||||
- name: resolve power supply0 errors if present
|
||||
description: >
|
||||
'If power supply0 is present, call the resolve ps0 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: power supply0
|
||||
properties: power supply present
|
||||
callback: resolve power supply0 errors
|
||||
countop: '>'
|
||||
countbound: 0
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: resolve power supply1 errors if present
|
||||
description: >
|
||||
'If power supply1 is present, call the resolve ps1 errors callback.'
|
||||
class: condition
|
||||
condition: count
|
||||
paths: power supply1
|
||||
properties: power supply present
|
||||
callback: resolve power supply1 errors
|
||||
countop: '>'
|
||||
countbound: 0
|
||||
op: '=='
|
||||
bound: true
|
||||
|
||||
- name: resolve power supply0 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: power supply0
|
||||
properties: power supply present
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply0
|
||||
|
||||
- name: resolve power supply1 errors
|
||||
class: callback
|
||||
callback: resolve callout
|
||||
paths: power supply1
|
||||
properties: power supply present
|
||||
callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/powersupply1
|
||||
|
||||
- name: watch power supply0 present for resolving error logs
|
||||
description: >
|
||||
'On supply present state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: power supply0
|
||||
properties: power supply present
|
||||
callback: resolve power supply0 errors if present
|
||||
|
||||
- name: watch power supply1 present for resolving error logs
|
||||
description: >
|
||||
'On supply present state changes, check if errors need to be resolved.'
|
||||
class: watch
|
||||
watch: property
|
||||
paths: power supply1
|
||||
properties: power supply present
|
||||
callback: resolve power supply1 errors if present
|
||||
@@ -0,0 +1,17 @@
|
||||
SUMMARY = "snmp policy configuration for meta-ibm machines"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit phosphor-dbus-monitor
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
SRC_URI += "file://snmp-config.yaml"
|
||||
|
||||
do_install() {
|
||||
install -D ${WORKDIR}/snmp-config.yaml ${D}${config_dir}/snmp-config.yaml
|
||||
}
|
||||
|
||||
FILES:${PN} += "${config_dir}/snmp-config.yaml"
|
||||
@@ -0,0 +1,18 @@
|
||||
- name: errorlog path group
|
||||
class: group
|
||||
group: path
|
||||
members:
|
||||
- meta: PATH
|
||||
path: /xyz/openbmc_project/logging
|
||||
|
||||
- name: pathwatch errorlog
|
||||
class: pathwatch
|
||||
pathwatch: path
|
||||
paths: errorlog path group
|
||||
pathcallback: create errorlog trap
|
||||
|
||||
- name: create errorlog trap
|
||||
class: pathcallback
|
||||
pathcallback: eventpath
|
||||
paths: errorlog path group
|
||||
eventType: ErrorTrap
|
||||
@@ -0,0 +1,18 @@
|
||||
SUMMARY = "Thermal policy configuration for meta-witherspoon machines"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit allarch
|
||||
inherit phosphor-dbus-monitor
|
||||
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
SRC_URI:append:ibm-ac-server = " file://thermal-policy.yaml"
|
||||
|
||||
do_install:ibm-ac-server() {
|
||||
install -D ${WORKDIR}/thermal-policy.yaml ${D}${config_dir}/thermal-policy.yaml
|
||||
}
|
||||
|
||||
|
||||
FILES:${PN}:append:ibm-ac-server = " ${config_dir}/thermal-policy.yaml"
|
||||
@@ -0,0 +1,187 @@
|
||||
# Machine thermal policy for PDM.
|
||||
#
|
||||
# Shut down the system if more than three cores
|
||||
# have a temperature greater than 115 degrees Celcius.
|
||||
|
||||
|
||||
- name: core sensors
|
||||
description: >
|
||||
'The machine has two processor chips with 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
|
||||
oneshot: true
|
||||
|
||||
- name: log and shutdown
|
||||
description: >
|
||||
'Shut the system down and log an event.'
|
||||
class: callback
|
||||
callback: group
|
||||
members:
|
||||
- shutdown
|
||||
- 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: create criticalhigh error
|
||||
description: >
|
||||
'Create a CriticalHigh Error log.'
|
||||
class: callback
|
||||
callback: elog_with_metadata
|
||||
paths: core sensors
|
||||
properties: core temp
|
||||
error: xyz::openbmc_project::Sensor::Threshold::Error::CriticalHigh
|
||||
metadata: xyz::openbmc_project::Sensor::Threshold::CriticalHigh::SENSOR_DATA
|
||||
|
||||
- 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
|
||||
@@ -0,0 +1,2 @@
|
||||
DEBUG_TRIGGER_OPTIONS=--sink-actions=dbus
|
||||
DEBUG_TRIGGER_SINK=
|
||||
@@ -0,0 +1,9 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:"
|
||||
|
||||
SRC_URI:append:p10bmc = " file://debug-trigger.default"
|
||||
|
||||
do_install:append:p10bmc() {
|
||||
# Install the defaults file
|
||||
mkdir -p ${D}${sysconfdir}/default
|
||||
install -m 0644 -T ${WORKDIR}/debug-trigger.default ${D}${sysconfdir}/default/debug-trigger
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
PACKAGECONFIG:append:p10bmc = " host-dump-transport-pldm"
|
||||
PACKAGECONFIG:append:witherspoon-tacoma = " host-dump-transport-pldm"
|
||||
|
||||
PACKAGECONFIG:append:p10bmc = " openpower-dumps-extension"
|
||||
PACKAGECONFIG:append:witherspoon-tacoma = " openpower-dumps-extension"
|
||||
|
||||
SYSTEMD_SERVICE:${PN}-manager:p10bmc += "clear_hostdumps_poweroff.service"
|
||||
SYSTEMD_SERVICE:${PN}-manager:witherspoon-tacoma += "clear_hostdumps_poweroff.service"
|
||||
|
||||
EXTRA_OEMESON:append:p10bmc = " -DBMC_DUMP_TOTAL_SIZE=409600"
|
||||
EXTRA_OEMESON:append:p10bmc = " -DBMC_DUMP_MAX_SIZE=20480"
|
||||
|
||||
install_ibm_plugins() {
|
||||
install ${S}/tools/dreport.d/ibm.d/plugins.d/* ${D}${dreport_plugin_dir}/
|
||||
}
|
||||
|
||||
#Link in the plugins so dreport run them at the appropriate time
|
||||
python link_ibm_plugins() {
|
||||
source = d.getVar('S', True)
|
||||
source_path = os.path.join(source, "tools", "dreport.d", "ibm.d", "plugins.d")
|
||||
op_plugins = os.listdir(source_path)
|
||||
for op_plugin in op_plugins:
|
||||
op_plugin_name = os.path.join(source_path, op_plugin)
|
||||
install_dreport_user_script(op_plugin_name, d)
|
||||
}
|
||||
|
||||
#Install dump header script from dreport/ibm.d to dreport/include.d
|
||||
install_dreport_header() {
|
||||
install -d ${D}${dreport_include_dir}
|
||||
install -m 0755 ${S}/tools/dreport.d/ibm.d/gendumpheader ${D}${dreport_include_dir}/
|
||||
}
|
||||
|
||||
IBM_INSTALL_POSTFUNCS = "install_ibm_plugins link_ibm_plugins"
|
||||
IBM_INSTALL_POSTFUNCS:append:p10bmc = " install_dreport_header"
|
||||
|
||||
do_install[postfuncs] += "${IBM_INSTALL_POSTFUNCS}"
|
||||
@@ -0,0 +1,23 @@
|
||||
SUMMARY = "Fan watchdog services"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit obmc-phosphor-systemd
|
||||
|
||||
RDEPENDS:${PN} += "phosphor-gpio-monitor-monitor"
|
||||
RDEPENDS:${PN} += "busybox"
|
||||
|
||||
RESET_SERVICE = "reset-fan-watchdog.service"
|
||||
TGTFMT = "obmc-chassis-poweron@0.target"
|
||||
RESET_FMT = "../${RESET_SERVICE}:${TGTFMT}.wants/${RESET_SERVICE}"
|
||||
|
||||
MONITOR_SERVICE = "fan-watchdog-monitor@.service"
|
||||
|
||||
WATCHDOG_SERVICE = "fan-watchdog.service"
|
||||
WATCHDOG_FMT = "../${WATCHDOG_SERVICE}:${TGTFMT}.wants/${WATCHDOG_SERVICE}"
|
||||
|
||||
SYSTEMD_SERVICE:${PN} += "${RESET_SERVICE} ${MONITOR_SERVICE} ${WATCHDOG_SERVICE}"
|
||||
SYSTEMD_LINK:${PN} += "${RESET_FMT} ${WATCHDOG_FMT}"
|
||||
SYSTEMD_ENVIRONMENT_FILE:${PN}:append:df-openpower = " obmc/fan-watchdog/reset-fan-watchdog.conf"
|
||||
SYSTEMD_ENVIRONMENT_FILE:${PN}:append:df-openpower = " obmc/fan-watchdog/fan-watchdog.conf"
|
||||
@@ -0,0 +1,9 @@
|
||||
[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/phosphor-unit-failure-monitor --source %i --target obmc-fan-watchdog-takeover.target --action start
|
||||
@@ -0,0 +1,14 @@
|
||||
[Unit]
|
||||
Description=Fan Watchdog Daemon
|
||||
Wants=phosphor-fan-monitor-init@0.service
|
||||
Before=phosphor-fan-monitor-init@0.service
|
||||
Conflicts=obmc-fan-watchdog-takeover.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile={envfiledir}/obmc/fan-watchdog/fan-watchdog.conf
|
||||
ExecStartPre=/bin/sh -c "echo V > ${{DEVICE}}"
|
||||
ExecStart=/sbin/watchdog -T ${{TIMEOUT}} -t ${{INTERVAL}} -F ${{DEVICE}}
|
||||
KillSignal=SIGKILL
|
||||
|
||||
[Install]
|
||||
#RequiredBy=obmc-chassis-poweron@0.target
|
||||
@@ -0,0 +1,3 @@
|
||||
TIMEOUT=5
|
||||
INTERVAL=1
|
||||
DEVICE=/dev/watchdog0
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
GPIO_PATH=/dev/gpiochip0
|
||||
GPIO=114
|
||||
DELAY=1
|
||||
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Fan Watchdog Reset
|
||||
Wants=phosphor-fan-monitor-init@0.service
|
||||
Before=phosphor-fan-monitor-init@0.service
|
||||
Conflicts=obmc-chassis-poweroff@0.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
EnvironmentFile={envfiledir}/obmc/fan-watchdog/reset-fan-watchdog.conf
|
||||
ExecStart=/usr/bin/gpioset --mode=time -u ${{DELAY}} ${{GPIO_PATH}} ${{GPIO}}=0
|
||||
ExecStart=/usr/bin/gpioset --mode=time -u ${{DELAY}} ${{GPIO_PATH}} ${{GPIO}}=1
|
||||
@@ -0,0 +1,3 @@
|
||||
TIMEOUT=5
|
||||
INTERVAL=1
|
||||
DEVICE=/dev/watchdog0
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
GPIO_PATH=/dev/gpiochip0
|
||||
GPIO=109
|
||||
DELAY=1
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
TIMEOUT=5
|
||||
INTERVAL=1
|
||||
DEVICE=/dev/watchdog0
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
GPIO_PATH=/dev/gpiochip0
|
||||
GPIO=114
|
||||
DELAY=1
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
TIMEOUT=5
|
||||
INTERVAL=1
|
||||
DEVICE=/dev/watchdog0
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
GPIO_PATH=/dev/gpiochip0
|
||||
GPIO=109
|
||||
DELAY=1
|
||||
@@ -0,0 +1 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
+1044
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
@@ -0,0 +1,21 @@
|
||||
fans:
|
||||
- inventory: /system/chassis/motherboard/fan2
|
||||
cooling_zone: 0
|
||||
cooling_profile: all
|
||||
sensors:
|
||||
- fan2_0
|
||||
- inventory: /system/chassis/motherboard/fan0
|
||||
cooling_zone: 0
|
||||
cooling_profile: all
|
||||
sensors:
|
||||
- fan0_0
|
||||
- inventory: /system/chassis/motherboard/fan1
|
||||
cooling_zone: 0
|
||||
cooling_profile: air
|
||||
sensors:
|
||||
- fan1_0
|
||||
- inventory: /system/chassis/motherboard/fan3
|
||||
cooling_zone: 0
|
||||
cooling_profile: all
|
||||
sensors:
|
||||
- fan3_0
|
||||
@@ -0,0 +1,21 @@
|
||||
fans:
|
||||
- inventory: /system/chassis/motherboard/fan2
|
||||
cooling_zone: 0
|
||||
cooling_profile: all
|
||||
sensors:
|
||||
- fan2_0
|
||||
- inventory: /system/chassis/motherboard/fan0
|
||||
cooling_zone: 0
|
||||
cooling_profile: all
|
||||
sensors:
|
||||
- fan0_0
|
||||
- inventory: /system/chassis/motherboard/fan1
|
||||
cooling_zone: 0
|
||||
cooling_profile: air
|
||||
sensors:
|
||||
- fan1_0
|
||||
- inventory: /system/chassis/motherboard/fan3
|
||||
cooling_zone: 0
|
||||
cooling_profile: all
|
||||
sensors:
|
||||
- fan3_0
|
||||
@@ -0,0 +1 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
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
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
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
|
||||
@@ -0,0 +1 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
@@ -0,0 +1,68 @@
|
||||
manager_configuration:
|
||||
power_on_delay: 20
|
||||
|
||||
zone_configuration:
|
||||
|
||||
#Air cooled zones
|
||||
- zone_conditions:
|
||||
- name: air_cooled_chassis
|
||||
|
||||
zones:
|
||||
- zone: 0
|
||||
cooling_profiles:
|
||||
- air
|
||||
- all
|
||||
full_speed: 9500
|
||||
default_floor: 8000
|
||||
increase_delay: 5
|
||||
decrease_interval: 30
|
||||
interfaces:
|
||||
- name: xyz.openbmc_project.Control.ThermalMode
|
||||
properties:
|
||||
- name: Supported
|
||||
type: array[string]
|
||||
values:
|
||||
- value: DEFAULT
|
||||
description: >
|
||||
Default thermal control mode
|
||||
- name: Current
|
||||
type: string
|
||||
persist: true
|
||||
values:
|
||||
- value: DEFAULT
|
||||
description: >
|
||||
Set current thermal control mode to the
|
||||
default which will be replaced on startup if
|
||||
another supported mode was selected & persisted.
|
||||
|
||||
#Water cooled zones
|
||||
- zone_conditions:
|
||||
- name: water_and_air_cooled_chassis
|
||||
|
||||
zones:
|
||||
- zone: 0
|
||||
cooling_profiles:
|
||||
- water
|
||||
- all
|
||||
full_speed: 9500
|
||||
default_floor: 8000
|
||||
increase_delay: 5
|
||||
decrease_interval: 30
|
||||
interfaces:
|
||||
- name: xyz.openbmc_project.Control.ThermalMode
|
||||
properties:
|
||||
- name: Supported
|
||||
type: array[string]
|
||||
values:
|
||||
- value: DEFAULT
|
||||
description: >
|
||||
Default thermal control mode
|
||||
- name: Current
|
||||
type: string
|
||||
persist: true
|
||||
values:
|
||||
- value: DEFAULT
|
||||
description: >
|
||||
Set current thermal control mode to the
|
||||
default which will be replaced on startup if
|
||||
another supported mode was selected & persisted.
|
||||
+100
@@ -0,0 +1,100 @@
|
||||
manager_configuration:
|
||||
power_on_delay: 20
|
||||
|
||||
zone_configuration:
|
||||
|
||||
#Air cooled zones
|
||||
- zone_conditions:
|
||||
- name: air_cooled_chassis
|
||||
|
||||
zones:
|
||||
- zone: 0
|
||||
cooling_profiles:
|
||||
- air
|
||||
- all
|
||||
full_speed: 10500
|
||||
default_floor: 8000
|
||||
increase_delay: 5
|
||||
decrease_interval: 30
|
||||
interfaces:
|
||||
- name: xyz.openbmc_project.Control.ThermalMode
|
||||
properties:
|
||||
- name: Supported
|
||||
type: array[string]
|
||||
values:
|
||||
- value: DEFAULT
|
||||
description: >
|
||||
Default thermal control mode
|
||||
- value: CUSTOM
|
||||
description: >
|
||||
Custom thermal control mode for handling the use of
|
||||
PCI cards located behind the GPU exhaust that
|
||||
could overtemp where the default mode is not
|
||||
sufficient enough.
|
||||
- value: HEAVY_IO
|
||||
description: >
|
||||
Heavy IO thermal control mode for handling the use
|
||||
of PCI cards that produce heavy IO utilization and
|
||||
could overtemp.
|
||||
- value: MAX_BASE_FAN_FLOOR
|
||||
description: >
|
||||
Maximum base fan floor mode is for handling the
|
||||
use of any hardware that requires the highest
|
||||
amount of cooling even when the system may be idle.
|
||||
- name: Current
|
||||
type: string
|
||||
persist: true
|
||||
values:
|
||||
- value: DEFAULT
|
||||
description: >
|
||||
Set current thermal control mode to the
|
||||
default which will be replaced on startup if
|
||||
another selected mode was persisted.
|
||||
|
||||
#Water cooled zones
|
||||
- zone_conditions:
|
||||
- name: water_and_air_cooled_chassis
|
||||
|
||||
zones:
|
||||
- zone: 0
|
||||
cooling_profiles:
|
||||
- water
|
||||
- all
|
||||
full_speed: 10500
|
||||
default_floor: 8000
|
||||
increase_delay: 5
|
||||
decrease_interval: 30
|
||||
interfaces:
|
||||
- name: xyz.openbmc_project.Control.ThermalMode
|
||||
properties:
|
||||
- name: Supported
|
||||
type: array[string]
|
||||
values:
|
||||
- value: DEFAULT
|
||||
description: >
|
||||
Default thermal control mode
|
||||
- value: CUSTOM
|
||||
description: >
|
||||
Custom thermal control mode for handling the use of
|
||||
PCI cards located behind the GPU exhaust that
|
||||
could overtemp where the default mode is not
|
||||
sufficient enough.
|
||||
- value: HEAVY_IO
|
||||
description: >
|
||||
Heavy IO thermal control mode for handling the use
|
||||
of PCI cards that produce heavy IO utilization and
|
||||
could overtemp.
|
||||
- value: MAX_BASE_FAN_FLOOR
|
||||
description: >
|
||||
Maximum base fan floor mode is for handling the
|
||||
use of any hardware that requires the highest
|
||||
amount of cooling even when the system may be idle.
|
||||
- name: Current
|
||||
type: string
|
||||
persist: true
|
||||
values:
|
||||
- value: DEFAULT
|
||||
description: >
|
||||
Set current thermal control mode to the
|
||||
default which will be replaced on startup if
|
||||
another selected mode was persisted.
|
||||
@@ -0,0 +1,36 @@
|
||||
fans:
|
||||
- inventory: /system/chassis/motherboard/fan0
|
||||
functional_delay: 5
|
||||
allowed_out_of_range_time: 30
|
||||
deviation: 15
|
||||
num_sensors_nonfunc_for_fan_nonfunc: 1
|
||||
sensors:
|
||||
- name: fan0_0
|
||||
has_target: true
|
||||
|
||||
- inventory: /system/chassis/motherboard/fan1
|
||||
functional_delay: 5
|
||||
allowed_out_of_range_time: 30
|
||||
deviation: 15
|
||||
num_sensors_nonfunc_for_fan_nonfunc: 1
|
||||
sensors:
|
||||
- name: fan1_0
|
||||
has_target: true
|
||||
|
||||
- inventory: /system/chassis/motherboard/fan2
|
||||
functional_delay: 5
|
||||
allowed_out_of_range_time: 30
|
||||
deviation: 15
|
||||
num_sensors_nonfunc_for_fan_nonfunc: 1
|
||||
sensors:
|
||||
- name: fan2_0
|
||||
has_target: true
|
||||
|
||||
- inventory: /system/chassis/motherboard/fan3
|
||||
functional_delay: 5
|
||||
allowed_out_of_range_time: 30
|
||||
deviation: 15
|
||||
num_sensors_nonfunc_for_fan_nonfunc: 1
|
||||
sensors:
|
||||
- name: fan3_0
|
||||
has_target: true
|
||||
@@ -0,0 +1,62 @@
|
||||
- name: fan0
|
||||
path: /system/chassis/motherboard/fan0
|
||||
methods:
|
||||
- type: gpio
|
||||
key: 5
|
||||
physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
|
||||
devpath: /dev/input/by-path/platform-gpio-keys-polled-event
|
||||
- type: tach
|
||||
sensors:
|
||||
- fan0_0
|
||||
rpolicy:
|
||||
type: anyof
|
||||
|
||||
- name: fan1
|
||||
path: /system/chassis/motherboard/fan1
|
||||
methods:
|
||||
- type: gpio
|
||||
key: 6
|
||||
physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
|
||||
devpath: /dev/input/by-path/platform-gpio-keys-polled-event
|
||||
- type: tach
|
||||
sensors:
|
||||
- fan1_0
|
||||
rpolicy:
|
||||
type: anyof
|
||||
|
||||
- name: fan2
|
||||
path: /system/chassis/motherboard/fan2
|
||||
methods:
|
||||
- type: gpio
|
||||
key: 7
|
||||
physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
|
||||
devpath: /dev/input/by-path/platform-gpio-keys-polled-event
|
||||
- type: tach
|
||||
sensors:
|
||||
- fan2_0
|
||||
rpolicy:
|
||||
type: anyof
|
||||
|
||||
- name: fan3
|
||||
path: /system/chassis/motherboard/fan3
|
||||
methods:
|
||||
- type: gpio
|
||||
key: 8
|
||||
physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
|
||||
devpath: /dev/input/by-path/platform-gpio-keys-polled-event
|
||||
- type: tach
|
||||
sensors:
|
||||
- fan3_0
|
||||
rpolicy:
|
||||
type: anyof
|
||||
|
||||
# Boost fan presence
|
||||
- name: fan4
|
||||
path: /system/chassis/motherboard/fan4
|
||||
methods:
|
||||
- type: gpio
|
||||
key: 9
|
||||
physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060
|
||||
devpath: /dev/input/by-path/platform-gpio-keys-polled-event
|
||||
rpolicy:
|
||||
type: anyof
|
||||
@@ -0,0 +1,2 @@
|
||||
[Unit]
|
||||
Conflicts=obmc-fan-watchdog-takeover.target
|
||||
@@ -0,0 +1,3 @@
|
||||
[Unit]
|
||||
#These overrides allow the fan watchdog to take over when this service dies
|
||||
OnFailure=fan-watchdog-monitor@%n.service
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
OBJPATH="--path=/system/chassis"
|
||||
AIR="--air"
|
||||
WATER=""
|
||||
DEVICE="--dev=/dev/input/by-path/platform-gpio-keys-event"
|
||||
CODE="--event=13"
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
[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]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
EnvironmentFile={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf
|
||||
ExecStart=/usr/bin/phosphor-cooling-type ${{OBJPATH}} ${{AIR}} ${{WATER}} ${{DEVICE}} ${{CODE}}
|
||||
|
||||
[Install]
|
||||
RequiredBy=multi-user.target
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
OBJPATH="--path=/system/chassis"
|
||||
AIR="--air"
|
||||
WATER=""
|
||||
DEVICE=""
|
||||
CODE=""
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
OBJPATH="--path=/system/chassis"
|
||||
AIR="--air"
|
||||
WATER=""
|
||||
DEVICE="--dev=/dev/input/by-path/platform-gpio-keys-event"
|
||||
CODE="--event=13"
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
[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]
|
||||
Type=oneshot
|
||||
RemainAfterExit=yes
|
||||
EnvironmentFile={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf
|
||||
ExecStart=/usr/bin/phosphor-cooling-type ${{OBJPATH}} ${{AIR}} ${{WATER}} ${{DEVICE}} ${{CODE}}
|
||||
|
||||
[Install]
|
||||
RequiredBy=multi-user.target
|
||||
@@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Phosphor Fan Control Daemon
|
||||
Requires=xyz.openbmc_project.Hwmon@-ahb-apb-bus\x401e78a000-i2c\x2dbus\x40{ADDR}-max31785\x4052.service
|
||||
After=xyz.openbmc_project.Hwmon@-ahb-apb-bus\x401e78a000-i2c\x2dbus\x40{ADDR}-max31785\x4052.service
|
||||
Requires=phosphor-cooling-type@%i.service
|
||||
After=phosphor-cooling-type@%i.service
|
||||
|
||||
[Service]
|
||||
Restart=on-failure
|
||||
ExecStart=/usr/bin/phosphor-fan-control --control
|
||||
|
||||
[Install]
|
||||
RequiredBy=obmc-chassis-poweron@%i.target
|
||||
@@ -0,0 +1,63 @@
|
||||
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
|
||||
|
||||
# Package configuration
|
||||
FAN_PACKAGES:append:ibm-ac-server = " \
|
||||
phosphor-cooling-type \
|
||||
"
|
||||
|
||||
PACKAGECONFIG:append:ibm-ac-server = " cooling-type"
|
||||
|
||||
TMPL_COOLING = "phosphor-cooling-type@.service"
|
||||
INSTFMT_COOLING = "phosphor-cooling-type@{0}.service"
|
||||
MULTI_USR_TGT = "multi-user.target"
|
||||
FMT_COOLING = "../${TMPL_COOLING}:${MULTI_USR_TGT}.requires/${INSTFMT_COOLING}"
|
||||
|
||||
FILES:phosphor-cooling-type:append:ibm-ac-server = " ${bindir}/phosphor-cooling-type"
|
||||
SYSTEMD_SERVICE:phosphor-cooling-type:append:ibm-ac-server = " ${TMPL_COOLING}"
|
||||
SYSTEMD_LINK:phosphor-cooling-type:append:ibm-ac-server = " ${@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:append:ibm-ac-server = " ${@compose_list(d, 'COOLING_ENV_FMT', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
|
||||
#These services are protected by the watchdog
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-control:witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-control-init@0.service.d/fan-watchdog-monitor.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-control:witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-control@0.service.d/fan-watchdog-monitor.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-monitor:witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-monitor-init@0.service.d/fan-watchdog-monitor.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-monitor:witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-monitor.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-control:p10bmc += "fan-watchdog-monitor.conf:phosphor-fan-control-init@0.service.d/fan-watchdog-monitor.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-control:p10bmc += "fan-watchdog-monitor.conf:phosphor-fan-control@0.service.d/fan-watchdog-monitor.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-monitor:p10bmc += "fan-watchdog-monitor.conf:phosphor-fan-monitor-init@0.service.d/fan-watchdog-monitor.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-monitor:p10bmc += "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:witherspoon += "fan-watchdog-conflicts.conf:phosphor-fan-control@0.service.d/fan-watchdog-conflicts.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-monitor:witherspoon += "fan-watchdog-conflicts.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-conflicts.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-control:p10bmc += "fan-watchdog-conflicts.conf:phosphor-fan-control@0.service.d/fan-watchdog-conflicts.conf"
|
||||
SYSTEMD_OVERRIDE:phosphor-fan-monitor:p10bmc += "fan-watchdog-conflicts.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-conflicts.conf"
|
||||
|
||||
# Witherspoon fan control service linking
|
||||
# Link fan control init service
|
||||
SYSTEMD_SERVICE:${PN}-control:witherspoon += "${TMPL_CONTROL} ${TMPL_CONTROL_INIT}"
|
||||
SYSTEMD_LINK:${PN}-control:witherspoon += "${@compose_list(d, 'FMT_CONTROL_INIT', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
# Link fan control service to be started at standby
|
||||
FMT_CONTROL_STDBY:witherspoon = "../${TMPL_CONTROL}:${MULTI_USR_TGT}.wants/${INSTFMT_CONTROL}"
|
||||
SYSTEMD_LINK:${PN}-control:witherspoon += "${@compose_list(d, 'FMT_CONTROL_STDBY', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
# Link fan control service to also start at poweron
|
||||
FMT_CONTROL_PWRON:witherspoon = "../${TMPL_CONTROL}:${POWERON_TGT}.requires/${INSTFMT_CONTROL}"
|
||||
SYSTEMD_LINK:${PN}-control:witherspoon += "${@compose_list(d, 'FMT_CONTROL_PWRON', 'OBMC_CHASSIS_INSTANCES')}"
|
||||
|
||||
# Enable the use of JSON on the fan applications that support it
|
||||
PACKAGECONFIG:append:witherspoon = " json"
|
||||
EXTRA_OEMESON:append:witherspoon = " -Djson-control=disabled"
|
||||
|
||||
PACKAGECONFIG:append:p10bmc = " json sensor-monitor"
|
||||
|
||||
# Set the appropriate i2c address used within the overridden phosphor-fan-control@.service
|
||||
# file that's used for witherspoon type(including witherspoon-tacoma) machines
|
||||
SYSTEMD_SUBSTITUTIONS:witherspoon = "ADDR:100:phosphor-fan-control@.service"
|
||||
SYSTEMD_SUBSTITUTIONS:witherspoon-tacoma = "ADDR:200:phosphor-fan-control@.service"
|
||||
|
||||
# Set the PKG_DEFAULT_MACHINE name to "witherspoon" for tacoma so witherspoon's
|
||||
# JSON config files are installed on tacoma machines (since they use the same ones)
|
||||
PKG_DEFAULT_MACHINE:witherspoon-tacoma = "witherspoon"
|
||||
@@ -0,0 +1,23 @@
|
||||
BMC_RW_MTD:ibm-ac-server = "bmc"
|
||||
BMC_RW_MTD:p10bmc = "bmc"
|
||||
BMC_RO_MTD:ibm-ac-server = "alt-bmc+bmc"
|
||||
BMC_RO_MTD:p10bmc = "bmc"
|
||||
BMC_KERNEL_MTD:ibm-ac-server = "bmc"
|
||||
BMC_KERNEL_MTD:p10bmc = "bmc"
|
||||
|
||||
# Enable signature verification
|
||||
PACKAGECONFIG:append:ibm-ac-server = " verify_signature"
|
||||
PACKAGECONFIG:append:p10bmc = " verify_signature"
|
||||
|
||||
# Enable sync of persistent files to the alternate BMC chip
|
||||
PACKAGECONFIG:append:ibm-ac-server = " sync_bmc_files"
|
||||
|
||||
# Enable USB code update
|
||||
PACKAGECONFIG:append:p10bmc = " usb_code_update"
|
||||
|
||||
# Enable Side Switch Boot
|
||||
PACKAGECONFIG:append:p10bmc = " side_switch_on_boot"
|
||||
|
||||
# Set BMC Minimum Ship Level version format
|
||||
EXTRA_OEMESON:append:p10bmc = " -Dregex-bmc-msl='([a-z]+[0-9]{2})+([0-9]+).([0-9]+).([0-9]+)'"
|
||||
|
||||
|
After Width: | Height: | Size: 745 B |
@@ -0,0 +1,30 @@
|
||||
SUMMARY = "ID Button pressed application"
|
||||
PR = "r1"
|
||||
LICENSE = "Apache-2.0"
|
||||
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
|
||||
|
||||
inherit obmc-phosphor-systemd
|
||||
|
||||
DEPENDS += "phosphor-gpio-monitor"
|
||||
RDEPENDS:${PN} += "phosphor-gpio-monitor-monitor"
|
||||
|
||||
S = "${WORKDIR}"
|
||||
SRC_URI += "file://toggle_identify_led.sh"
|
||||
|
||||
do_install() {
|
||||
install -d ${D}${bindir}
|
||||
install -m 0755 ${WORKDIR}/toggle_identify_led.sh \
|
||||
${D}${bindir}/toggle_identify_led.sh
|
||||
}
|
||||
|
||||
SYSTEMD_ENVIRONMENT_FILE:${PN} +="obmc/gpio/id_button"
|
||||
|
||||
ID_BUTTON_SERVICE = "id_button"
|
||||
|
||||
TMPL = "phosphor-gpio-monitor@.service"
|
||||
INSTFMT = "phosphor-gpio-monitor@{0}.service"
|
||||
TGT = "multi-user.target"
|
||||
FMT = "../${TMPL}:${TGT}.requires/${INSTFMT}"
|
||||
|
||||
SYSTEMD_SERVICE:${PN} += "id-button-pressed.service"
|
||||
SYSTEMD_LINK:${PN} += "${@compose_list(d, 'FMT', 'ID_BUTTON_SERVICE')}"
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user