control:cnfgs:ibm,bonnell: Enable fan control
Check in the JSON files to enable fan control on IBM's Bonnell system.
It is a 1 socket 4 DIMM 2 fan system. It uses the same fan model as the
Rainier 2U, and uses mostly the same settings as the Rainier 2U with the
exception of having some lower floors, though only when there are no hot
PCIe cards present.
The floor values when there are hot PCIe card present may change in the
future.
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I30b42fa4f2c2715ba26bbfef4a3d28dc77373390
diff --git a/control/config_files/p10bmc/ibm,bonnell/events.json b/control/config_files/p10bmc/ibm,bonnell/events.json
index fe51488..b0ce5eb 100644
--- a/control/config_files/p10bmc/ibm,bonnell/events.json
+++ b/control/config_files/p10bmc/ibm,bonnell/events.json
@@ -1 +1,870 @@
-[]
+[
+ {
+ // Hold fans at the given target when a number of fans are missing.
+ "name": "fan(s) missing",
+ "groups": [
+ {
+ "name": "fan inventory",
+ "interface": "xyz.openbmc_project.Inventory.Item",
+ "property": { "name": "Present" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ }
+ ],
+ "actions": [
+ {
+ "name": "count_state_before_target",
+ "count": 1,
+ "state": false,
+ "target": 18000
+ }
+ ]
+ },
+ {
+ // Hold fans at the given target when a number of rotors are nonfunctional.
+ "name": "fan rotor(s) faulted",
+ "groups": [
+ {
+ "name": "fan0 rotor inventory",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ },
+ {
+ "name": "fan1 rotor inventory",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ }
+ ],
+ "actions": [
+ {
+ "name": "count_state_before_target",
+ "count": 1,
+ "state": false,
+ "target": 18000
+ }
+ ]
+ },
+ {
+ // Hold fans at the given target when any critical service
+ // is not running for 5 seconds.
+ "name": "service(s) missing",
+ "groups": [
+ {
+ "name": "fan inventory",
+ "interface": "xyz.openbmc_project.Inventory.Item",
+ "property": { "name": "Present" }
+ },
+ {
+ "name": "occ objects",
+ "interface": "org.open_power.OCC.Status",
+ "property": { "name": "OccActive" }
+ },
+ {
+ "name": "nvme temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "ambient temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "altitude",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "name_has_owner"
+ },
+ {
+ "class": "signal",
+ "signal": "name_owner_changed"
+ }
+ ],
+ "actions": [
+ {
+ "name": "call_actions_based_on_timer",
+ "timer": {
+ "interval": 5000000,
+ "type": "oneshot"
+ },
+ "actions": [
+ {
+ "name": "set_target_on_missing_owner",
+ "groups": [
+ {
+ "name": "fan inventory",
+ "interface": "xyz.openbmc_project.Inventory.Item",
+ "property": { "name": "Present" }
+ },
+ {
+ "name": "occ objects",
+ "interface": "org.open_power.OCC.Status",
+ "property": { "name": "OccActive" }
+ },
+ {
+ "name": "nvme temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "ambient temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "altitude",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "target": 18000
+ }
+ ]
+ }
+ ]
+ },
+ {
+ // Set a fan floor if an OCC isn't active
+ "name": "Non-active OCCs",
+ "groups": [
+ {
+ "name": "occ objects",
+ "interface": "org.open_power.OCC.Status",
+ "property": {
+ "name": "OccActive"
+ }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ },
+ {
+ "class": "init",
+ "method": "get_properties"
+ }
+ ],
+ "actions": [
+ {
+ "name": "count_state_floor",
+ "count": 1,
+ "state": false,
+ "floor": 18000
+ }
+ ]
+ },
+ {
+ // Set a raised fan floor when any temperature or altitude sensor is
+ // nonfunctional
+ "name": "Nonfunctional temperature sensors",
+ "groups": [
+ {
+ "name": "proc0 core temps",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ },
+ {
+ "name": "proc0 ioring temp",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ },
+ {
+ "name": "dram temps",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ },
+ {
+ "name": "internal memory buffer temps",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ },
+ {
+ "name": "vdd vrm temps",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ },
+ {
+ "name": "nvme temps",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ },
+ {
+ "name": "ambient temp",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ },
+ {
+ "name": "altitude",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_removed"
+ },
+ {
+ "class": "init",
+ "method": "get_properties"
+ }
+ ],
+ "actions": [
+ {
+ "name": "count_state_floor",
+ "count": 1,
+ "state": false,
+ "floor": 18000
+ }
+ ]
+ },
+ {
+ "name": "Set Proc 0 Core DVFS parameter",
+ "groups": [
+ {
+ "name": "proc 0 core dvfs temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "proc_0_core_dvfs_increase_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 10
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "proc_0_core_dvfs_decrease_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 13
+ }
+ }
+ ]
+ },
+ {
+ "name": "Set Proc 0 IO Ring DVFS parameter",
+ "groups": [
+ {
+ "name": "proc 0 ioring dvfs temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "proc_0_ioring_dvfs_increase_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 10
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
+ "modifier": {
+ "operator": "minus",
+ "value": 13
+ }
+ }
+ ]
+ },
+ {
+ // Collect group temperatures each iteration the repeating timer expires
+ "name": "Fan control timer loop",
+ "groups": [
+ {
+ "name": "proc0 core temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "proc0 ioring temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "dram temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "internal memory buffer temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "vdd vrm temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "nvme temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "timer",
+ "type": "repeating",
+ "interval": 2000000,
+ "preload_groups": true
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_net_increase_target",
+ "groups": [
+ {
+ "name": "proc0 core temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state_parameter_name": "proc_0_core_dvfs_increase_temp",
+ "delta": 300
+ },
+ {
+ "name": "set_net_increase_target",
+ "groups": [
+ {
+ "name": "proc0 ioring temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
+ "delta": 300
+ },
+ {
+ "name": "set_net_increase_target",
+ "groups": [
+ {
+ "name": "dram temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state": 68.0,
+ "delta": 100
+ },
+ {
+ "name": "set_net_increase_target",
+ "groups": [
+ {
+ "name": "internal memory buffer temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state": 74.0,
+ "delta": 100
+ },
+ {
+ "name": "set_net_increase_target",
+ "groups": [
+ {
+ "name": "vdd vrm temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state": 82.0,
+ "delta": 300
+ },
+ {
+ "name": "set_net_increase_target",
+ "groups": [
+ {
+ "name": "nvme temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state": 58.0,
+ "delta": 200
+ },
+ {
+ "name": "set_net_decrease_target",
+ "groups": [
+ {
+ "name": "proc0 core temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
+ "delta": 50
+ },
+ {
+ "name": "set_net_decrease_target",
+ "groups": [
+ {
+ "name": "proc0 ioring temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
+ "delta": 50
+ },
+ {
+ "name": "set_net_decrease_target",
+ "groups": [
+ {
+ "name": "dram temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state": 65.0,
+ "delta": 40
+ },
+ {
+ "name": "set_net_decrease_target",
+ "groups": [
+ {
+ "name": "internal memory buffer temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state": 71.0,
+ "delta": 40
+ },
+ {
+ "name": "set_net_decrease_target",
+ "groups": [
+ {
+ "name": "vdd vrm temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state": 79.0,
+ "delta": 30
+ },
+ {
+ "name": "set_net_decrease_target",
+ "groups": [
+ {
+ "name": "nvme temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "state": 55.0,
+ "delta": 40
+ }
+ ]
+ },
+ {
+ // Remove NVMe temperature objects from cache when they are removed from
+ // dbus. There's no need to react to their removal.
+ "name": "remove nvme objects",
+ "groups": [
+ {
+ "name": "nvme temps",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ },
+ {
+ "name": "nvme temps",
+ "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
+ "property": { "name": "Functional" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "signal",
+ "signal": "interfaces_removed"
+ }
+ ]
+ },
+ {
+ "name": "set pcie floor index",
+ "groups": [
+ {
+ "name": "pcie slots",
+ "interface": "xyz.openbmc_project.State.Decorator.PowerState",
+ "property": {
+ "name": "PowerState"
+ }
+ },
+ {
+ "name": "pcie cards",
+ "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
+ "property": {
+ "name": "Function0DeviceId"
+ }
+ },
+ {
+ "name": "pcie cards",
+ "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
+ "property": {
+ "name": "Function0VendorId"
+ }
+ },
+ {
+ "name": "pcie cards",
+ "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
+ "property": {
+ "name": "Function0SubsystemId"
+ }
+ },
+ {
+ "name": "pcie cards",
+ "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
+ "property": {
+ "name": "Function0SubsystemVendorId"
+ }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ }
+ ],
+ "actions": [
+ {
+ "name": "pcie_card_floors",
+ "use_config_specific_files": true,
+ "settle_time": 2
+ }
+ ]
+ },
+ {
+ "name": "Set altitude offset parameter",
+ "groups": [
+ {
+ "name": "altitude",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ },
+ {
+ // Refresh altitude every 24hrs
+ "class": "timer",
+ "type": "repeating",
+ "interval": 86400000000,
+ "preload_groups": true
+ }
+ ],
+ "actions": [
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "ambient_20_altitude_offset",
+ "modifier": {
+ "operator": "less_than",
+ "default_value": 10000,
+ "value": [
+ { "arg_value": 500, "parameter_value": 0 },
+ { "arg_value": 1000, "parameter_value": 700 },
+ { "arg_value": 1500, "parameter_value": 1600 },
+ { "arg_value": 2000, "parameter_value": 2300 },
+ { "arg_value": 2500, "parameter_value": 3200 },
+ { "arg_value": 3300, "parameter_value": 4000 }
+ ]
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "ambient_25_altitude_offset",
+ "modifier": {
+ "operator": "less_than",
+ "default_value": 10000,
+ "value": [
+ { "arg_value": 500, "parameter_value": 0 },
+ { "arg_value": 1000, "parameter_value": 1000 },
+ { "arg_value": 1500, "parameter_value": 2100 },
+ { "arg_value": 2000, "parameter_value": 3100 },
+ { "arg_value": 2500, "parameter_value": 4100 },
+ { "arg_value": 3300, "parameter_value": 4900 }
+ ]
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "ambient_30_altitude_offset",
+ "modifier": {
+ "operator": "less_than",
+ "default_value": 10000,
+ "value": [
+ { "arg_value": 500, "parameter_value": 0 },
+ { "arg_value": 1000, "parameter_value": 1000 },
+ { "arg_value": 1500, "parameter_value": 2100 },
+ { "arg_value": 2000, "parameter_value": 3200 },
+ { "arg_value": 2500, "parameter_value": 4000 },
+ { "arg_value": 3300, "parameter_value": 4800 }
+ ]
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "ambient_35_altitude_offset",
+ "modifier": {
+ "operator": "less_than",
+ "default_value": 10000,
+ "value": [
+ { "arg_value": 500, "parameter_value": 0 },
+ { "arg_value": 1000, "parameter_value": 900 },
+ { "arg_value": 1500, "parameter_value": 1700 },
+ { "arg_value": 2000, "parameter_value": 2500 },
+ { "arg_value": 2500, "parameter_value": 3400 },
+ { "arg_value": 3300, "parameter_value": 4200 }
+ ]
+ }
+ },
+ {
+ "name": "set_parameter_from_group_max",
+ "parameter_name": "ambient_40_altitude_offset",
+ "modifier": {
+ "operator": "less_than",
+ "default_value": 10000,
+ "value": [
+ { "arg_value": 500, "parameter_value": 0 },
+ { "arg_value": 1000, "parameter_value": 1000 },
+ { "arg_value": 1500, "parameter_value": 1900 },
+ { "arg_value": 2000, "parameter_value": 2800 },
+ { "arg_value": 2500, "parameter_value": 3700 },
+ { "arg_value": 3300, "parameter_value": 4500 }
+ ]
+ }
+ }
+ ]
+ },
+ {
+ "name": "Fan floors",
+ "groups": [
+ {
+ "name": "ambient temp",
+ "interface": "xyz.openbmc_project.Sensor.Value",
+ "property": { "name": "Value" }
+ }
+ ],
+ "triggers": [
+ {
+ "class": "init",
+ "method": "get_properties"
+ },
+ {
+ "class": "signal",
+ "signal": "properties_changed"
+ },
+ {
+ "class": "signal",
+ "signal": "interfaces_added"
+ },
+ {
+ "class": "parameter",
+ "parameter": "pcie_floor_index"
+ },
+ {
+ "class": "parameter",
+ "parameter": "ambient_20_altitude_offset"
+ },
+ {
+ "class": "parameter",
+ "parameter": "ambient_25_altitude_offset"
+ },
+ {
+ "class": "parameter",
+ "parameter": "ambient_30_altitude_offset"
+ },
+ {
+ "class": "parameter",
+ "parameter": "ambient_35_altitude_offset"
+ },
+ {
+ "class": "parameter",
+ "parameter": "ambient_40_altitude_offset"
+ }
+ ],
+ "actions": [
+ {
+ "name": "mapped_floor",
+ "key_group": "ambient temp",
+ "fan_floors": [
+ {
+ // Entry valid for temps < 20
+ "key": 20,
+ "default_floor": 5400,
+ "floor_offset_parameter": "ambient_20_altitude_offset",
+ "floors": [
+ {
+ "parameter": "pcie_floor_index",
+ "floors": [
+ { "value": 1, "floor": 5600 },
+ { "value": 2, "floor": 9000 },
+ { "value": 3, "floor": 9000 },
+ { "value": 4, "floor": 9200 },
+ { "value": 5, "floor": 10600 }
+ ]
+ }
+ ]
+ },
+ {
+ // Entry valid for temps < 25
+ "key": 25,
+ "default_floor": 6500,
+ "floor_offset_parameter": "ambient_25_altitude_offset",
+ "floors": [
+ {
+ "parameter": "pcie_floor_index",
+ "floors": [
+ { "value": 1, "floor": 7800 },
+ { "value": 2, "floor": 10700 },
+ { "value": 3, "floor": 11300 },
+ { "value": 4, "floor": 12700 },
+ { "value": 5, "floor": 13900 }
+ ]
+ }
+ ]
+ },
+ {
+ // Entry valid for temps < 30
+ "key": 30,
+ "default_floor": 6500,
+ "floor_offset_parameter": "ambient_30_altitude_offset",
+ "floors": [
+ {
+ "parameter": "pcie_floor_index",
+ "floors": [
+ { "value": 1, "floor": 10300 },
+ { "value": 2, "floor": 12100 },
+ { "value": 3, "floor": 14400 },
+ { "value": 4, "floor": 16300 },
+ { "value": 5, "floor": 17200 }
+ ]
+ }
+ ]
+ },
+ {
+ // Entry valid for temps < 35
+ "key": 35,
+ "default_floor": 8500,
+ "floor_offset_parameter": "ambient_35_altitude_offset",
+ "floors": [
+ {
+ "parameter": "pcie_floor_index",
+ "floors": [
+ { "value": 1, "floor": 12700 },
+ { "value": 2, "floor": 13500 },
+ { "value": 3, "floor": 17400 },
+ { "value": 4, "floor": 18000 },
+ { "value": 5, "floor": 18000 }
+ ]
+ }
+ ]
+ },
+ {
+ // Entry valid for temps < 40
+ "key": 40,
+ "default_floor": 12600,
+ "floor_offset_parameter": "ambient_40_altitude_offset",
+ "floors": [
+ {
+ "parameter": "pcie_floor_index",
+ "floors": [
+ { "value": 1, "floor": 15000 },
+ { "value": 2, "floor": 15500 },
+ { "value": 3, "floor": 18000 },
+ { "value": 4, "floor": 18000 },
+ { "value": 5, "floor": 18000 }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ }
+]
diff --git a/control/config_files/p10bmc/ibm,bonnell/groups.json b/control/config_files/p10bmc/ibm,bonnell/groups.json
index fe51488..b4f6f2c 100644
--- a/control/config_files/p10bmc/ibm,bonnell/groups.json
+++ b/control/config_files/p10bmc/ibm,bonnell/groups.json
@@ -1 +1,155 @@
-[]
+[
+ {
+ "name": "fan inventory",
+ "members": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1"
+ ]
+ },
+ {
+ "name": "fan0 rotor inventory",
+ "members": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0/fan0_0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan0/fan0_1"
+ ]
+ },
+ {
+ "name": "fan1 rotor inventory",
+ "members": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1/fan1_0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/fan1/fan1_1"
+ ]
+ },
+ {
+ "name": "occ objects",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/org/open_power/control/occ0",
+ "/org/open_power/control/occ1"
+ ]
+ },
+ {
+ "name": "proc0 core temps",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc0_core0_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core0_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core1_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core1_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core2_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core2_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core3_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core3_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core4_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core4_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core5_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core5_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core6_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core6_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core7_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core7_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core8_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core8_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core9_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core9_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core10_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core10_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core11_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core11_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core12_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core12_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core13_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core13_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core14_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core14_1_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core15_0_temp",
+ "/xyz/openbmc_project/sensors/temperature/proc0_core15_1_temp"
+ ]
+ },
+ {
+ "name": "proc0 ioring temp",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc0_ioring_temp"
+ ]
+ },
+ {
+ "name": "dram temps",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/dimm0_dram_temp",
+ "/xyz/openbmc_project/sensors/temperature/dimm1_dram_temp",
+ "/xyz/openbmc_project/sensors/temperature/dimm2_dram_temp",
+ "/xyz/openbmc_project/sensors/temperature/dimm3_dram_temp"
+ ]
+ },
+ {
+ "name": "internal memory buffer temps",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/dimm0_intmb_temp",
+ "/xyz/openbmc_project/sensors/temperature/dimm1_intmb_temp",
+ "/xyz/openbmc_project/sensors/temperature/dimm2_intmb_temp",
+ "/xyz/openbmc_project/sensors/temperature/dimm3_intmb_temp"
+ ]
+ },
+ {
+ "name": "vdd vrm temps",
+ "service": "org.open_power.OCC.Control",
+ "members": ["/xyz/openbmc_project/sensors/temperature/vrm_vdd0_temp"]
+ },
+ {
+ "name": "proc 0 core dvfs temp",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc0_core_dvfs_temp"
+ ]
+ },
+ {
+ "name": "proc 0 ioring dvfs temp",
+ "service": "org.open_power.OCC.Control",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/proc0_ioring_dvfs_temp"
+ ]
+ },
+ {
+ "name": "nvme temps",
+ "service": "xyz.openbmc_project.NVMeSensor",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/NVMe_1_Temp",
+ "/xyz/openbmc_project/sensors/temperature/NVMe_2_Temp",
+ "/xyz/openbmc_project/sensors/temperature/NVMe_3_Temp",
+ "/xyz/openbmc_project/sensors/temperature/NVMe_4_Temp"
+ ]
+ },
+ {
+ "name": "ambient temp",
+ "service": "xyz.openbmc_project.VirtualSensor",
+ "members": [
+ "/xyz/openbmc_project/sensors/temperature/Ambient_Virtual_Temp"
+ ]
+ },
+ {
+ "name": "altitude",
+ "service": "xyz.openbmc_project.VirtualSensor",
+ "members": ["/xyz/openbmc_project/sensors/altitude/Altitude"]
+ },
+ {
+ "name": "pcie slots",
+ "members": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3"
+ ]
+ },
+ {
+ "name": "pcie cards",
+ "members": [
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot0/pcie_card0",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot1/pcie_card1",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot2/pcie_card2",
+ "/xyz/openbmc_project/inventory/system/chassis/motherboard/pcieslot3/pcie_card3"
+ ]
+ }
+]
diff --git a/control/config_files/p10bmc/ibm,bonnell/pcie_cards.json b/control/config_files/p10bmc/ibm,bonnell/pcie_cards.json
new file mode 100644
index 0000000..5b76da5
--- /dev/null
+++ b/control/config_files/p10bmc/ibm,bonnell/pcie_cards.json
@@ -0,0 +1,188 @@
+{
+ "cards": [
+ {
+ "name": "PHYP had errors getting IDs",
+ "vendor_id": "0xFFFF",
+ "device_id": "0xFFFF",
+ "subsystem_vendor_id": "0xFFFF",
+ "subsystem_id": "0xFFFF",
+ "floor_index": 5
+ },
+ {
+ "name": "Flett",
+ "vendor_id": "0x1014",
+ "device_id": "0x04F2",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0007",
+ "has_temp_sensor": true
+ },
+ {
+ "name": "Bear Lake and Bear River",
+ "vendor_id": "0x1014",
+ "device_id": "0x04F2",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0004",
+ "has_temp_sensor": true
+ },
+ {
+ "name": "Everglades 10Gb 2Port",
+ "vendor_id": "0x15B3",
+ "device_id": "0x1015",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x061F",
+ "floor_index": 1
+ },
+ {
+ "name": "Everglades 25Gb 2Port",
+ "vendor_id": "0x15B3",
+ "device_id": "0x1015",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x061E",
+ "floor_index": 1
+ },
+ {
+ "name": "Cedar Lake 100G 2port",
+ "vendor_id": "0x15B3",
+ "device_id": "0x101D",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x06A6",
+ "floor_index": 5
+ },
+ {
+ "name": "Cedar Lake Crypto 100G 2port",
+ "vendor_id": "0x15B3",
+ "device_id": "0x101D",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x06A5",
+ "floor_index": 5
+ },
+ {
+ "name": "GTO",
+ "vendor_id": "0x1014",
+ "device_id": "0x034A",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x033B",
+ "floor_index": 3
+ },
+ {
+ "name": "Bolt PCIe3 NVMe Flash Adapter II x8 1.6TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA822",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0621",
+ "floor_index": 3
+ },
+ {
+ "name": "Bolt PCIe3 NVMe Flash Adapter II x8 3.2TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA822",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0622",
+ "floor_index": 4
+ },
+ {
+ "name": "Bolt PCIe3 NVMe Flash Adapter II x8 6.4TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA822",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0629",
+ "floor_index": 4
+ },
+ {
+ "name": "Bolt PCIe3 NVMe Flash Adapter III x8 1.6TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA822",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x064A",
+ "floor_index": 3
+ },
+ {
+ "name": "Bolt PCIe3 NVMe Flash Adapter III x8 3.2TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA822",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x064B",
+ "floor_index": 4
+ },
+ {
+ "name": "Bolt PCIe3 NVMe Flash Adapter III x8 6.4TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA822",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x064C",
+ "floor_index": 4
+ },
+ {
+ "name": "Kona PCIe4 NVMe U.2 Flash Adapter x8 1.6TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA824",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0682",
+ "floor_index": 4
+ },
+ {
+ "name": "Kona PCIe4 NVMe U.2 Flash Adapter x8 3.2TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA824",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0683",
+ "floor_index": 4
+ },
+ {
+ "name": "Kona PCIe4 NVMe U.2 Flash Adapter x8 6.4TB",
+ "vendor_id": "0x144D",
+ "device_id": "0xA824",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0684",
+ "floor_index": 4
+ },
+ {
+ "name": "Puntfish",
+ "vendor_id": "0x1077",
+ "device_id": "0x2271",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x069E",
+ "floor_index": 1
+ },
+ {
+ "name": "Flavafish",
+ "vendor_id": "0x1077",
+ "device_id": "0x2281",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0651",
+ "floor_index": 1
+ },
+ {
+ "name": "Haleakala EN 2Port 100Gb",
+ "vendor_id": "0x15B3",
+ "device_id": "0x1019",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0635",
+ "floor_index": 5
+ },
+ {
+ "name": "Crater Lake Crypto 200G 2Port",
+ "vendor_id": "0x15B3",
+ "device_id": "0x101D",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x06A3",
+ "floor_index": 5
+ },
+ {
+ "name": "Crater Lake 200G 2Port",
+ "vendor_id": "0x15B3",
+ "device_id": "0x101D",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x06A4",
+ "floor_index": 5
+ },
+ {
+ "name": "Lassen 2 Port IB",
+ "vendor_id": "0x15B3",
+ "device_id": "0x1019",
+ "subsystem_vendor_id": "0x1014",
+ "subsystem_id": "0x0617",
+ "floor_index": 5
+ }
+ ]
+}
diff --git a/control/config_files/p10bmc/ibm,bonnell/zones.json b/control/config_files/p10bmc/ibm,bonnell/zones.json
index 0a9185c..48e336a 100644
--- a/control/config_files/p10bmc/ibm,bonnell/zones.json
+++ b/control/config_files/p10bmc/ibm,bonnell/zones.json
@@ -1,8 +1,8 @@
[
{
"name": "0",
- "poweron_target": 14100,
- "default_floor": 14100,
+ "poweron_target": 18000,
+ "default_floor": 18000,
"increase_delay": 5,
"decrease_interval": 30
}