blob: d6ae5163b80778c31d7308a485223c4fc74dc7c9 [file] [log] [blame]
Matthew Barthb123bf62021-10-19 14:48:27 -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": 10700
28 }
29 ]
Matthew Barth284505d2021-10-19 14:49:02 -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": "fan3 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": 10700
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": 10700
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": 10700
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 2 Core DVFS parameter",
234 "groups": [
235 {
236 "name": "proc 2 core 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_2_core_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 3 Core DVFS parameter",
268 "groups": [
269 {
270 "name": "proc 3 core 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_3_core_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 },
300 {
301 "name": "Set Proc 4 Core DVFS parameter",
302 "groups": [
303 {
304 "name": "proc 4 core dvfs temp",
305 "interface": "xyz.openbmc_project.Sensor.Value",
306 "property": { "name": "Value" }
307 }
308 ],
309 "triggers": [
310 {
311 "class": "init",
312 "method": "get_properties"
313 },
314 {
315 "class": "signal",
316 "signal": "interfaces_added"
317 },
318 {
319 "class": "signal",
320 "signal": "properties_changed"
321 }
322 ],
323 "actions": [
324 {
325 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600326 "parameter_name": "proc_4_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600327 "modifier": {
328 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600329 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600330 }
331 }
332 ]
333 },
334 {
335 "name": "Set Proc 5 Core DVFS parameter",
336 "groups": [
337 {
338 "name": "proc 5 core dvfs temp",
339 "interface": "xyz.openbmc_project.Sensor.Value",
340 "property": { "name": "Value" }
341 }
342 ],
343 "triggers": [
344 {
345 "class": "init",
346 "method": "get_properties"
347 },
348 {
349 "class": "signal",
350 "signal": "interfaces_added"
351 },
352 {
353 "class": "signal",
354 "signal": "properties_changed"
355 }
356 ],
357 "actions": [
358 {
359 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600360 "parameter_name": "proc_5_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600361 "modifier": {
362 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600363 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600364 }
365 }
366 ]
367 },
368 {
369 "name": "Set Proc 6 Core DVFS parameter",
370 "groups": [
371 {
372 "name": "proc 6 core dvfs temp",
373 "interface": "xyz.openbmc_project.Sensor.Value",
374 "property": { "name": "Value" }
375 }
376 ],
377 "triggers": [
378 {
379 "class": "init",
380 "method": "get_properties"
381 },
382 {
383 "class": "signal",
384 "signal": "interfaces_added"
385 },
386 {
387 "class": "signal",
388 "signal": "properties_changed"
389 }
390 ],
391 "actions": [
392 {
393 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600394 "parameter_name": "proc_6_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600395 "modifier": {
396 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600397 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600398 }
399 }
400 ]
401 },
402 {
403 "name": "Set Proc 7 Core DVFS parameter",
404 "groups": [
405 {
406 "name": "proc 7 core dvfs temp",
407 "interface": "xyz.openbmc_project.Sensor.Value",
408 "property": { "name": "Value" }
409 }
410 ],
411 "triggers": [
412 {
413 "class": "init",
414 "method": "get_properties"
415 },
416 {
417 "class": "signal",
418 "signal": "interfaces_added"
419 },
420 {
421 "class": "signal",
422 "signal": "properties_changed"
423 }
424 ],
425 "actions": [
426 {
427 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600428 "parameter_name": "proc_7_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600429 "modifier": {
430 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600431 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600432 }
433 }
434 ]
435 },
436 {
437 "name": "Set Proc 0 IO Ring DVFS parameter",
438 "groups": [
439 {
440 "name": "proc 0 ioring dvfs temp",
441 "interface": "xyz.openbmc_project.Sensor.Value",
442 "property": { "name": "Value" }
443 }
444 ],
445 "triggers": [
446 {
447 "class": "init",
448 "method": "get_properties"
449 },
450 {
451 "class": "signal",
452 "signal": "interfaces_added"
453 },
454 {
455 "class": "signal",
456 "signal": "properties_changed"
457 }
458 ],
459 "actions": [
460 {
461 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600462 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600463 "modifier": {
464 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600465 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600466 }
467 }
468 ]
469 },
470 {
471 "name": "Set Proc 1 IO Ring DVFS parameter",
472 "groups": [
473 {
474 "name": "proc 1 ioring dvfs temp",
475 "interface": "xyz.openbmc_project.Sensor.Value",
476 "property": { "name": "Value" }
477 }
478 ],
479 "triggers": [
480 {
481 "class": "init",
482 "method": "get_properties"
483 },
484 {
485 "class": "signal",
486 "signal": "interfaces_added"
487 },
488 {
489 "class": "signal",
490 "signal": "properties_changed"
491 }
492 ],
493 "actions": [
494 {
495 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600496 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600497 "modifier": {
498 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600499 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600500 }
501 }
502 ]
503 },
504 {
505 "name": "Set Proc 2 IO Ring DVFS parameter",
506 "groups": [
507 {
508 "name": "proc 2 ioring dvfs temp",
509 "interface": "xyz.openbmc_project.Sensor.Value",
510 "property": { "name": "Value" }
511 }
512 ],
513 "triggers": [
514 {
515 "class": "init",
516 "method": "get_properties"
517 },
518 {
519 "class": "signal",
520 "signal": "interfaces_added"
521 },
522 {
523 "class": "signal",
524 "signal": "properties_changed"
525 }
526 ],
527 "actions": [
528 {
529 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600530 "parameter_name": "proc_2_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600531 "modifier": {
532 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600533 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600534 }
535 }
536 ]
537 },
538 {
539 "name": "Set Proc 3 IO Ring DVFS parameter",
540 "groups": [
541 {
542 "name": "proc 3 ioring dvfs temp",
543 "interface": "xyz.openbmc_project.Sensor.Value",
544 "property": { "name": "Value" }
545 }
546 ],
547 "triggers": [
548 {
549 "class": "init",
550 "method": "get_properties"
551 },
552 {
553 "class": "signal",
554 "signal": "properties_changed"
555 },
556 {
557 "class": "signal",
558 "signal": "interfaces_added"
559 }
560 ],
561 "actions": [
562 {
563 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600564 "parameter_name": "proc_3_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600565 "modifier": {
566 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600567 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600568 }
569 }
570 ]
571 },
572 {
573 "name": "Set Proc 4 IO Ring DVFS parameter",
574 "groups": [
575 {
576 "name": "proc 4 ioring dvfs temp",
577 "interface": "xyz.openbmc_project.Sensor.Value",
578 "property": { "name": "Value" }
579 }
580 ],
581 "triggers": [
582 {
583 "class": "init",
584 "method": "get_properties"
585 },
586 {
587 "class": "signal",
588 "signal": "interfaces_added"
589 },
590 {
591 "class": "signal",
592 "signal": "properties_changed"
593 }
594 ],
595 "actions": [
596 {
597 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600598 "parameter_name": "proc_4_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600599 "modifier": {
600 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600601 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600602 }
603 }
604 ]
605 },
606 {
607 "name": "Set Proc 5 IO Ring DVFS parameter",
608 "groups": [
609 {
610 "name": "proc 5 ioring dvfs temp",
611 "interface": "xyz.openbmc_project.Sensor.Value",
612 "property": { "name": "Value" }
613 }
614 ],
615 "triggers": [
616 {
617 "class": "init",
618 "method": "get_properties"
619 },
620 {
621 "class": "signal",
622 "signal": "interfaces_added"
623 },
624 {
625 "class": "signal",
626 "signal": "properties_changed"
627 }
628 ],
629 "actions": [
630 {
631 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600632 "parameter_name": "proc_5_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600633 "modifier": {
634 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600635 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600636 }
637 }
638 ]
639 },
640 {
641 "name": "Set Proc 6 IO Ring DVFS parameter",
642 "groups": [
643 {
644 "name": "proc 6 ioring dvfs temp",
645 "interface": "xyz.openbmc_project.Sensor.Value",
646 "property": { "name": "Value" }
647 }
648 ],
649 "triggers": [
650 {
651 "class": "init",
652 "method": "get_properties"
653 },
654 {
655 "class": "signal",
656 "signal": "interfaces_added"
657 },
658 {
659 "class": "signal",
660 "signal": "properties_changed"
661 }
662 ],
663 "actions": [
664 {
665 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600666 "parameter_name": "proc_6_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600667 "modifier": {
668 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600669 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600670 }
671 }
672 ]
673 },
674 {
675 "name": "Set Proc 7 IO Ring DVFS parameter",
676 "groups": [
677 {
678 "name": "proc 7 ioring dvfs temp",
679 "interface": "xyz.openbmc_project.Sensor.Value",
680 "property": { "name": "Value" }
681 }
682 ],
683 "triggers": [
684 {
685 "class": "init",
686 "method": "get_properties"
687 },
688 {
689 "class": "signal",
690 "signal": "interfaces_added"
691 },
692 {
693 "class": "signal",
694 "signal": "properties_changed"
695 }
696 ],
697 "actions": [
698 {
699 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600700 "parameter_name": "proc_7_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600701 "modifier": {
702 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600703 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600704 }
705 }
706 ]
707 }
Matthew Barthb123bf62021-10-19 14:48:27 -0500708]