diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2020-04-22 21:06:02 +0300 |
---|---|---|
committer | Andrew Geissler <geissonator@yahoo.com> | 2020-04-27 19:52:12 +0300 |
commit | e161514219e0dc8a957dabbb8529fb9fcac4e115 (patch) | |
tree | 5de46006517d690f5793eec41281d60611228ecd /meta-ibm/meta-witherspoon/recipes-phosphor/dbus | |
parent | a3f54c8b8cbd50bc86efdc52cfb7d348d8c19d21 (diff) | |
download | openbmc-e161514219e0dc8a957dabbb8529fb9fcac4e115.tar.xz |
meta-ibm: move all meta-witherspoon metadata
The metadata common to all IBM systems is confusingly split between
meta-ibm and meta-witherspoon. Move everything to meta-ibm.
The meta-ibm README is re-written to more accurately reflect the scope
of the layer.
Allow the configuration samples (bblayers.conf.sample,
local.conf.sample) to be sourced from either meta-ibm or
meta-witherspoon until such a time that any workflows and tooling have
had the opportunity to move to meta-ibm.
(From meta-ibm rev: 6e05ef2e90b214eaf4e43ee7027bbbb1d8d09442)
Change-Id: I3ec890d5300f9649c974ea6b9dca93a2e8a889ab
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Diffstat (limited to 'meta-ibm/meta-witherspoon/recipes-phosphor/dbus')
19 files changed, 0 insertions, 4759 deletions
diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/events-policy.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/events-policy.bb deleted file mode 100644 index 52cb31313..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/events-policy.bb +++ /dev/null @@ -1,17 +0,0 @@ -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" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/events-policy/config.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/events-policy/config.yaml deleted file mode 100644 index 5c62d45a3..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/events-policy/config.yaml +++ /dev/null @@ -1,133 +0,0 @@ -- 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." - -- 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy.bb deleted file mode 100644 index f8355053d..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy.bb +++ /dev/null @@ -1,28 +0,0 @@ -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 += "file://air-cooled.yaml" -SRC_URI_append_ibm-ac-server = " file://water-cooled.yaml" -SRC_URI += "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 -} - -do_install_append_mihawk() { - install -D ${WORKDIR}/air-cooled.yaml ${D}${config_dir}/air-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" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/air-cooled.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/air-cooled.yaml deleted file mode 100644 index 52232e3f0..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/air-cooled.yaml +++ /dev/null @@ -1,339 +0,0 @@ -# Air cooled mihawk fan policy for PDM. -# -# An air cooled mihawk 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 mihawk has 6 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 - - meta: FAN - path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 - - meta: FAN - path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 - -- 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 - - meta: FAN - path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4/fan4_0 - - meta: FAN - path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4/fan4_1 - - meta: FAN - path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5/fan5_0 - - meta: FAN - path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5/fan5_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: 6 - 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 25 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: 25000000us - 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 25 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: 25000000us - callback: log and poweroff - 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/fan-errors.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/fan-errors.yaml deleted file mode 100644 index 65cfbeb25..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/mihawk/fan-errors.yaml +++ /dev/null @@ -1,905 +0,0 @@ -# Witherspoon fan error policy for PDM. -# -# * Create a NotPresent error if fan 0, 1, 2, 3, 4, or 5 is not present for more -# than 20 seconds. -# * Create a Nonfunctional error if fan 0, 1, 2, 3, 4, or 5 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: fan4 - class: group - group: path - members: - - meta: FAN - path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 - -- name: fan5 - class: group - group: path - members: - - meta: FAN - path: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 - - -- name: chassis state - description: > - '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 fan4 presence - description: > - 'Trigger logic on fan4 presence state changes.' - class: watch - watch: property - paths: fan4 - properties: fan present - callback: check power fan4 presence - -- name: watch fan4 functional - description: > - 'Trigger logic on fan4 functional state changes.' - class: watch - watch: property - paths: fan4 - properties: fan functional - callback: check power fan4 functional - -- name: watch fan5 presence - description: > - 'Trigger logic on fan5 presence state changes.' - class: watch - watch: property - paths: fan5 - properties: fan present - callback: check power fan5 presence - -- name: watch fan5 functional - description: > - 'Trigger logic on fan5 functional state changes.' - class: watch - watch: property - paths: fan5 - properties: fan functional - callback: check power fan5 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: watch fan4 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: fan4 - properties: fan present and functional - callback: resolve fan4 errors if present and functional - -- name: watch fan5 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: fan5 - properties: fan present and functional - callback: resolve fan5 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 power fan4 presence - description: > - 'If the chassis has power, check presence of fan4.' - class: condition - condition: count - paths: chassis state - properties: chassis powered - callback: check fan4 presence - countop: '>' - countbound: 0 - op: '==' - bound: xyz.openbmc_project.State.Chassis.PowerState.On - -- name: check power fan4 functional - description: > - 'If the chassis has power, check functional of fan4.' - class: condition - condition: count - paths: chassis state - properties: chassis powered - callback: check fan4 functional - countop: '>' - countbound: 0 - op: '==' - bound: xyz.openbmc_project.State.Chassis.PowerState.On - -- name: check power fan5 presence - description: > - 'If the chassis has power, check presence of fan5.' - class: condition - condition: count - paths: chassis state - properties: chassis powered - callback: check fan5 presence - countop: '>' - countbound: 0 - op: '==' - bound: xyz.openbmc_project.State.Chassis.PowerState.On - -- name: check power fan5 functional - description: > - 'If the chassis has power, check functional of fan5.' - class: condition - condition: count - paths: chassis state - properties: chassis powered - callback: check fan5 functional - countop: '>' - countbound: 0 - op: '==' - bound: xyz.openbmc_project.State.Chassis.PowerState.On - -- name: check fans - description: > - 'Verify each of the 12 fans are present.' - class: callback - callback: group - members: - - check fan0 presence - - check fan1 presence - - check fan2 presence - - check fan3 presence - - check fan4 presence - - check fan5 presence - - check fan0 functional - - check fan1 functional - - check fan2 functional - - check fan3 functional - - check fan4 functional - - check fan5 functional - -- name: check fan0 presence - description: > - 'If this condition passes fan0 has been unplugged for more than 20 seconds.' - class: condition - condition: count - paths: fan0 - properties: fan present - defer: 20000000us - callback: notpresent fan0 error - countop: '<' - countbound: 1 - op: '==' - bound: true - -- name: check fan0 functional - description: > - 'If this condition passes fan0 has been marked as nonfunctional.' - class: condition - condition: count - paths: fan0 - properties: fan functional - callback: nonfunctional fan0 error - countop: '>' - countbound: 0 - op: '==' - bound: false - -- name: check fan1 presence - description: > - 'If this condition passes fan1 has been unplugged for more than 20 seconds.' - 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 fan4 presence - description: > - 'If this condition passes fan4 has been unplugged for more than 20 seconds.' - class: condition - condition: count - paths: fan4 - properties: fan present - defer: 20000000us - callback: notpresent fan4 error - countop: '<' - countbound: 1 - op: '==' - bound: true - -- name: check fan4 functional - description: > - 'If this condition passes fan4 has been marked as nonfunctional.' - class: condition - condition: count - paths: fan4 - properties: fan functional - callback: nonfunctional fan4 error - countop: '>' - countbound: 0 - op: '==' - bound: false - -- name: check fan5 presence - description: > - 'If this condition passes fan5 has been unplugged for more than 20 seconds.' - class: condition - condition: count - paths: fan5 - properties: fan present - defer: 20000000us - callback: notpresent fan5 error - countop: '<' - countbound: 1 - op: '==' - bound: true - -- name: check fan5 functional - description: > - 'If this condition passes fan5 has been marked as nonfunctional.' - class: condition - condition: count - paths: fan5 - properties: fan functional - callback: nonfunctional fan5 error - countop: '>' - countbound: 0 - op: '==' - bound: false - -- name: notpresent fan0 error - class: callback - callback: elog - paths: fan0 - properties: fan present - error: xyz::openbmc_project::Inventory::Error::NotPresent - metadata: - - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 - type: string - -- name: nonfunctional fan0 error - class: callback - callback: elog - paths: fan0 - properties: fan functional - error: xyz::openbmc_project::Inventory::Error::Nonfunctional - metadata: - - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan0 - type: string - -- name: notpresent fan1 error - class: callback - callback: elog - paths: fan1 - properties: fan present - error: xyz::openbmc_project::Inventory::Error::NotPresent - metadata: - - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 - type: string - -- name: nonfunctional fan1 error - class: callback - callback: elog - paths: fan1 - properties: fan functional - error: xyz::openbmc_project::Inventory::Error::Nonfunctional - metadata: - - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan1 - type: string - -- name: notpresent fan2 error - class: callback - callback: elog - paths: fan2 - properties: fan present - error: xyz::openbmc_project::Inventory::Error::NotPresent - metadata: - - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 - type: string - -- name: nonfunctional fan2 error - class: callback - callback: elog - paths: fan2 - properties: fan functional - error: xyz::openbmc_project::Inventory::Error::Nonfunctional - metadata: - - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan2 - type: string - -- name: notpresent fan3 error - class: callback - callback: elog - paths: fan3 - properties: fan present - error: xyz::openbmc_project::Inventory::Error::NotPresent - metadata: - - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3 - type: string - -- name: nonfunctional fan3 error - class: callback - callback: elog - paths: fan3 - properties: fan functional - error: xyz::openbmc_project::Inventory::Error::Nonfunctional - metadata: - - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan3 - type: string - -- name: notpresent fan4 error - class: callback - callback: elog - paths: fan4 - properties: fan present - error: xyz::openbmc_project::Inventory::Error::NotPresent - metadata: - - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 - type: string - -- name: nonfunctional fan4 error - class: callback - callback: elog - paths: fan4 - properties: fan functional - error: xyz::openbmc_project::Inventory::Error::Nonfunctional - metadata: - - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 - type: string - -- name: notpresent fan5 error - class: callback - callback: elog - paths: fan5 - properties: fan present - error: xyz::openbmc_project::Inventory::Error::NotPresent - metadata: - - name: xyz::openbmc_project::Inventory::NotPresent::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 - type: string - -- name: nonfunctional fan5 error - class: callback - callback: elog - paths: fan5 - properties: fan functional - error: xyz::openbmc_project::Inventory::Error::Nonfunctional - metadata: - - name: xyz::openbmc_project::Inventory::Nonfunctional::CALLOUT_INVENTORY_PATH - value: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 - type: string - -- name: resolve fan0 errors if 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 - -- 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 fan4 errors if present and functional - description: > - 'If fan4 is present and functional, call the resolve fan4 errors callback.' - class: condition - condition: count - paths: fan4 - properties: fan present and functional - callback: resolve fan4 errors - countop: '==' - countbound: 2 - op: '==' - bound: true - -- name: resolve fan5 errors if present and functional - description: > - 'If fan5 is present and functional, call the resolve fan5 errors callback.' - class: condition - condition: count - paths: fan5 - properties: fan present and functional - callback: resolve fan5 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 - -- name: resolve fan4 errors - class: callback - callback: resolve callout - paths: fan4 - properties: fan present and functional - callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan4 - -- name: resolve fan5 errors - class: callback - callback: resolve callout - paths: fan5 - properties: fan present and functional - callout: /xyz/openbmc_project/inventory/system/chassis/motherboard/fan5 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/air-cooled.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/air-cooled.yaml deleted file mode 100644 index bfdcd1bb6..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/air-cooled.yaml +++ /dev/null @@ -1,274 +0,0 @@ -# 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/fan-errors.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/fan-errors.yaml deleted file mode 100644 index 794d91f17..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/fan-errors.yaml +++ /dev/null @@ -1,671 +0,0 @@ -# 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/water-cooled.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/water-cooled.yaml deleted file mode 100644 index 661021a9b..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/swift/water-cooled.yaml +++ /dev/null @@ -1,274 +0,0 @@ -# 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/air-cooled.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/air-cooled.yaml deleted file mode 100644 index d60aa9179..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/air-cooled.yaml +++ /dev/null @@ -1,328 +0,0 @@ -# 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/fan-errors.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/fan-errors.yaml deleted file mode 100644 index 0c14627d2..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/fan-errors.yaml +++ /dev/null @@ -1,676 +0,0 @@ -# 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/water-cooled.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/water-cooled.yaml deleted file mode 100644 index a279cfefa..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/fan-policy/witherspoon/water-cooled.yaml +++ /dev/null @@ -1,322 +0,0 @@ -# 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend deleted file mode 100644 index bfc789788..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend +++ /dev/null @@ -1 +0,0 @@ -EXTRA_OECONF_append_rainier = " --enable-ibm-dbus-interfaces" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend deleted file mode 100644 index 3a18960ea..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor-config.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -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_mihawk = " fan-policy" -PHOSPHOR_DBUS_MONITOR_CONFIGS_append_mihawk = " thermal-policy" -PHOSPHOR_DBUS_MONITOR_CONFIGS_append_mihawk = " power-supply-policy" -PHOSPHOR_DBUS_MONITOR_CONFIGS_append_mihawk = " events-policy" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend deleted file mode 100644 index 5c9d0b15c..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/phosphor-dbus-monitor_%.bbappend +++ /dev/null @@ -1,2 +0,0 @@ -SYSTEMD_LINK_phosphor-msl-verify_append_ibm-ac-server = " ../phosphor-msl-verify.service:obmc-chassis-poweron@0.target.requires/phosphor-msl-verify.service" -SYSTEMD_LINK_phosphor-msl-verify_append_mihawk = " ../phosphor-msl-verify.service:obmc-chassis-poweron@0.target.requires/phosphor-msl-verify.service" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/power-supply-policy.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/power-supply-policy.bb deleted file mode 100644 index 8d3df4600..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/power-supply-policy.bb +++ /dev/null @@ -1,17 +0,0 @@ -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" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/power-supply-policy/power-supply-policy.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/power-supply-policy/power-supply-policy.yaml deleted file mode 100644 index e00e747b6..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/power-supply-policy/power-supply-policy.yaml +++ /dev/null @@ -1,215 +0,0 @@ -# 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy.bb b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy.bb deleted file mode 100644 index b5b38baa3..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy.bb +++ /dev/null @@ -1,17 +0,0 @@ -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 = "file://thermal-policy.yaml" - -do_install() { - install -D ${WORKDIR}/thermal-policy.yaml ${D}${config_dir}/thermal-policy.yaml -} - -FILES_${PN} += "${config_dir}/thermal-policy.yaml" diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/ibm-ac-server/thermal-policy.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/ibm-ac-server/thermal-policy.yaml deleted file mode 100644 index 7c48509c5..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/ibm-ac-server/thermal-policy.yaml +++ /dev/null @@ -1,187 +0,0 @@ -# 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 diff --git a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/mihawk/thermal-policy.yaml b/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/mihawk/thermal-policy.yaml deleted file mode 100644 index 727630cb8..000000000 --- a/meta-ibm/meta-witherspoon/recipes-phosphor/dbus/thermal-policy/mihawk/thermal-policy.yaml +++ /dev/null @@ -1,345 +0,0 @@ -# Mihawk thermal policy for PDM. -# -# Shut down the system if more than three cores -# have a temperature greater than 95 degrees Celcius. -# or ambient temperature greater than 45 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: ambient sensor - description: > - 'The machine has one ambient temperature sensors.' - class: group - group: path - members: - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/ambient_temp - -- name: gpu sensors - description: > - 'Each gpu has its own temperature sensor.' - class: group - group: path - members: - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/gpu0 - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/gpu1 - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/gpu2 - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/gpu3 - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/gpu4 - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/gpu5 - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/gpu6 - - meta: SENSOR - path: /xyz/openbmc_project/sensors/temperature/gpu7 - -- 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: ambient temp - description: > - 'Monitor the ambient temperature.' - class: group - group: property - type: int64 - members: - - interface: xyz.openbmc_project.Sensor.Value - meta: TEMP - property: Value - -- name: gpu temp - description: > - 'Monitor the temperature of each gpu 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: watch ambient temp - description: > - 'Trigger logic on ambient temp changes.' - class: watch - watch: property - paths: ambient sensor - properties: ambient temp - callback: check ambient temp - -- name: watch gpu temps - description: > - 'Trigger logic on gpu core temp changes.' - class: watch - watch: property - paths: gpu sensors - properties: gpu temp - callback: check gpu 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: 95000 - oneshot: true - -- name: check ambient temp - description: > - 'If the ambient sensor is too hot. Shut the system down.' - class: condition - condition: count - paths: ambient sensor - properties: ambient temp - callback: ambient log and shutdown - countop: '>=' - countbound: 1 - op: '>=' - bound: 45000 - oneshot: true - -- name: check gpu temps - description: > - 'If the gpu temperature sensor is too hot. Shut the system down.' - class: condition - condition: count - paths: gpu sensors - properties: gpu temp - callback: gpu log and shutdown - countop: '>=' - countbound: 1 - op: '>=' - bound: 92 - 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: ambient log and shutdown - description: > - 'Shut the system down and log an event.' - class: callback - callback: group - members: - - shutdown - - create ambient criticalhigh error - - create ambient shutdown error - -- name: gpu log and shutdown - description: > - 'Shut the system down and log an event.' - class: callback - callback: group - members: - - shutdown - - create gpu criticalhigh error - - create gpu 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 ambient criticalhigh error - description: > - 'Create a Ambient CriticalHigh Error log.' - class: callback - callback: elog_with_metadata - paths: ambient sensor - properties: ambient temp - error: xyz::openbmc_project::Sensor::Threshold::Error::CriticalHigh - metadata: xyz::openbmc_project::Sensor::Threshold::CriticalHigh::SENSOR_DATA - -- name: create gpu criticalhigh error - description: > - 'Create a GPU CriticalHigh Error log.' - class: callback - callback: elog_with_metadata - paths: gpu sensors - properties: gpu 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 - -- name: create ambient shutdown error - description: > - 'Create a SystemShutdown Error log.' - class: callback - callback: elog - paths: ambient sensor - properties: ambient temp - error: xyz::openbmc_project::State::Shutdown::ThermalEvent::Error::Ambient - -- name: create gpu shutdown error - description: > - 'Create a SystemShutdown Error log.' - class: callback - callback: elog - paths: gpu sensors - properties: gpu temp - error: xyz::openbmc_project::State::Shutdown::ThermalEvent::Error::GPU |