blob: 2f596c491a2066f2bbc0773555f5c60641a0a9cc [file] [log] [blame]
Matthew Barthb477a562021-10-19 14:39:19 -05001[
2 {
3 // Hold fans at the given target when a number of fans are missing.
4 "name": "fan(s) missing",
5 "groups": [
6 {
7 "name": "fan inventory",
8 "interface": "xyz.openbmc_project.Inventory.Item",
9 "property": { "name": "Present" }
10 }
11 ],
12 "triggers": [
13 {
14 "class": "init",
15 "method": "get_properties"
16 },
17 {
18 "class": "signal",
19 "signal": "properties_changed"
20 }
21 ],
22 "actions": [
23 {
24 "name": "count_state_before_target",
25 "count": 1,
26 "state": false,
27 "target": 10000
28 }
29 ]
Matthew Barthdc593cb2021-10-19 14:43:41 -050030 },
31 {
32 // Hold fans at the given target when a number of rotors are nonfunctional.
33 "name": "fan rotor(s) faulted",
34 "groups": [
35 {
36 "name": "fan0 rotor inventory",
37 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
38 "property": { "name": "Functional" }
39 },
40 {
41 "name": "fan1 rotor inventory",
42 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
43 "property": { "name": "Functional" }
44 },
45 {
46 "name": "fan2 rotor inventory",
47 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
48 "property": { "name": "Functional" }
49 },
50 {
51 "name": "fan4 rotor inventory",
52 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
53 "property": { "name": "Functional" }
54 }
55 ],
56 "triggers": [
57 {
58 "class": "init",
59 "method": "get_properties"
60 },
61 {
62 "class": "signal",
63 "signal": "properties_changed"
64 }
65 ],
66 "actions": [
67 {
68 "name": "count_state_before_target",
69 "count": 1,
70 "state": false,
71 "target": 10000
72 }
73 ]
Matthew Barth09b09e52021-10-28 15:29:13 -050074 },
75 {
76 // Hold fans at the given target when any critical service
77 // is not running for 5 seconds.
78 "name": "service(s) missing",
79 "groups": [
80 {
Matthew Barthf3a6d452021-11-23 14:41:43 -060081 "name": "fan inventory",
82 "interface": "xyz.openbmc_project.Inventory.Item",
83 "property": { "name": "Present" }
84 },
85 {
Matthew Barth09b09e52021-10-28 15:29:13 -050086 "name": "occ objects",
87 "interface": "org.open_power.OCC.Status",
88 "property": { "name": "OccActive" }
89 }
90 ],
91 "triggers": [
92 {
93 "class": "init",
94 "method": "name_has_owner"
95 },
96 {
97 "class": "signal",
98 "signal": "name_owner_changed"
99 }
100 ],
101 "actions": [
102 {
103 "name": "call_actions_based_on_timer",
104 "timer": {
105 "interval": 5000000,
106 "type": "oneshot"
107 },
108 "actions": [
109 {
110 "name": "set_target_on_missing_owner",
111 "groups": [
112 {
113 "name": "fan inventory",
114 "interface": "xyz.openbmc_project.Inventory.Item",
115 "property": { "name": "Present" }
116 },
117 {
118 "name": "occ objects",
119 "interface": "org.open_power.OCC.Status",
120 "property": { "name": "OccActive" }
121 }
122 ],
123 "target": 10000
124 }
125 ]
126 }
127 ]
Matt Spinler5934f092021-11-03 14:30:28 -0500128 },
129 {
130 // Set a fan floor if an OCC isn't active
131 "name": "Non-active OCC(s)",
132 "groups": [
133 {
134 "name": "occ objects",
135 "interface": "org.open_power.OCC.Status",
136 "property": {
137 "name": "OccActive"
138 }
139 }
140 ],
141 "triggers": [
142 {
143 "class": "signal",
144 "signal": "properties_changed"
145 },
146 {
147 "class": "signal",
148 "signal": "interfaces_added"
149 },
150 {
151 "class": "init",
152 "method": "get_properties"
153 }
154 ],
155 "actions": [
156 {
157 "name": "count_state_floor",
158 "count": 1,
159 "state": false,
160 "floor": 10000
161 }
162 ]
Matt Spinler323694a2021-11-11 16:03:18 -0600163 },
164 {
165 "name": "Set Proc 0 Core DVFS parameter",
166 "groups": [
167 {
168 "name": "proc 0 core dvfs temp",
169 "interface": "xyz.openbmc_project.Sensor.Value",
170 "property": { "name": "Value" }
171 }
172 ],
173 "triggers": [
174 {
175 "class": "init",
176 "method": "get_properties"
177 },
178 {
179 "class": "signal",
180 "signal": "interfaces_added"
181 },
182 {
183 "class": "signal",
184 "signal": "properties_changed"
185 }
186 ],
187 "actions": [
188 {
189 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600190 "parameter_name": "proc_0_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600191 "modifier": {
192 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600193 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600194 }
195 }
196 ]
197 },
198 {
199 "name": "Set Proc 1 Core DVFS parameter",
200 "groups": [
201 {
202 "name": "proc 1 core dvfs temp",
203 "interface": "xyz.openbmc_project.Sensor.Value",
204 "property": { "name": "Value" }
205 }
206 ],
207 "triggers": [
208 {
209 "class": "init",
210 "method": "get_properties"
211 },
212 {
213 "class": "signal",
214 "signal": "interfaces_added"
215 },
216 {
217 "class": "signal",
218 "signal": "properties_changed"
219 }
220 ],
221 "actions": [
222 {
223 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600224 "parameter_name": "proc_1_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600225 "modifier": {
226 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600227 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600228 }
229 }
230 ]
231 },
232 {
233 "name": "Set Proc 0 IO Ring DVFS parameter",
234 "groups": [
235 {
236 "name": "proc 0 ioring dvfs temp",
237 "interface": "xyz.openbmc_project.Sensor.Value",
238 "property": { "name": "Value" }
239 }
240 ],
241 "triggers": [
242 {
243 "class": "init",
244 "method": "get_properties"
245 },
246 {
247 "class": "signal",
248 "signal": "interfaces_added"
249 },
250 {
251 "class": "signal",
252 "signal": "properties_changed"
253 }
254 ],
255 "actions": [
256 {
257 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600258 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600259 "modifier": {
260 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600261 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600262 }
263 }
264 ]
265 },
266 {
267 "name": "Set Proc 1 IO Ring DVFS parameter",
268 "groups": [
269 {
270 "name": "proc 1 ioring dvfs temp",
271 "interface": "xyz.openbmc_project.Sensor.Value",
272 "property": { "name": "Value" }
273 }
274 ],
275 "triggers": [
276 {
277 "class": "init",
278 "method": "get_properties"
279 },
280 {
281 "class": "signal",
282 "signal": "interfaces_added"
283 },
284 {
285 "class": "signal",
286 "signal": "properties_changed"
287 }
288 ],
289 "actions": [
290 {
291 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600292 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600293 "modifier": {
294 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600295 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600296 }
297 }
298 ]
299 }
Matthew Barthb477a562021-10-19 14:39:19 -0500300]