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/recipes-phosphor/fans | |
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/recipes-phosphor/fans')
40 files changed, 2845 insertions, 0 deletions
diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config.bbappend b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config.bbappend new file mode 100644 index 000000000..8f2097cc1 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config/mihawk/events.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config/mihawk/events.yaml new file mode 100644 index 000000000..2efbb0c7d --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config/mihawk/events.yaml @@ -0,0 +1,840 @@ +groups: + - name: zone0_control_mode + description: Thermal control mode for zone 0 + service: xyz.openbmc_project.Control.Thermal + type: /xyz/openbmc_project/control/thermal + members: + - /0 + - name: air_cooled_zone0_fans + description: Group of fan inventory objects for air cooled zone 0 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan0 + - /system/chassis/motherboard/fan1 + - /system/chassis/motherboard/fan2 + - /system/chassis/motherboard/fan3 + - /system/chassis/motherboard/fan4 + - /system/chassis/motherboard/fan5 + - name: zone0_ambient + description: Group of ambient temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/ambient_temp + - name: occ0_object + description: Dbus object containing OCC0 properties + type: /org/open_power/control + members: + - /occ0 + - name: occ1_object + description: Dbus object containing OCC1 properties + type: /org/open_power/control + members: + - /occ1 + - name: zone0_cores + description: Group of core temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_core0_temp + - /temperature/p0_core1_temp + - /temperature/p0_core2_temp + - /temperature/p0_core3_temp + - /temperature/p0_core4_temp + - /temperature/p0_core5_temp + - /temperature/p0_core6_temp + - /temperature/p0_core7_temp + - /temperature/p0_core8_temp + - /temperature/p0_core9_temp + - /temperature/p0_core10_temp + - /temperature/p0_core11_temp + - /temperature/p0_core12_temp + - /temperature/p0_core13_temp + - /temperature/p0_core14_temp + - /temperature/p0_core15_temp + - /temperature/p0_core16_temp + - /temperature/p0_core17_temp + - /temperature/p0_core18_temp + - /temperature/p0_core19_temp + - /temperature/p0_core20_temp + - /temperature/p0_core21_temp + - /temperature/p0_core22_temp + - /temperature/p0_core23_temp + - /temperature/p1_core0_temp + - /temperature/p1_core1_temp + - /temperature/p1_core2_temp + - /temperature/p1_core3_temp + - /temperature/p1_core4_temp + - /temperature/p1_core5_temp + - /temperature/p1_core6_temp + - /temperature/p1_core7_temp + - /temperature/p1_core8_temp + - /temperature/p1_core9_temp + - /temperature/p1_core10_temp + - /temperature/p1_core11_temp + - /temperature/p1_core12_temp + - /temperature/p1_core13_temp + - /temperature/p1_core14_temp + - /temperature/p1_core15_temp + - /temperature/p1_core16_temp + - /temperature/p1_core17_temp + - /temperature/p1_core18_temp + - /temperature/p1_core19_temp + - /temperature/p1_core20_temp + - /temperature/p1_core21_temp + - /temperature/p1_core22_temp + - /temperature/p1_core23_temp + - name: zone0_dimms + description: Group of dimm temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/dimm0_temp + - /temperature/dimm1_temp + - /temperature/dimm2_temp + - /temperature/dimm3_temp + - /temperature/dimm4_temp + - /temperature/dimm5_temp + - /temperature/dimm6_temp + - /temperature/dimm7_temp + - /temperature/dimm8_temp + - /temperature/dimm9_temp + - /temperature/dimm10_temp + - /temperature/dimm11_temp + - /temperature/dimm12_temp + - /temperature/dimm13_temp + - /temperature/dimm14_temp + - /temperature/dimm15_temp + - /temperature/dimm16_temp + - /temperature/dimm17_temp + - /temperature/dimm18_temp + - /temperature/dimm19_temp + - /temperature/dimm20_temp + - /temperature/dimm21_temp + - /temperature/dimm22_temp + - /temperature/dimm23_temp + - /temperature/dimm24_temp + - /temperature/dimm25_temp + - /temperature/dimm26_temp + - /temperature/dimm27_temp + - /temperature/dimm28_temp + - /temperature/dimm29_temp + - /temperature/dimm30_temp + - /temperature/dimm31_temp + - name: zone0_onboard + description: Group of onboard temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_pcie_temp + - /temperature/p1_pcie_temp + - name: zone0_vrd + description: Group of vrd temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_vcs_temp + - /temperature/p0_vdn_temp + - /temperature/p1_vcs_temp + - /temperature/p1_vdn_temp + - /temperature/p0_vdd_temp + - /temperature/p1_vdd_temp + - name: zone0_gpu + description: Group of gpu temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/gpu0 + - /temperature/gpu1 + - /temperature/gpu2 + - /temperature/gpu3 + - /temperature/gpu4 + - /temperature/gpu5 + - /temperature/gpu6 + - /temperature/gpu7 + - name: zone0_nvme + description: Group of nvme temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/nvme0 + - /temperature/nvme1 + - /temperature/nvme2 + - /temperature/nvme3 + - /temperature/nvme4 + - /temperature/nvme5 + - /temperature/nvme6 + - /temperature/nvme7 + - /temperature/nvme8 + - /temperature/nvme9 + - /temperature/nvme10 + - /temperature/nvme11 + - /temperature/nvme12 + - /temperature/nvme13 + - /temperature/nvme14 + - /temperature/nvme15 + - /temperature/nvme16 + - /temperature/nvme17 + - /temperature/nvme18 + - /temperature/nvme19 + - /temperature/nvme20 + - /temperature/nvme21 + - /temperature/nvme22 + - /temperature/nvme23 +matches: + - name: propertiesChanged + parameters: + - object + - interface + - name: interfacesAdded + parameters: + - object + - name: interfacesRemoved + parameters: + - object + - name: nameOwnerChanged + parameters: + - object + - interface + +signals: + - name: propertiesChanged + description: > + A property changed match + parameters: + - type + - object + - interface + - property + match: propertiesChanged + - name: interfacesAdded + description: > + An interfaces added match + parameters: + - type + - object + - interface + - property + match: interfacesAdded + - name: interfacesRemoved + description: > + An interfaces removed match + parameters: + - object + - interface + match: interfacesRemoved + - name: nameOwnerChanged + description: > + A name owner changed match + parameters: + match: nameOwnerChanged + +methods: + - name: getProperties + description: > + Get the property values of the given group members + by performing a `GetProperty` method call on each + parameters: + - type + - name: nameHasOwner + description: > + A NameHasOwner method call to be performed on all event group members + parameters: + +handlers: + - name: setProperty + description: > + Sets a value for the given object/interface/property + parameters: + - type + - name: setService + description: > + Sets the service name and ownership status for the given group + parameters: + - group + - name: removeInterface + description: > + Removes an interface(and all associated properties) on the + given object from use within all event actions + parameters: + - object + - interface + +preconditions: + - name: property_states_match + description: > + All defined properties must match the values given to + enable a set speed event otherwise fan speeds are set to full + parameters: + - groups + - name: services_missing_owner + description: > + Any services missing an owner enable the events given otherwise + the events are removed/disabled + parameters: + +actions: + - name: call_actions_based_on_timer + description: > + Sets up a list of actions to be invoked when the defined timer + expires (or for each expiration of a repeating timer) + parameters: + - timer + - actions + - name: default_floor_on_missing_owner + description: > + Set the fan floor to the default floor + - name: set_speed_on_missing_owner + description: > + Set fans to the given speed when any service within the group + no longer exists + parameters: + - speed + - name: set_request_speed_base_with_max + description: > + Set the base request speed of a zone to the max value of a group for + calculating a new target speed + - name: count_state_before_speed + description: Set the speed when a number of properties at a state + parameters: + - count + - property + - speed + - name: set_floor_from_average_sensor_value + description: Set floor speed from first entry with average less than key + parameters: + - map + - name: set_ceiling_from_average_sensor_value + description: Set ceiling speed based on key transition values with average + parameters: + - map + - name: set_net_increase_speed + description: > + Set the speed increase delta based on a factor applied to + the delta increase size times the given value and property's + value difference + parameters: + - property + - factor + - delta + - name: set_net_decrease_speed + description: > + Set the speed decrease delta based on a factor applied to + the delta decrease size times the given value and property's + value difference + parameters: + - property + - factor + - delta + - name: use_alternate_events_on_state + description: > + Replaces a set of default events with an alternate set of events + when all the group properties are at a given state + parameters: + - property + - defevents + - altevents + +events: + - name: default_fan_floor_on_service_fail + precondition: + name: services_missing_owner + groups: + - name: zone0_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: nameHasOwner + handler: setService + - name: signal + signal: nameOwnerChanged + handler: setService + events: + - name: default_fan_floor + groups: + - name: zone0_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: timer + interval: 5000000 + type: oneshot + actions: + - name: default_floor_on_missing_owner + - name: high_speed_on_occ_service_fails + groups: + - name: occ0_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + - name: occ1_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + triggers: + - name: init + method: nameHasOwner + handler: setService + - name: signal + signal: nameOwnerChanged + handler: setService + actions: + - name: call_actions_based_on_timer + timer: + interval: 5000000 + type: oneshot + actions: + - name: set_speed_on_missing_owner + speed: + value: 255 + type: uint64_t + - name: missing_or_fails_before_high_speed_air + groups: + - name: air_cooled_zone0_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Inventory.Item + property: + name: Present + type: bool + - name: air_cooled_zone0_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 255 + type: uint64_t + - name: set_air_cooled_speed_boundaries_based_on_ambient + groups: + - name: zone0_control_mode + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Control.ThermalMode + property: + name: Current + type: std::string + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: use_alternate_events_on_state + property: + value: CUSTOM + type: std::string + defevents: + - name: default_floor_boundary + groups: + - name: zone0_ambient + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 25000: 85 + - 26000: 85 + - 28000: 97 + - 31000: 116 + - 33000: 128 + - 36000: 148 + - 38000: 160 + - 41000: 255 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 25000: 255 + - 27000: 255 + type: std::map<int64_t, uint64_t> + altevents: + - name: alternate_floor_boundary + groups: + - name: zone0_ambient + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 25000: 255 + - 26000: 255 + - 28000: 255 + - 31000: 255 + - 33000: 255 + - 36000: 255 + - 38000: 255 + - 41000: 255 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 25000: 255 + - 27000: 255 + type: std::map<int64_t, uint64_t> + - name: occ_active_speed_changes + precondition: + name: property_states_match + groups: + - name: occ0_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + - name: occ1_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: interfacesAdded + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + events: + - name: speed_control_sensors + groups: + - name: zone0_onboard + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_vrd + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_cores + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_dimms + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_gpu + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_nvme + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: interfacesAdded + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + - name: signal + signal: interfacesRemoved + handler: removeInterface + - name: fails_before_high_speed_air + groups: + - name: zone0_cores + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + - name: zone0_dimms + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: interfacesAdded + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 255 + type: uint64_t + - name: 1sec_speed_change_request_sampling + triggers: + - name: timer + interval: 1000000 + type: repeating + actions: + # Speed changes based on onboard temps + - name: set_net_increase_speed + groups: + - name: zone0_onboard + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 55000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 8 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_onboard + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 52000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 3 + type: uint64_t + # Speed changes based on vrd temps + - name: set_net_increase_speed + groups: + - name: zone0_vrd + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 90000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 5 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_vrd + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 85000 + type: int64_t + factor: + value: 3000 + type: int64_t + delta: + value: 3 + type: uint64_t + # Speed changes based on core temps + - name: set_net_increase_speed + groups: + - name: zone0_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 75000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 13 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 70000 + type: int64_t + factor: + value: 4000 + type: int64_t + delta: + value: 5 + type: uint64_t + # Speed changes based on dimm temps + - name: set_net_increase_speed + groups: + - name: zone0_dimms + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 80000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 8 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_dimms + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 75000 + type: int64_t + factor: + value: 3000 + type: int64_t + delta: + value: 3 + type: uint64_t + # Speed changes based on gpu temps + - name: set_net_increase_speed + groups: + - name: zone0_gpu + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 80 + type: int64_t + factor: + value: 1 + type: int64_t + delta: + value: 13 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_gpu + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 77 + type: int64_t + factor: + value: 4 + type: int64_t + delta: + value: 5 + type: uint64_t + # Speed changes based on nvme temps + - name: set_net_increase_speed + groups: + - name: zone0_nvme + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 55 + type: int64_t + factor: + value: 1 + type: int64_t + delta: + value: 13 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_nvme + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 52 + type: int64_t + factor: + value: 3 + type: int64_t + delta: + value: 5 + type: uint64_t diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config/witherspoon/events.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config/witherspoon/events.yaml new file mode 100644 index 000000000..c1902d02b --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-events-config/witherspoon/events.yaml @@ -0,0 +1,1044 @@ +groups: + - name: poweron_pgood + description: System poweron pgood state + type: /org/openbmc/control + members: + - /power0 + - name: zone0_control_mode + description: Thermal control mode for zone 0 + service: xyz.openbmc_project.Control.Thermal + type: /xyz/openbmc_project/control/thermal + members: + - /0 + - name: air_cooled_zone0_fans + description: Group of fan inventory objects for air cooled zone 0 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan0 + - /system/chassis/motherboard/fan1 + - /system/chassis/motherboard/fan2 + - /system/chassis/motherboard/fan3 + - name: water_and_air_cooled_zone0_fans + description: Group of fan inventory objects for water/air cooled zone 0 + type: /xyz/openbmc_project/inventory + members: + - /system/chassis/motherboard/fan0 + - /system/chassis/motherboard/fan2 + - /system/chassis/motherboard/fan3 + - name: zone0_ambient + description: Group of ambient temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/ambient + - name: occ0_object + description: Dbus object containing OCC0 properties + type: /org/open_power/control + members: + - /occ0 + - name: occ1_object + description: Dbus object containing OCC1 properties + type: /org/open_power/control + members: + - /occ1 + - name: zone0_cores + description: Group of core temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_core0_temp + - /temperature/p0_core1_temp + - /temperature/p0_core2_temp + - /temperature/p0_core3_temp + - /temperature/p0_core4_temp + - /temperature/p0_core5_temp + - /temperature/p0_core6_temp + - /temperature/p0_core7_temp + - /temperature/p0_core8_temp + - /temperature/p0_core9_temp + - /temperature/p0_core10_temp + - /temperature/p0_core11_temp + - /temperature/p0_core12_temp + - /temperature/p0_core13_temp + - /temperature/p0_core14_temp + - /temperature/p0_core15_temp + - /temperature/p0_core16_temp + - /temperature/p0_core17_temp + - /temperature/p0_core18_temp + - /temperature/p0_core19_temp + - /temperature/p0_core20_temp + - /temperature/p0_core21_temp + - /temperature/p0_core22_temp + - /temperature/p0_core23_temp + - /temperature/p1_core0_temp + - /temperature/p1_core1_temp + - /temperature/p1_core2_temp + - /temperature/p1_core3_temp + - /temperature/p1_core4_temp + - /temperature/p1_core5_temp + - /temperature/p1_core6_temp + - /temperature/p1_core7_temp + - /temperature/p1_core8_temp + - /temperature/p1_core9_temp + - /temperature/p1_core10_temp + - /temperature/p1_core11_temp + - /temperature/p1_core12_temp + - /temperature/p1_core13_temp + - /temperature/p1_core14_temp + - /temperature/p1_core15_temp + - /temperature/p1_core16_temp + - /temperature/p1_core17_temp + - /temperature/p1_core18_temp + - /temperature/p1_core19_temp + - /temperature/p1_core20_temp + - /temperature/p1_core21_temp + - /temperature/p1_core22_temp + - /temperature/p1_core23_temp + - name: zone0_regulators + description: Group of regulator temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/p0_vdd_temp + - /temperature/p1_vdd_temp + - name: zone0_dimms + description: Group of dimm temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/dimm0_temp + - /temperature/dimm1_temp + - /temperature/dimm2_temp + - /temperature/dimm3_temp + - /temperature/dimm4_temp + - /temperature/dimm5_temp + - /temperature/dimm6_temp + - /temperature/dimm7_temp + - /temperature/dimm8_temp + - /temperature/dimm9_temp + - /temperature/dimm10_temp + - /temperature/dimm11_temp + - /temperature/dimm12_temp + - /temperature/dimm13_temp + - /temperature/dimm14_temp + - /temperature/dimm15_temp + - name: zone0_gpu_cores + description: Group of gpu core temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/gpu0_core_temp + - /temperature/gpu1_core_temp + - /temperature/gpu2_core_temp + - /temperature/gpu3_core_temp + - /temperature/gpu4_core_temp + - /temperature/gpu5_core_temp + - name: zone0_gpu_memory + description: Group of gpu memory temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/gpu0_mem_temp + - /temperature/gpu1_mem_temp + - /temperature/gpu2_mem_temp + - /temperature/gpu3_mem_temp + - /temperature/gpu4_mem_temp + - /temperature/gpu5_mem_temp + - name: zone0_pcie + description: Group of pcie temperature sensors for zone 0 + type: /xyz/openbmc_project/sensors + members: + - /temperature/pcie + +matches: + - name: propertiesChanged + parameters: + - object + - interface + - name: interfacesAdded + parameters: + - object + - name: interfacesRemoved + parameters: + - object + - name: nameOwnerChanged + parameters: + - object + - interface + +signals: + - name: propertiesChanged + description: > + A property changed match + parameters: + - type + - object + - interface + - property + match: propertiesChanged + - name: interfacesAdded + description: > + An interfaces added match + parameters: + - type + - object + - interface + - property + match: interfacesAdded + - name: interfacesRemoved + description: > + An interfaces removed match + parameters: + - object + - interface + match: interfacesRemoved + - name: nameOwnerChanged + description: > + A name owner changed match + parameters: + match: nameOwnerChanged + +methods: + - name: getProperties + description: > + Get the property values of the given group members + by performing a `GetProperty` method call on each + parameters: + - type + - name: nameHasOwner + description: > + A NameHasOwner method call to be performed on all event group members + parameters: + +handlers: + - name: setProperty + description: > + Sets a value for the given object/interface/property + parameters: + - type + - name: setService + description: > + Sets the service name and ownership status for the given group + parameters: + - group + - name: removeInterface + description: > + Removes an interface(and all associated properties) on the + given object from use within all event actions + parameters: + - object + - interface + +preconditions: + - name: property_states_match + description: > + All defined properties must match the values given to + enable a set speed event otherwise fan speeds are set to full + parameters: + - groups + - name: services_missing_owner + description: > + Any services missing an owner enable the events given otherwise + the events are removed/disabled + parameters: + +actions: + - name: call_actions_based_on_timer + description: > + Sets up a list of actions to be invoked when the defined timer + expires (or for each expiration of a repeating timer) + parameters: + - timer + - actions + - name: default_floor_on_missing_owner + description: > + Set the fan floor to the default floor + - name: set_speed_on_missing_owner + description: > + Set fans to the given speed when any service within the group + no longer exists + parameters: + - speed + - name: set_request_speed_base_with_max + description: > + Set the base request speed of a zone to the max value of a group for + calculating a new target speed + - name: count_state_before_speed + description: Set the speed when a number of properties at a state + parameters: + - count + - property + - speed + - name: set_floor_from_average_sensor_value + description: Set floor speed from first entry with average less than key + parameters: + - map + - name: set_ceiling_from_average_sensor_value + description: Set ceiling speed based on key transition values with average + parameters: + - map + - name: set_net_increase_speed + description: > + Set the speed increase delta based on a factor applied to + the delta increase size times the given value and property's + value difference + parameters: + - property + - factor + - delta + - name: set_net_decrease_speed + description: > + Set the speed decrease delta based on a factor applied to + the delta decrease size times the given value and property's + value difference + parameters: + - property + - factor + - delta + - name: use_alternate_events_on_state + description: > + Replaces a set of default events with an alternate set of events + when all the group properties are at a given state + parameters: + - property + - defevents + - altevents + - name: update_default_floor + description: > + Update the default fan floor to the given speed + parameters: + - property + - speed + - name: use_events_on_state + description: > + Use a set of events when all the group properties are at a given + state, otherwise remove the events + parameters: + - property + - events + +events: + - name: default_fan_floor_on_service_fail + precondition: + name: services_missing_owner + groups: + - name: zone0_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: nameHasOwner + handler: setService + - name: signal + signal: nameOwnerChanged + handler: setService + events: + - name: default_fan_floor + groups: + - name: zone0_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: timer + interval: 5000000 + type: oneshot + actions: + - name: default_floor_on_missing_owner + - name: high_speed_on_occ_service_fails + groups: + - name: occ0_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + - name: occ1_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + triggers: + - name: init + method: nameHasOwner + handler: setService + - name: signal + signal: nameOwnerChanged + handler: setService + actions: + - name: call_actions_based_on_timer + timer: + interval: 5000000 + type: oneshot + actions: + - name: set_speed_on_missing_owner + speed: + value: 10500 + type: uint64_t + - name: set_speed_boundaries_based_on_ambient + groups: + - name: zone0_control_mode + interface: xyz.openbmc_project.Control.ThermalMode + property: + name: Current + type: std::string + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: update_default_floor + property: + value: DEFAULT + type: std::string + speed: + value: 8000 + type: uint64_t + - name: update_default_floor + property: + value: CUSTOM + type: std::string + speed: + value: 8000 + type: uint64_t + - name: update_default_floor + property: + value: HEAVY_IO + type: std::string + speed: + value: 10500 + type: uint64_t + - name: update_default_floor + property: + value: MAX_BASE_FAN_FLOOR + type: std::string + speed: + value: 10500 + type: uint64_t + - name: use_events_on_state + property: + value: DEFAULT + type: std::string + events: + - name: default_fan_speed_boundaries + groups: + - name: zone0_ambient + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 27000: 3500 + - 32000: 4600 + - 37000: 5200 + - 40000: 5800 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 25000: 7200 + - 27000: 10500 + type: std::map<int64_t, uint64_t> + - name: default_fan_speed_boundaries + groups: + - name: zone0_ambient + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 27000: 3000 + - 32000: 4300 + - 37000: 5000 + - 40000: 5800 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 25000: 7200 + - 27000: 10500 + type: std::map<int64_t, uint64_t> + - name: use_events_on_state + property: + value: CUSTOM + type: std::string + events: + - name: custom_fan_speed_boundaries + groups: + - name: zone0_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 27000: 4600 + - 32000: 5000 + - 37000: 5400 + - 40000: 5800 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 25000: 7200 + - 27000: 10500 + type: std::map<int64_t, uint64_t> + - name: use_events_on_state + property: + value: HEAVY_IO + type: std::string + events: + - name: heavy_io_fan_speed_boundaries + groups: + - name: zone0_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 27000: 5900 + - 32000: 6800 + - 37000: 7500 + - 40000: 8200 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 25000: 7200 + - 27000: 10500 + type: std::map<int64_t, uint64_t> + - name: use_events_on_state + property: + value: MAX_BASE_FAN_FLOOR + type: std::string + events: + - name: max_base_fan_floor_fan_speed_boundaries + groups: + - name: zone0_ambient + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: set_floor_from_average_sensor_value + map: + value: + - 27000: 7200 + - 32000: 8800 + - 37000: 9600 + - 40000: 10500 + type: std::map<int64_t, uint64_t> + - name: set_ceiling_from_average_sensor_value + map: + value: + - 25000: 7200 + - 27000: 10500 + type: std::map<int64_t, uint64_t> + - name: full_speed_at_power_on + precondition: + name: property_states_match + groups: + - name: poweron_pgood + interface: org.openbmc.control.Power + property: + name: pgood + type: int32_t + value: 1 + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + events: + - name: missing_or_fails_before_high_speed_air + groups: + - name: air_cooled_zone0_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Inventory.Item + property: + name: Present + type: bool + - name: air_cooled_zone0_fans + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 10500 + type: uint64_t + - name: missing_or_fails_before_high_speed_water_and_air + groups: + - name: water_and_air_cooled_zone0_fans + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Inventory.Item + property: + name: Present + type: bool + - name: water_and_air_cooled_zone0_fans + zone_conditions: + - name: water_and_air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 10500 + type: uint64_t + - name: occ_active_speed_changes + precondition: + name: property_states_match + groups: + - name: occ0_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + - name: occ1_object + interface: org.open_power.OCC.Status + property: + name: OccActive + type: bool + value: true + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: interfacesAdded + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + events: + - name: speed_control_sensors + groups: + - name: zone0_regulators + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_pcie + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_dimms + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_gpu_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + - name: zone0_gpu_memory + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: interfacesAdded + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + - name: signal + signal: interfacesRemoved + handler: removeInterface + - name: fails_before_high_speed_air + groups: + - name: zone0_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + - name: zone0_dimms + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + - name: zone0_gpu_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + - name: zone0_gpu_memory + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.State.Decorator.OperationalStatus + property: + name: Functional + type: bool + triggers: + - name: init + method: getProperties + handler: setProperty + - name: signal + signal: interfacesAdded + handler: setProperty + - name: signal + signal: propertiesChanged + handler: setProperty + actions: + - name: count_state_before_speed + count: 1 + property: + value: false + type: bool + speed: + value: 10500 + type: uint64_t + - name: 1sec_speed_change_request_sampling + triggers: + - name: timer + interval: 1000000 + type: repeating + actions: + # Speed changes based on regulator temps + - name: set_net_increase_speed + groups: + - name: zone0_regulators + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 85000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 400 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_regulators + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 82000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t + # Speed changes based on pcie temps + - name: set_net_increase_speed + groups: + - name: zone0_pcie + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 55000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 400 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_pcie + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 52000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t + # Speed changes based on core temps + - name: set_net_increase_speed + groups: + - name: zone0_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 73000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 400 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 70000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t + # Speed changes based on dimm temps + - name: set_net_increase_speed + groups: + - name: zone0_dimms + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 64000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 200 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_dimms + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 61000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t + # Speed changes based on gpu core temps + - name: set_net_increase_speed + groups: + - name: zone0_gpu_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 78000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 600 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_gpu_cores + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 75000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t + # Speed changes based on gpu memory temps + - name: set_net_increase_speed + groups: + - name: zone0_gpu_memory + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 80000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 600 + type: uint64_t + - name: set_net_decrease_speed + groups: + - name: zone0_gpu_memory + zone_conditions: + - name: air_cooled_chassis + zones: + - 0 + interface: xyz.openbmc_project.Sensor.Value + property: + name: Value + type: int64_t + property: + value: 77000 + type: int64_t + factor: + value: 1000 + type: int64_t + delta: + value: 40 + type: uint64_t diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config.bbappend b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config.bbappend new file mode 100644 index 000000000..8f2097cc1 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/mihawk/fans.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/mihawk/fans.yaml new file mode 100644 index 000000000..d0a09004e --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/mihawk/fans.yaml @@ -0,0 +1,37 @@ +fans: + - inventory: /system/chassis/motherboard/fan0 + cooling_zone: 0 + sensors: + - fan0_0 + - fan0_1 + target_interface: xyz.openbmc_project.Control.FanPwm + - inventory: /system/chassis/motherboard/fan1 + cooling_zone: 0 + sensors: + - fan1_0 + - fan1_1 + target_interface: xyz.openbmc_project.Control.FanPwm + - inventory: /system/chassis/motherboard/fan2 + cooling_zone: 0 + sensors: + - fan2_0 + - fan2_1 + target_interface: xyz.openbmc_project.Control.FanPwm + - inventory: /system/chassis/motherboard/fan3 + cooling_zone: 0 + sensors: + - fan3_0 + - fan3_1 + target_interface: xyz.openbmc_project.Control.FanPwm + - inventory: /system/chassis/motherboard/fan4 + cooling_zone: 0 + sensors: + - fan4_0 + - fan4_1 + target_interface: xyz.openbmc_project.Control.FanPwm + - inventory: /system/chassis/motherboard/fan5 + cooling_zone: 0 + sensors: + - fan5_0 + - fan5_1 + target_interface: xyz.openbmc_project.Control.FanPwm diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/swift/fans.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/swift/fans.yaml new file mode 100644 index 000000000..a70ac85a3 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/swift/fans.yaml @@ -0,0 +1,21 @@ +fans: + - inventory: /system/chassis/motherboard/fan2 + cooling_zone: 0 + cooling_profile: all + sensors: + - fan2_0 + - inventory: /system/chassis/motherboard/fan0 + cooling_zone: 0 + cooling_profile: all + sensors: + - fan0_0 + - inventory: /system/chassis/motherboard/fan1 + cooling_zone: 0 + cooling_profile: air + sensors: + - fan1_0 + - inventory: /system/chassis/motherboard/fan3 + cooling_zone: 0 + cooling_profile: all + sensors: + - fan3_0 diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/witherspoon/fans.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/witherspoon/fans.yaml new file mode 100644 index 000000000..a70ac85a3 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-fan-config/witherspoon/fans.yaml @@ -0,0 +1,21 @@ +fans: + - inventory: /system/chassis/motherboard/fan2 + cooling_zone: 0 + cooling_profile: all + sensors: + - fan2_0 + - inventory: /system/chassis/motherboard/fan0 + cooling_zone: 0 + cooling_profile: all + sensors: + - fan0_0 + - inventory: /system/chassis/motherboard/fan1 + cooling_zone: 0 + cooling_profile: air + sensors: + - fan1_0 + - inventory: /system/chassis/motherboard/fan3 + cooling_zone: 0 + cooling_profile: all + sensors: + - fan3_0 diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config.bbappend b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config.bbappend new file mode 100644 index 000000000..8f2097cc1 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/mihawk/zone_conditions.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/mihawk/zone_conditions.yaml new file mode 100644 index 000000000..7dc99b6a2 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/mihawk/zone_conditions.yaml @@ -0,0 +1,9 @@ +conditions: + - name: air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: false diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/swift/zone_conditions.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/swift/zone_conditions.yaml new file mode 100644 index 000000000..0c8b3c5ff --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/swift/zone_conditions.yaml @@ -0,0 +1,18 @@ +conditions: + - name: air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: false + + - name: water_and_air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: true diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/witherspoon/zone_conditions.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/witherspoon/zone_conditions.yaml new file mode 100644 index 000000000..0c8b3c5ff --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-conditions-config/witherspoon/zone_conditions.yaml @@ -0,0 +1,18 @@ +conditions: + - name: air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: false + + - name: water_and_air_cooled_chassis + type: getProperty + properties: + - property: WaterCooled + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + path: /xyz/openbmc_project/inventory/system/chassis + type: bool + value: true diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config.bbappend b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config.bbappend new file mode 100644 index 000000000..8f2097cc1 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/mihawk/zones.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/mihawk/zones.yaml new file mode 100644 index 000000000..4deb2523e --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/mihawk/zones.yaml @@ -0,0 +1,42 @@ +manager_configuration: + power_on_delay: 20 + +zone_configuration: + +#Air cooled zones +- zone_conditions: + - name: air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - air + - all + full_speed: 255 + default_floor: 195 + increase_delay: 5 + decrease_interval: 30 + interfaces: + - name: xyz.openbmc_project.Control.ThermalMode + properties: + - name: Supported + type: array[string] + values: + - value: DEFAULT + description: > + Default thermal control mode + - value: CUSTOM + description: > + Custom thermal control mode for handling the use of + optical cables located behind the GPU exhaust that + could produce overtemp warnings without this mode + enabled. + - name: Current + type: string + persist: true + values: + - value: DEFAULT + description: > + Set current thermal control mode to the + default which will be replaced on startup if + another selected mode was persisted.
\ No newline at end of file diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/swift/zones.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/swift/zones.yaml new file mode 100644 index 000000000..c10c6c186 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/swift/zones.yaml @@ -0,0 +1,68 @@ +manager_configuration: + power_on_delay: 20 + +zone_configuration: + +#Air cooled zones +- zone_conditions: + - name: air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - air + - all + full_speed: 9500 + default_floor: 8000 + increase_delay: 5 + decrease_interval: 30 + interfaces: + - name: xyz.openbmc_project.Control.ThermalMode + properties: + - name: Supported + type: array[string] + values: + - value: DEFAULT + description: > + Default thermal control mode + - name: Current + type: string + persist: true + values: + - value: DEFAULT + description: > + Set current thermal control mode to the + default which will be replaced on startup if + another supported mode was selected & persisted. + +#Water cooled zones +- zone_conditions: + - name: water_and_air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - water + - all + full_speed: 9500 + default_floor: 8000 + increase_delay: 5 + decrease_interval: 30 + interfaces: + - name: xyz.openbmc_project.Control.ThermalMode + properties: + - name: Supported + type: array[string] + values: + - value: DEFAULT + description: > + Default thermal control mode + - name: Current + type: string + persist: true + values: + - value: DEFAULT + description: > + Set current thermal control mode to the + default which will be replaced on startup if + another supported mode was selected & persisted. diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/witherspoon/zones.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/witherspoon/zones.yaml new file mode 100644 index 000000000..63303d7c0 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-control-zone-config/witherspoon/zones.yaml @@ -0,0 +1,100 @@ +manager_configuration: + power_on_delay: 20 + +zone_configuration: + +#Air cooled zones +- zone_conditions: + - name: air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - air + - all + full_speed: 10500 + default_floor: 8000 + increase_delay: 5 + decrease_interval: 30 + interfaces: + - name: xyz.openbmc_project.Control.ThermalMode + properties: + - name: Supported + type: array[string] + values: + - value: DEFAULT + description: > + Default thermal control mode + - value: CUSTOM + description: > + Custom thermal control mode for handling the use of + PCI cards located behind the GPU exhaust that + could overtemp where the default mode is not + sufficient enough. + - value: HEAVY_IO + description: > + Heavy IO thermal control mode for handling the use + of PCI cards that produce heavy IO utilization and + could overtemp. + - value: MAX_BASE_FAN_FLOOR + description: > + Maximum base fan floor mode is for handling the + use of any hardware that requires the highest + amount of cooling even when the system may be idle. + - name: Current + type: string + persist: true + values: + - value: DEFAULT + description: > + Set current thermal control mode to the + default which will be replaced on startup if + another selected mode was persisted. + +#Water cooled zones +- zone_conditions: + - name: water_and_air_cooled_chassis + + zones: + - zone: 0 + cooling_profiles: + - water + - all + full_speed: 10500 + default_floor: 8000 + increase_delay: 5 + decrease_interval: 30 + interfaces: + - name: xyz.openbmc_project.Control.ThermalMode + properties: + - name: Supported + type: array[string] + values: + - value: DEFAULT + description: > + Default thermal control mode + - value: CUSTOM + description: > + Custom thermal control mode for handling the use of + PCI cards located behind the GPU exhaust that + could overtemp where the default mode is not + sufficient enough. + - value: HEAVY_IO + description: > + Heavy IO thermal control mode for handling the use + of PCI cards that produce heavy IO utilization and + could overtemp. + - value: MAX_BASE_FAN_FLOOR + description: > + Maximum base fan floor mode is for handling the + use of any hardware that requires the highest + amount of cooling even when the system may be idle. + - name: Current + type: string + persist: true + values: + - value: DEFAULT + description: > + Set current thermal control mode to the + default which will be replaced on startup if + another selected mode was persisted. diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config.bbappend b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config.bbappend new file mode 100644 index 000000000..8f2097cc1 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config.bbappend @@ -0,0 +1 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/mihawk/monitor.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/mihawk/monitor.yaml new file mode 100644 index 000000000..076349de5 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/mihawk/monitor.yaml @@ -0,0 +1,96 @@ +fans: + - inventory: /system/chassis/motherboard/fan0 + allowed_out_of_range_time: 10 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan0_0 + has_target: true + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + - name: fan0_1 + has_target: false + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + + - inventory: /system/chassis/motherboard/fan1 + allowed_out_of_range_time: 10 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan1_0 + has_target: true + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + - name: fan1_1 + has_target: false + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + + - inventory: /system/chassis/motherboard/fan2 + allowed_out_of_range_time: 10 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan2_0 + has_target: true + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + - name: fan2_1 + has_target: false + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + + - inventory: /system/chassis/motherboard/fan3 + allowed_out_of_range_time: 10 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan3_0 + has_target: true + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + - name: fan3_1 + has_target: false + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + + - inventory: /system/chassis/motherboard/fan4 + allowed_out_of_range_time: 10 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan4_0 + has_target: true + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + - name: fan4_1 + has_target: false + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + + - inventory: /system/chassis/motherboard/fan5 + allowed_out_of_range_time: 10 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan5_0 + has_target: true + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 + - name: fan5_1 + has_target: false + target_interface: xyz.openbmc_project.Control.FanPwm + factor: 70 + offset: 1200 diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/swift/monitor.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/swift/monitor.yaml new file mode 100644 index 000000000..2c93e65c8 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/swift/monitor.yaml @@ -0,0 +1,36 @@ +fans: + - inventory: /system/chassis/motherboard/fan0 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan0_0 + has_target: true + + - inventory: /system/chassis/motherboard/fan1 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan1_0 + has_target: true + + - inventory: /system/chassis/motherboard/fan2 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan2_0 + has_target: true + + - inventory: /system/chassis/motherboard/fan3 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan3_0 + has_target: true diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/witherspoon/monitor.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/witherspoon/monitor.yaml new file mode 100644 index 000000000..5db7966fa --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-monitor-config/witherspoon/monitor.yaml @@ -0,0 +1,73 @@ +fans: + - inventory: /system/chassis/motherboard/fan0 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan0_0 + has_target: true + - name: fan0_1 + has_target: false + + - inventory: /system/chassis/motherboard/fan1 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan1_0 + has_target: true + - name: fan1_1 + has_target: false + # Create fan1 inventory & sensors on air cooled only + condition: + name: propertiesMatch + properties: + - object: /xyz/openbmc_project/inventory/system/chassis + interface: xyz.openbmc_project.Inventory.Decorator.CoolingType + property: + name: WaterCooled + type: bool + value: false + + - inventory: /system/chassis/motherboard/fan2 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan2_0 + has_target: true + - name: fan2_1 + has_target: false + + - inventory: /system/chassis/motherboard/fan3 + functional_delay: 5 + allowed_out_of_range_time: 30 + deviation: 15 + num_sensors_nonfunc_for_fan_nonfunc: 1 + sensors: + - name: fan3_0 + has_target: true + - name: fan3_1 + has_target: false + +sensor_trust_groups: + - class: NonzeroSpeed + group: + # Include all _1 fans to determine trust + - name: fan0_1 + - name: fan1_1 + - name: fan2_1 + - name: fan3_1 + # Add all _0 fans to be included in trust result effects, + # but not in determining trust + - name: fan0_0 + in_trust: false + - name: fan1_0 + in_trust: false + - name: fan2_0 + in_trust: false + - name: fan3_0 + in_trust: false diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config.bbappend b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config.bbappend new file mode 100644 index 000000000..9442477af --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config.bbappend @@ -0,0 +1,11 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" + +SRC_URI_witherspoon = "file://config.json" + +do_install_witherspoon() { + install -d ${D}/${datadir}/phosphor-fan-presence/presence/ + install -m 0644 ${WORKDIR}/config.json ${D}/${datadir}/phosphor-fan-presence/presence/ +} + +FILES_${PN}_append_witherspoon = " ${datadir}/phosphor-fan-presence/presence/config.json" +FILES_${PN}_remove_witherspoon = "${presence_datadir}/config.yaml" diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/mihawk/config.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/mihawk/config.yaml new file mode 100644 index 000000000..9cb5ecddb --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/mihawk/config.yaml @@ -0,0 +1,47 @@ +- name: fan0 + path: /system/chassis/motherboard/fan0 + methods: + - type: gpio + key: 9 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + +- name: fan1 + path: /system/chassis/motherboard/fan1 + methods: + - type: gpio + key: 10 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + +- name: fan2 + path: /system/chassis/motherboard/fan2 + methods: + - type: gpio + key: 11 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + +- name: fan3 + path: /system/chassis/motherboard/fan3 + methods: + - type: gpio + key: 12 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + +- name: fan4 + path: /system/chassis/motherboard/fan4 + methods: + - type: gpio + key: 13 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + +- name: fan5 + path: /system/chassis/motherboard/fan5 + methods: + - type: gpio + key: 14 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/swift/config.yaml b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/swift/config.yaml new file mode 100644 index 000000000..20dc31c40 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/swift/config.yaml @@ -0,0 +1,62 @@ +- name: fan0 + path: /system/chassis/motherboard/fan0 + methods: + - type: gpio + key: 5 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + - type: tach + sensors: + - fan0_0 + rpolicy: + type: anyof + +- name: fan1 + path: /system/chassis/motherboard/fan1 + methods: + - type: gpio + key: 6 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + - type: tach + sensors: + - fan1_0 + rpolicy: + type: anyof + +- name: fan2 + path: /system/chassis/motherboard/fan2 + methods: + - type: gpio + key: 7 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + - type: tach + sensors: + - fan2_0 + rpolicy: + type: anyof + +- name: fan3 + path: /system/chassis/motherboard/fan3 + methods: + - type: gpio + key: 8 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + - type: tach + sensors: + - fan3_0 + rpolicy: + type: anyof + +# Boost fan presence +- name: fan4 + path: /system/chassis/motherboard/fan4 + methods: + - type: gpio + key: 9 + physpath: /sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060 + devpath: /dev/input/by-path/platform-gpio-keys-polled-event + rpolicy: + type: anyof diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/witherspoon/config.json b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/witherspoon/config.json new file mode 100644 index 000000000..36cdae85b --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan-presence-config/witherspoon/config.json @@ -0,0 +1,90 @@ +[ + { + "name": "fan0", + "path": "/system/chassis/motherboard/fan0", + "methods": [ + { + "type": "gpio", + "key": 4, + "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060", + "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event" + }, + { + "type": "tach", + "sensors": [ + "fan0_0", + "fan0_1" + ] + } + ], + "rpolicy": { + "type": "anyof" + } + }, + { + "name": "fan1", + "path": "/system/chassis/motherboard/fan1", + "methods": [ + { + "type": "gpio", + "key": 5, + "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060", + "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event" + }, + { + "type": "tach", + "sensors": [ + "fan1_0", + "fan1_1" + ] + } + ], + "rpolicy": { + "type": "anyof" + } + }, + { + "name": "fan2", + "path": "/system/chassis/motherboard/fan2", + "methods": [ + { + "type": "gpio", + "key": 6, + "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060", + "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event" + }, + { + "type": "tach", + "sensors": [ + "fan2_0", + "fan2_1" + ] + } + ], + "rpolicy": { + "type": "anyof" + } + }, + { + "name": "fan3", + "path": "/system/chassis/motherboard/fan3", + "methods": [ + { + "type": "gpio", + "key": 7, + "physpath": "/sys/devices/platform/ahb/ahb:apb/ahb:apb:bus@1e78a000/1e78a100.i2c-bus/i2c-3/3-0060", + "devpath": "/dev/input/by-path/platform-gpio-keys-polled-event" + }, + { + "type": "tach", + "sensors": [ + "fan3_0", + "fan3_1" + ] + } + ], + "rpolicy": { + "type": "anyof" + } + } +] diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/fan-watchdog-conflicts.conf b/meta-ibm/recipes-phosphor/fans/phosphor-fan/fan-watchdog-conflicts.conf new file mode 100644 index 000000000..90b1e810e --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/fan-watchdog-conflicts.conf @@ -0,0 +1,2 @@ +[Unit] +Conflicts=obmc-fan-watchdog-takeover.target diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/fan-watchdog-monitor.conf b/meta-ibm/recipes-phosphor/fans/phosphor-fan/fan-watchdog-monitor.conf new file mode 100644 index 000000000..023e61a64 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/fan-watchdog-monitor.conf @@ -0,0 +1,5 @@ +[Unit] +#These overrides allow the fan watchdog to take over when this service dies +OnFailure=witherspoon-fan-watchdog-monitor@%n.service +StartLimitIntervalSec=5 +StartLimitBurst=3 diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/mihawk/obmc/phosphor-fan/phosphor-cooling-type-0.conf b/meta-ibm/recipes-phosphor/fans/phosphor-fan/mihawk/obmc/phosphor-fan/phosphor-cooling-type-0.conf new file mode 100644 index 000000000..21fcfcb49 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/mihawk/obmc/phosphor-fan/phosphor-cooling-type-0.conf @@ -0,0 +1,3 @@ +OBJPATH="--path=/system/chassis" +AIR="--air" + diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/mihawk/phosphor-cooling-type@.service b/meta-ibm/recipes-phosphor/fans/phosphor-fan/mihawk/phosphor-cooling-type@.service new file mode 100644 index 000000000..9232b13fc --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/mihawk/phosphor-cooling-type@.service @@ -0,0 +1,15 @@ +[Unit] +Description=Phosphor Cooling Type +Wants=mapper-wait@-xyz-openbmc_project-inventory.service +After=mapper-wait@-xyz-openbmc_project-inventory.service +ConditionPathExists={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf +ExecStart=/usr/bin/env phosphor-cooling-type ${{OBJPATH}} ${{AIR}} +SyslogIdentifier=phosphor-cooling-type + +[Install] +RequiredBy=multi-user.target diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/swift/obmc/phosphor-fan/phosphor-cooling-type-0.conf b/meta-ibm/recipes-phosphor/fans/phosphor-fan/swift/obmc/phosphor-fan/phosphor-cooling-type-0.conf new file mode 100644 index 000000000..e5e8f435e --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/swift/obmc/phosphor-fan/phosphor-cooling-type-0.conf @@ -0,0 +1,6 @@ +OBJPATH="--path=/system/chassis" +AIR="--air" +WATER="" +DEVICE="--dev=/dev/input/by-path/platform-gpio-keys-event" +CODE="--event=13" + diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/swift/phosphor-cooling-type@.service b/meta-ibm/recipes-phosphor/fans/phosphor-fan/swift/phosphor-cooling-type@.service new file mode 100644 index 000000000..c1f5ae293 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/swift/phosphor-cooling-type@.service @@ -0,0 +1,15 @@ +[Unit] +Description=Phosphor Cooling Type +Wants=mapper-wait@-xyz-openbmc_project-inventory.service +After=mapper-wait@-xyz-openbmc_project-inventory.service +ConditionPathExists={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf +ExecStart=/usr/bin/env phosphor-cooling-type ${{OBJPATH}} ${{AIR}} ${{WATER}} ${{DEVICE}} ${{CODE}} +SyslogIdentifier=phosphor-cooling-type + +[Install] +RequiredBy=multi-user.target diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon-tacoma/obmc/phosphor-fan/phosphor-cooling-type-0.conf b/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon-tacoma/obmc/phosphor-fan/phosphor-cooling-type-0.conf new file mode 100644 index 000000000..dcab0ee98 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon-tacoma/obmc/phosphor-fan/phosphor-cooling-type-0.conf @@ -0,0 +1,5 @@ +OBJPATH="--path=/system/chassis" +AIR="--air" +WATER="" +DEVICE="" +CODE="" diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/obmc/phosphor-fan/phosphor-cooling-type-0.conf b/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/obmc/phosphor-fan/phosphor-cooling-type-0.conf new file mode 100644 index 000000000..e5e8f435e --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/obmc/phosphor-fan/phosphor-cooling-type-0.conf @@ -0,0 +1,6 @@ +OBJPATH="--path=/system/chassis" +AIR="--air" +WATER="" +DEVICE="--dev=/dev/input/by-path/platform-gpio-keys-event" +CODE="--event=13" + diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/phosphor-cooling-type@.service b/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/phosphor-cooling-type@.service new file mode 100644 index 000000000..c1f5ae293 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/phosphor-cooling-type@.service @@ -0,0 +1,15 @@ +[Unit] +Description=Phosphor Cooling Type +Wants=mapper-wait@-xyz-openbmc_project-inventory.service +After=mapper-wait@-xyz-openbmc_project-inventory.service +ConditionPathExists={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile={envfiledir}/obmc/phosphor-fan/phosphor-cooling-type-%i.conf +ExecStart=/usr/bin/env phosphor-cooling-type ${{OBJPATH}} ${{AIR}} ${{WATER}} ${{DEVICE}} ${{CODE}} +SyslogIdentifier=phosphor-cooling-type + +[Install] +RequiredBy=multi-user.target diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/phosphor-fan-control@.service b/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/phosphor-fan-control@.service new file mode 100644 index 000000000..267907776 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan/witherspoon/phosphor-fan-control@.service @@ -0,0 +1,11 @@ +[Unit] +Description=Phosphor Fan Control Daemon +Requires=max31785-hwmon-helper@ahb-apb-bus\x401e78a000-i2c\x2dbus\x40{ADDR}-max31785\x4052.service +After=max31785-hwmon-helper@ahb-apb-bus\x401e78a000-i2c\x2dbus\x40{ADDR}-max31785\x4052.service + +[Service] +Restart=on-failure +ExecStart=/usr/bin/phosphor-fan-control --control + +[Install] +RequiredBy=obmc-chassis-poweron@%i.target diff --git a/meta-ibm/recipes-phosphor/fans/phosphor-fan_%.bbappend b/meta-ibm/recipes-phosphor/fans/phosphor-fan_%.bbappend new file mode 100644 index 000000000..713c0c6a2 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/phosphor-fan_%.bbappend @@ -0,0 +1,59 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:" + +# Package configuration +FAN_PACKAGES_append_ibm-ac-server = " \ + phosphor-cooling-type \ + " + +FAN_PACKAGES_append_mihawk = " \ + phosphor-cooling-type \ + " + +PACKAGECONFIG_append_ibm-ac-server = " cooling-type" +PACKAGECONFIG_append_mihawk = " cooling-type" + +TMPL_COOLING = "phosphor-cooling-type@.service" +INSTFMT_COOLING = "phosphor-cooling-type@{0}.service" +MULTI_USR_TGT = "multi-user.target" +FMT_COOLING = "../${TMPL_COOLING}:${MULTI_USR_TGT}.requires/${INSTFMT_COOLING}" + +FILES_phosphor-cooling-type_append_ibm-ac-server = " ${bindir}/phosphor-cooling-type" +SYSTEMD_SERVICE_phosphor-cooling-type_append_ibm-ac-server = " ${TMPL_COOLING}" +SYSTEMD_LINK_phosphor-cooling-type_append_ibm-ac-server = " ${@compose_list(d, 'FMT_COOLING', 'OBMC_CHASSIS_INSTANCES')}" +FILES_phosphor-cooling-type_append_mihawk = " ${bindir}/phosphor-cooling-type" +SYSTEMD_SERVICE_phosphor-cooling-type_append_mihawk = " ${TMPL_COOLING}" +SYSTEMD_LINK_phosphor-cooling-type_append_mihawk = " ${@compose_list(d, 'FMT_COOLING', 'OBMC_CHASSIS_INSTANCES')}" + +COOLING_ENV_FMT = "obmc/phosphor-fan/phosphor-cooling-type-{0}.conf" + +SYSTEMD_ENVIRONMENT_FILE_phosphor-cooling-type_append_ibm-ac-server = " ${@compose_list(d, 'COOLING_ENV_FMT', 'OBMC_CHASSIS_INSTANCES')}" +SYSTEMD_ENVIRONMENT_FILE_phosphor-cooling-type_append_mihawk = " ${@compose_list(d, 'COOLING_ENV_FMT', 'OBMC_CHASSIS_INSTANCES')}" + +#These services are protected by the watchdog +SYSTEMD_OVERRIDE_phosphor-fan-control_witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-control-init@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-control_witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-control@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor_witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-monitor-init@0.service.d/fan-watchdog-monitor.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor_witherspoon += "fan-watchdog-monitor.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-monitor.conf" + +#These services need to be stopped when watchdog expires +SYSTEMD_OVERRIDE_phosphor-fan-control_witherspoon += "fan-watchdog-conflicts.conf:phosphor-fan-control@0.service.d/fan-watchdog-conflicts.conf" +SYSTEMD_OVERRIDE_phosphor-fan-monitor_witherspoon += "fan-watchdog-conflicts.conf:phosphor-fan-monitor@0.service.d/fan-watchdog-conflicts.conf" + +# Witherspoon fan control service linking +# Link fan control init service +SYSTEMD_LINK_${PN}-control_witherspoon += "${@compose_list(d, 'FMT_CONTROL_INIT', 'OBMC_CHASSIS_INSTANCES')}" +# Link fan control service to be started at standby +FMT_CONTROL_STDBY_witherspoon = "../${TMPL_CONTROL}:${MULTI_USR_TGT}.wants/${INSTFMT_CONTROL}" +SYSTEMD_LINK_${PN}-control_witherspoon += "${@compose_list(d, 'FMT_CONTROL_STDBY', 'OBMC_CHASSIS_INSTANCES')}" +# Link fan control service to also start at poweron +FMT_CONTROL_PWRON_witherspoon = "../${TMPL_CONTROL}:${POWERON_TGT}.requires/${INSTFMT_CONTROL}" +SYSTEMD_LINK_${PN}-control_witherspoon += "${@compose_list(d, 'FMT_CONTROL_PWRON', 'OBMC_CHASSIS_INSTANCES')}" + +# Enable the use of JSON on the fan applications that support it +EXTRA_OECONF_append_witherspoon = " --enable-json" +RDEPENDS_${PN}-presence-tach_append_witherspoon = " phosphor-fan-presence-config" + +# Set the appropriate i2c address used within the overridden phosphor-fan-control@.service +# file that's used for witherspoon type(including witherspoon-tacoma) machines +SYSTEMD_SUBSTITUTIONS_witherspoon = "ADDR:100:phosphor-fan-control@.service" +SYSTEMD_SUBSTITUTIONS_witherspoon-tacoma = "ADDR:200:phosphor-fan-control@.service" diff --git a/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog.bb b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog.bb new file mode 100644 index 000000000..93c8d457b --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog.bb @@ -0,0 +1,23 @@ +SUMMARY = "Witherspoon fan watchdog services" +PR = "r1" +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10" + +inherit obmc-phosphor-systemd + +RDEPENDS_${PN} += "virtual/obmc-gpio-monitor" +RDEPENDS_${PN} += "busybox" + +RESET_SERVICE = "witherspoon-reset-fan-watchdog.service" +TGTFMT = "obmc-chassis-poweron@0.target" +RESET_FMT = "../${RESET_SERVICE}:${TGTFMT}.requires/${RESET_SERVICE}" + +MONITOR_SERVICE = "witherspoon-fan-watchdog-monitor@.service" + +WATCHDOG_SERVICE = "witherspoon-fan-watchdog.service" +WATCHDOG_FMT = "../${WATCHDOG_SERVICE}:${TGTFMT}.requires/${WATCHDOG_SERVICE}" + +SYSTEMD_SERVICE_${PN} += "${RESET_SERVICE} ${MONITOR_SERVICE} ${WATCHDOG_SERVICE}" +SYSTEMD_LINK_${PN} += "${RESET_FMT} ${WATCHDOG_FMT}" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/witherspoon-fan-watchdog/reset-fan-watchdog.conf" +SYSTEMD_ENVIRONMENT_FILE_${PN} += "obmc/witherspoon-fan-watchdog/fan-watchdog.conf" diff --git a/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/obmc/witherspoon-fan-watchdog/fan-watchdog.conf b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/obmc/witherspoon-fan-watchdog/fan-watchdog.conf new file mode 100644 index 000000000..ce7824ccb --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/obmc/witherspoon-fan-watchdog/fan-watchdog.conf @@ -0,0 +1,3 @@ +TIMEOUT=5 +INTERVAL=1 +DEVICE=/dev/watchdog0 diff --git a/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/obmc/witherspoon-fan-watchdog/reset-fan-watchdog.conf b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/obmc/witherspoon-fan-watchdog/reset-fan-watchdog.conf new file mode 100644 index 000000000..b4e5ce74e --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/obmc/witherspoon-fan-watchdog/reset-fan-watchdog.conf @@ -0,0 +1,4 @@ +GPIO_PATH=/dev/gpiochip0 +GPIO=109 +DELAY=1 +ACTION=low_high diff --git a/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-fan-watchdog-monitor@.service b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-fan-watchdog-monitor@.service new file mode 100644 index 000000000..945561b50 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-fan-watchdog-monitor@.service @@ -0,0 +1,10 @@ +[Unit] +Description=Fan Watchdog Failure Monitor + +#This can get called every time a process dies, so ensure it's never limited +StartLimitIntervalSec=0 + +[Service] +Type=oneshot +ExecStart=/usr/bin/env phosphor-unit-failure-monitor --source %i --target obmc-fan-watchdog-takeover.target --action start +SyslogIdentifier=phosphor-unit-failure-monitor diff --git a/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-fan-watchdog.service b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-fan-watchdog.service new file mode 100644 index 000000000..597ee03cb --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-fan-watchdog.service @@ -0,0 +1,13 @@ +[Unit] +Description=Witherspoon Fan Watchdog Daemon +Wants=phosphor-fan-monitor-init@0.service +Before=phosphor-fan-monitor-init@0.service +Conflicts=obmc-fan-watchdog-takeover.target + +[Service] +EnvironmentFile={envfiledir}/obmc/witherspoon-fan-watchdog/fan-watchdog.conf +ExecStart=/sbin/watchdog -T ${{TIMEOUT}} -t ${{INTERVAL}} -F ${{DEVICE}} +KillSignal=SIGKILL + +[Install] +RequiredBy=obmc-chassis-poweron@0.target diff --git a/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-reset-fan-watchdog.service b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-reset-fan-watchdog.service new file mode 100644 index 000000000..675a67269 --- /dev/null +++ b/meta-ibm/recipes-phosphor/fans/witherspoon-fan-watchdog/witherspoon-reset-fan-watchdog.service @@ -0,0 +1,12 @@ +[Unit] +Description=Witherspoon Fan Watchdog Reset +Wants=phosphor-fan-monitor-init@0.service +Before=phosphor-fan-monitor-init@0.service +Conflicts=obmc-chassis-poweroff@0.target + +[Service] +Type=oneshot +RemainAfterExit=yes +EnvironmentFile={envfiledir}/obmc/witherspoon-fan-watchdog/reset-fan-watchdog.conf +ExecStart=/usr/bin/env phosphor-gpio-util -p ${{GPIO_PATH}} -g ${{GPIO}} -a ${{ACTION}} -d ${{DELAY}} +SyslogIdentifier=phosphor-gpio-util |