diff options
Diffstat (limited to 'meta-ibm/meta-witherspoon/recipes-phosphor/power')
13 files changed, 376 insertions, 0 deletions
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/phosphor-logging-error-logs-native.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/power/phosphor-logging-error-logs-native.bbappend new file mode 100644 index 000000000..03646adeb --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/phosphor-logging-error-logs-native.bbappend @@ -0,0 +1,2 @@ +DEPENDS += "witherspoon-pfault-analysis-error-native" + diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis-error-native.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis-error-native.bb new file mode 100644 index 000000000..64c551f7d --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis-error-native.bb @@ -0,0 +1,18 @@ +SUMMARY = "Copy error yaml files to known path for elog parsing" +PR = "r1" + +inherit native +inherit obmc-phosphor-license +inherit phosphor-dbus-yaml + +require witherspoon-pfault-analysis.inc + +S = "${WORKDIR}/git" + +do_install_append() { + SRC=${S}/org/open_power/Witherspoon + DEST=${D}${yaml_dir}/org/open_power/Witherspoon + install -d ${DEST} + install ${SRC}/Fault.errors.yaml ${DEST} + install ${SRC}/Fault.metadata.yaml ${DEST} +} diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.bb new file mode 100644 index 000000000..1d148dfa0 --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.bb @@ -0,0 +1,47 @@ +SUMMARY = "Witherspoon Power Fault Analysis" +DESCRIPTION = "Analyzes power devices for faults" +PR = "r1" + +inherit autotools +inherit pkgconfig +inherit obmc-phosphor-systemd +inherit pythonnative + +require ${PN}.inc + +S = "${WORKDIR}/git" + +DEPENDS += " \ + phosphor-logging \ + autoconf-archive-native \ + openpower-dbus-interfaces \ + sdbus++-native \ + " + +RDEPENDS_${PN} += " \ + phosphor-logging \ + phosphor-dbus-interfaces \ + sdbusplus \ + " + +CHASSIS_ON_TGT = "obmc-chassis-poweron@0.target" +SEQ_MONITOR_SVC = "witherspoon-pseq-monitor.service" +SEQ_MONITOR_FMT = "../${SEQ_MONITOR_SVC}:${CHASSIS_ON_TGT}.wants/${SEQ_MONITOR_SVC}" + +SEQ_PGOOD_SVC = "witherspoon-pseq-monitor-pgood.service" +SEQ_PGOOD_FMT = "../${SEQ_PGOOD_SVC}:${CHASSIS_ON_TGT}.wants/${SEQ_PGOOD_SVC}" + +SYSTEMD_SERVICE_${PN} += "${SEQ_MONITOR_SVC} ${SEQ_PGOOD_SVC}" +SYSTEMD_LINK_${PN} += "${SEQ_MONITOR_FMT} ${SEQ_PGOOD_FMT}" + +PSU_MONITOR_TMPL = "witherspoon-power-supply-monitor@.service" +PSU_MONITOR_INSTFMT = "witherspoon-power-supply-monitor@{0}.service" +PSU_MONITOR_TGT = "${SYSTEMD_DEFAULT_TARGET}" +PSU_MONITOR_FMT = "../${PSU_MONITOR_TMPL}:${PSU_MONITOR_TGT}.requires/${PSU_MONITOR_INSTFMT}" + +FILES_witherspoon-psu-monitor = "${sbindir}/witherspoon-psu-monitor" +SYSTEMD_SERVICE_${PN} += "${PSU_MONITOR_TMPL}" +SYSTEMD_LINK_${PN} += "${@compose_list(d, 'PSU_MONITOR_FMT', 'OBMC_POWER_SUPPLY_INSTANCES')}" + +PSU_MONITOR_ENV_FMT = "obmc/power-supply-monitor/power-supply-monitor-{0}.conf" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "${@compose_list(d, 'PSU_MONITOR_ENV_FMT', 'OBMC_POWER_SUPPLY_INSTANCES')}" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.inc b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.inc new file mode 100644 index 000000000..f047c1fa2 --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis.inc @@ -0,0 +1,5 @@ +HOMEPAGE = "https://github.com/openbmc/witherspoon-pfault-analysis" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" +SRC_URI += "git://github.com/openbmc/witherspoon-pfault-analysis" +SRCREV = "cab4834210a92da1cd300ec12740fcb1c19dc375" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-0.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-0.conf new file mode 100644 index 000000000..207eb503f --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-0.conf @@ -0,0 +1,6 @@ +DEVPATH=/sys/bus/i2c/devices/3-0069 +INSTANCE=0 +INVENTORY=/system/chassis/motherboard/powersupply0 +NUM_HISTORY_RECORDS=120 +SYNC_GPIO_PATH=/dev/gpiochip0 +SYNC_GPIO_NUM=105
\ No newline at end of file diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-1.conf b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-1.conf new file mode 100644 index 000000000..73efd450d --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/obmc/power-supply-monitor/power-supply-monitor-1.conf @@ -0,0 +1,6 @@ +DEVPATH=/sys/bus/i2c/devices/3-0068 +INSTANCE=1 +INVENTORY=/system/chassis/motherboard/powersupply1 +NUM_HISTORY_RECORDS=120 +SYNC_GPIO_PATH=/dev/gpiochip0 +SYNC_GPIO_NUM=105
\ No newline at end of file diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-power-supply-monitor@.service b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-power-supply-monitor@.service new file mode 100644 index 000000000..ba4e368e4 --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-power-supply-monitor@.service @@ -0,0 +1,15 @@ +[Unit] +Description=Witherspoon Power Supply %I Monitor +Wants=mapper-wait@-xyz-openbmc_project-inventory-system-chassis-motherboard-powersupply%i.service +After=mapper-wait@-xyz-openbmc_project-inventory-system-chassis-motherboard-powersupply%i.service +Wants=mapper-wait@-org-openbmc-control-power0.service +After=mapper-wait@-org-openbmc-control-power0.service +ConditionPathExists={envfiledir}/obmc/power-supply-monitor/power-supply-monitor-%i.conf + +[Service] +EnvironmentFile={envfiledir}/obmc/power-supply-monitor/power-supply-monitor-%i.conf +ExecStart=/usr/bin/env witherspoon-psu-monitor --path=${{DEVPATH}} --instance=${{INSTANCE}} --inventory=${{INVENTORY}} --num-history-records=${{NUM_HISTORY_RECORDS}} --sync-gpio-path=${{SYNC_GPIO_PATH}} --sync-gpio-num=${{SYNC_GPIO_NUM}} +SyslogIdentifier=witherspoon-psu-monitor + +[Install] +RequiredBy={SYSTEMD_DEFAULT_TARGET} diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor-pgood.service b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor-pgood.service new file mode 100644 index 000000000..f18efc1a6 --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor-pgood.service @@ -0,0 +1,11 @@ +[Unit] +Description=Witherspoon Power Sequencer Power-on Monitor +Wants=op-power-start@0.service +After=op-power-start@0.service +Conflicts=obmc-chassis-poweroff@0.target +ConditionPathExists=!/run/openbmc/chassis@0-on + +[Service] +Type=oneshot +ExecStart=/usr/bin/env witherspoon-pseq-monitor -a pgood-monitor -i 5000 +SyslogIdentifier=witherspoon-pseq-monitor diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor.service b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor.service new file mode 100644 index 000000000..6e76c8f48 --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-pfault-analysis/witherspoon-pseq-monitor.service @@ -0,0 +1,10 @@ +[Unit] +Description=Witherspoon Power Sequencer Runtime Monitor +Wants=obmc-host-start-pre@0.target +Before=obmc-host-start-pre@0.target +After=obmc-power-on@0.target +Conflicts=obmc-chassis-poweroff@0.target + +[Service] +ExecStart=/usr/bin/env witherspoon-pseq-monitor -a runtime-monitor -i 500 +SyslogIdentifier=witherspoon-pseq-monitor diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy-native.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy-native.bb new file mode 100644 index 000000000..4d234c199 --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy-native.bb @@ -0,0 +1,12 @@ +SUMMARY = "Power supply policy for Witherspoon" +PR = "r1" + +inherit native +inherit obmc-phosphor-license +inherit phosphor-dbus-monitor + +SRC_URI += "file://power-supply-policy.yaml" + +do_install() { + install -D ${WORKDIR}/power-supply-policy.yaml ${D}${config_dir}/power-supply-policy.yaml +} diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy/power-supply-policy.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy/power-supply-policy.yaml new file mode 100644 index 000000000..20141c9c3 --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-policy/power-supply-policy.yaml @@ -0,0 +1,215 @@ +# Witherspoon 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: > + 'A Witherspoon 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: > + 'A Witherspoon 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync.bb new file mode 100644 index 000000000..b0903e714 --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync.bb @@ -0,0 +1,15 @@ +SUMMARY = "Witherspoon Power Supply Sync" +DESCRIPTION = "Synchronizes the power supplies' INPUT_HISTORY data" +PR = "r1" + +inherit obmc-phosphor-license +inherit obmc-phosphor-systemd + +RDEPENDS_${PN} += "virtual/obmc-gpio-monitor" + +SYNC_SERVICE = "witherspoon-power-supply-sync.service" +TGTFMT = "obmc-chassis-poweron@0.target" +SYNC_FMT = "../${SYNC_SERVICE}:${TGTFMT}.wants/${SYNC_SERVICE}" + +SYSTEMD_SERVICE_${PN} += "${SYNC_SERVICE}" +SYSTEMD_LINK_${PN} += "${SYNC_FMT}" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync/witherspoon-power-supply-sync.service b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync/witherspoon-power-supply-sync.service new file mode 100644 index 000000000..005a0141d --- /dev/null +++ b/meta-ibm/meta-witherspoon/recipes-phosphor/power/witherspoon-power-supply-sync/witherspoon-power-supply-sync.service @@ -0,0 +1,14 @@ +[Unit] +Description=Witherspoon Power Supply Input History SYNC +Wants=obmc-power-start-pre@0.target +After=obmc-power-start-pre@0.target +Wants=obmc-chassis-poweron@0.target +Before=obmc-chassis-poweron@0.target +ConditionPathExists=!/run/openbmc/chassis@0-on + +[Service] +ExecStart=/usr/bin/env phosphor-gpio-util --gpio=105 --path=/dev/gpiochip0 --delay=5 --action=low_high +SyslogIdentifier=witherspoon-power-supply-sync + +[Install] +RequiredBy=obmc-chassis-poweron@0.target |