blob: 579fffe4a6ee467b2cac4ff46ad14f6bba4dd4e2 [file] [log] [blame]
Matthew Barthf0f213c2021-10-19 13:32:31 -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,
Matthew Bartheff46602022-02-11 14:10:58 -060027 "target": 18000
Matthew Barthf0f213c2021-10-19 13:32:31 -050028 }
29 ]
Matthew Barth991020b2021-10-19 13:34:33 -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 "name": "fan4 rotor inventory",
57 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
58 "property": { "name": "Functional" }
59 },
60 {
61 "name": "fan5 rotor inventory",
62 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
63 "property": { "name": "Functional" }
64 }
65 ],
66 "triggers": [
67 {
68 "class": "init",
69 "method": "get_properties"
70 },
71 {
72 "class": "signal",
73 "signal": "properties_changed"
74 }
75 ],
76 "actions": [
77 {
78 "name": "count_state_before_target",
79 "count": 1,
80 "state": false,
Matthew Bartheff46602022-02-11 14:10:58 -060081 "target": 18000
Matthew Barth991020b2021-10-19 13:34:33 -050082 }
83 ]
Matthew Barth09b09e52021-10-28 15:29:13 -050084 },
85 {
Mike Capps22c748c2022-03-23 13:54:15 -040086 // (for the following 6 rules)
87 // if a dual-rotor fan becomes non-functional, lock its speed to
88 // poweron_target to lock the other rotor to full_speed
89 "name": "nonfunc rotor override-0",
90 "groups": [
91 {
92 "name": "fan0 rotor inventory",
93 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
94 "property": { "name": "Functional" }
95 }
96 ],
97 "triggers": [
98 {
99 "class": "init",
100 "method": "get_properties"
101 },
102 {
103 "class": "signal",
104 "signal": "properties_changed"
105 }
106 ],
107 "actions": [
108 {
109 "name": "override_fan_target",
110 "count": 1,
111 "state": false,
112 "fans": [ "fan0" ],
113 "target": 18000
114 }
115 ]
116 },
117 {
118 "name": "nonfunc rotor override-1",
119 "groups": [
120 {
121 "name": "fan1 rotor inventory",
122 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
123 "property": { "name": "Functional" }
124 }
125 ],
126 "triggers": [
127 {
128 "class": "init",
129 "method": "get_properties"
130 },
131 {
132 "class": "signal",
133 "signal": "properties_changed"
134 }
135 ],
136 "actions": [
137 {
138 "name": "override_fan_target",
139 "count": 1,
140 "state": false,
141 "fans": [ "fan1" ],
142 "target": 18000
143 }
144 ]
145 },
146 {
147 "name": "nonfunc rotor override-2",
148 "groups": [
149 {
150 "name": "fan2 rotor inventory",
151 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
152 "property": { "name": "Functional" }
153 }
154 ],
155 "triggers": [
156 {
157 "class": "init",
158 "method": "get_properties"
159 },
160 {
161 "class": "signal",
162 "signal": "properties_changed"
163 }
164 ],
165 "actions": [
166 {
167 "name": "override_fan_target",
168 "count": 1,
169 "state": false,
170 "fans": [ "fan2" ],
171 "target": 18000
172 }
173 ]
174 },
175 {
176 "name": "nonfunc rotor override-3",
177 "groups": [
178 {
179 "name": "fan3 rotor inventory",
180 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
181 "property": { "name": "Functional" }
182 }
183 ],
184 "triggers": [
185 {
186 "class": "init",
187 "method": "get_properties"
188 },
189 {
190 "class": "signal",
191 "signal": "properties_changed"
192 }
193 ],
194 "actions": [
195 {
196 "name": "override_fan_target",
197 "count": 1,
198 "state": false,
199 "fans": [ "fan3" ],
200 "target": 18000
201 }
202 ]
203 },
204 {
205 "name": "nonfunc rotor override-4",
206 "groups": [
207 {
208 "name": "fan4 rotor inventory",
209 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
210 "property": { "name": "Functional" }
211 }
212 ],
213 "triggers": [
214 {
215 "class": "init",
216 "method": "get_properties"
217 },
218 {
219 "class": "signal",
220 "signal": "properties_changed"
221 }
222 ],
223 "actions": [
224 {
225 "name": "override_fan_target",
226 "count": 1,
227 "state": false,
228 "fans": [ "fan4" ],
229 "target": 18000
230 }
231 ]
232 },
233 {
234 "name": "nonfunc rotor override-5",
235 "groups": [
236 {
237 "name": "fan5 rotor inventory",
238 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
239 "property": { "name": "Functional" }
240 }
241 ],
242 "triggers": [
243 {
244 "class": "init",
245 "method": "get_properties"
246 },
247 {
248 "class": "signal",
249 "signal": "properties_changed"
250 }
251 ],
252 "actions": [
253 {
254 "name": "override_fan_target",
255 "count": 1,
256 "state": false,
257 "fans": [ "fan5" ],
258 "target": 18000
259 }
260 ]
261 },
262 {
Matthew Barth09b09e52021-10-28 15:29:13 -0500263 // Hold fans at the given target when any critical service
264 // is not running for 5 seconds.
265 "name": "service(s) missing",
266 "groups": [
267 {
Matthew Barthf3a6d452021-11-23 14:41:43 -0600268 "name": "fan inventory",
269 "interface": "xyz.openbmc_project.Inventory.Item",
270 "property": { "name": "Present" }
271 },
272 {
Matthew Barth09b09e52021-10-28 15:29:13 -0500273 "name": "occ objects",
274 "interface": "org.open_power.OCC.Status",
275 "property": { "name": "OccActive" }
Matthew Barth86a484f2022-01-14 13:06:50 -0600276 },
277 {
278 "name": "nvme temps",
279 "interface": "xyz.openbmc_project.Sensor.Value",
280 "property": { "name": "Value" }
281 },
282 {
283 "name": "planar temps",
284 "interface": "xyz.openbmc_project.Sensor.Value",
285 "property": { "name": "Value" }
286 },
287 {
288 "name": "flett temps",
289 "interface": "xyz.openbmc_project.Sensor.Value",
290 "property": { "name": "Value" }
291 },
292 {
Matthew Barth48b74802022-01-14 15:25:24 -0600293 "name": "pcie cable card temps",
Matthew Barth86a484f2022-01-14 13:06:50 -0600294 "interface": "xyz.openbmc_project.Sensor.Value",
295 "property": { "name": "Value" }
296 },
297 {
298 "name": "ambient temp",
299 "interface": "xyz.openbmc_project.Sensor.Value",
300 "property": { "name": "Value" }
301 },
302 {
303 "name": "altitude",
304 "interface": "xyz.openbmc_project.Sensor.Value",
305 "property": { "name": "Value" }
Matthew Barth09b09e52021-10-28 15:29:13 -0500306 }
307 ],
308 "triggers": [
309 {
310 "class": "init",
311 "method": "name_has_owner"
312 },
313 {
314 "class": "signal",
315 "signal": "name_owner_changed"
316 }
317 ],
318 "actions": [
319 {
320 "name": "call_actions_based_on_timer",
321 "timer": {
322 "interval": 5000000,
323 "type": "oneshot"
324 },
325 "actions": [
326 {
327 "name": "set_target_on_missing_owner",
328 "groups": [
329 {
330 "name": "fan inventory",
331 "interface": "xyz.openbmc_project.Inventory.Item",
332 "property": { "name": "Present" }
333 },
334 {
335 "name": "occ objects",
336 "interface": "org.open_power.OCC.Status",
337 "property": { "name": "OccActive" }
Matthew Barth86a484f2022-01-14 13:06:50 -0600338 },
339 {
340 "name": "nvme temps",
341 "interface": "xyz.openbmc_project.Sensor.Value",
342 "property": { "name": "Value" }
343 },
344 {
345 "name": "planar temps",
346 "interface": "xyz.openbmc_project.Sensor.Value",
347 "property": { "name": "Value" }
348 },
349 {
350 "name": "flett temps",
351 "interface": "xyz.openbmc_project.Sensor.Value",
352 "property": { "name": "Value" }
353 },
354 {
Matthew Barth48b74802022-01-14 15:25:24 -0600355 "name": "pcie cable card temps",
Matthew Barth86a484f2022-01-14 13:06:50 -0600356 "interface": "xyz.openbmc_project.Sensor.Value",
357 "property": { "name": "Value" }
358 },
359 {
360 "name": "ambient temp",
361 "interface": "xyz.openbmc_project.Sensor.Value",
362 "property": { "name": "Value" }
Matthew Barth09b09e52021-10-28 15:29:13 -0500363 }
364 ],
Matthew Bartheff46602022-02-11 14:10:58 -0600365 "target": 18000
Matthew Barth09b09e52021-10-28 15:29:13 -0500366 }
367 ]
368 }
369 ]
Matt Spinler5934f092021-11-03 14:30:28 -0500370 },
371 {
372 // Set a fan floor if an OCC isn't active
373 "name": "Non-active OCCs",
374 "groups": [
375 {
376 "name": "occ objects",
377 "interface": "org.open_power.OCC.Status",
378 "property": {
379 "name": "OccActive"
380 }
381 }
382 ],
383 "triggers": [
384 {
385 "class": "signal",
386 "signal": "properties_changed"
387 },
388 {
389 "class": "signal",
390 "signal": "interfaces_added"
391 },
392 {
393 "class": "init",
394 "method": "get_properties"
395 }
396 ],
397 "actions": [
398 {
399 "name": "count_state_floor",
400 "count": 1,
401 "state": false,
Matthew Bartheff46602022-02-11 14:10:58 -0600402 "floor": 18000
Matt Spinler5934f092021-11-03 14:30:28 -0500403 }
404 ]
Matt Spinler323694a2021-11-11 16:03:18 -0600405 },
406 {
Matthew Barth8d6cf062022-01-13 14:02:20 -0600407 // Set a raised fan floor when any temperature or altitude sensor is
408 // nonfunctional
Matthew Barth4172d8d2022-01-13 11:31:54 -0600409 "name": "Nonfunctional temperature sensors",
Matthew Barth39925fb2022-01-12 10:45:59 -0600410 "groups": [
411 {
412 "name": "proc0 core temps",
413 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
414 "property": { "name": "Functional" }
415 },
416 {
417 "name": "proc1 core temps",
418 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
419 "property": { "name": "Functional" }
420 },
421 {
422 "name": "proc2 core temps",
423 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
424 "property": { "name": "Functional" }
425 },
426 {
427 "name": "proc3 core temps",
428 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
429 "property": { "name": "Functional" }
430 },
431 {
432 "name": "proc0 ioring temp",
433 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
434 "property": { "name": "Functional" }
435 },
436 {
437 "name": "proc1 ioring temp",
438 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
439 "property": { "name": "Functional" }
440 },
441 {
442 "name": "proc2 ioring temp",
443 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
444 "property": { "name": "Functional" }
445 },
446 {
447 "name": "proc3 ioring temp",
448 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
449 "property": { "name": "Functional" }
450 },
451 {
452 "name": "dram temps",
453 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
454 "property": { "name": "Functional" }
455 },
456 {
457 "name": "pmic temps",
458 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
459 "property": { "name": "Functional" }
460 },
461 {
462 "name": "internal memory buffer temps",
463 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
464 "property": { "name": "Functional" }
465 },
466 {
467 "name": "dram and external memory buffer temps",
468 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
469 "property": { "name": "Functional" }
470 },
471 {
472 "name": "external memory buffer temps",
473 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
474 "property": { "name": "Functional" }
475 },
476 {
477 "name": "vdd vrm temps",
478 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
479 "property": { "name": "Functional" }
Matthew Barth4172d8d2022-01-13 11:31:54 -0600480 },
481 {
482 "name": "nvme temps",
483 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
484 "property": { "name": "Functional" }
485 },
486 {
487 "name": "planar temps",
488 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
489 "property": { "name": "Functional" }
490 },
491 {
492 "name": "flett temps",
493 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
494 "property": { "name": "Functional" }
495 },
496 {
Matthew Barth48b74802022-01-14 15:25:24 -0600497 "name": "pcie cable card temps",
Matthew Barth4172d8d2022-01-13 11:31:54 -0600498 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
499 "property": { "name": "Functional" }
Matthew Barth8d6cf062022-01-13 14:02:20 -0600500 },
501 {
502 "name": "ambient temp",
503 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
504 "property": { "name": "Functional" }
505 },
506 {
507 "name": "altitude",
508 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
509 "property": { "name": "Functional" }
Matthew Barth39925fb2022-01-12 10:45:59 -0600510 }
511 ],
512 "triggers": [
513 {
514 "class": "signal",
515 "signal": "properties_changed"
516 },
517 {
518 "class": "signal",
519 "signal": "interfaces_added"
520 },
521 {
Matt Spinler0461bd22022-04-25 16:24:23 -0500522 "class": "signal",
523 "signal": "interfaces_removed"
524 },
525 {
Matthew Barth39925fb2022-01-12 10:45:59 -0600526 "class": "init",
527 "method": "get_properties"
528 }
529 ],
530 "actions": [
531 {
532 "name": "count_state_floor",
533 "count": 1,
534 "state": false,
Matthew Bartheff46602022-02-11 14:10:58 -0600535 "floor": 18000
Matthew Barth39925fb2022-01-12 10:45:59 -0600536 }
537 ]
538 },
539 {
Matt Spinler323694a2021-11-11 16:03:18 -0600540 "name": "Set Proc 0 Core DVFS parameter",
541 "groups": [
542 {
543 "name": "proc 0 core dvfs temp",
544 "interface": "xyz.openbmc_project.Sensor.Value",
545 "property": { "name": "Value" }
546 }
547 ],
548 "triggers": [
549 {
550 "class": "init",
551 "method": "get_properties"
552 },
553 {
554 "class": "signal",
555 "signal": "interfaces_added"
556 },
557 {
558 "class": "signal",
559 "signal": "properties_changed"
560 }
561 ],
562 "actions": [
563 {
564 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600565 "parameter_name": "proc_0_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600566 "modifier": {
567 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600568 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600569 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600570 },
571 {
572 "name": "set_parameter_from_group_max",
573 "parameter_name": "proc_0_core_dvfs_decrease_temp",
574 "modifier": {
575 "operator": "minus",
576 "value": 13
577 }
Matt Spinler323694a2021-11-11 16:03:18 -0600578 }
579 ]
580 },
581 {
582 "name": "Set Proc 1 Core DVFS parameter",
583 "groups": [
584 {
585 "name": "proc 1 core dvfs temp",
586 "interface": "xyz.openbmc_project.Sensor.Value",
587 "property": { "name": "Value" }
588 }
589 ],
590 "triggers": [
591 {
592 "class": "init",
593 "method": "get_properties"
594 },
595 {
596 "class": "signal",
597 "signal": "interfaces_added"
598 },
599 {
600 "class": "signal",
601 "signal": "properties_changed"
602 }
603 ],
604 "actions": [
605 {
606 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600607 "parameter_name": "proc_1_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600608 "modifier": {
609 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600610 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600611 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600612 },
613 {
614 "name": "set_parameter_from_group_max",
615 "parameter_name": "proc_1_core_dvfs_decrease_temp",
616 "modifier": {
617 "operator": "minus",
618 "value": 13
619 }
Matt Spinler323694a2021-11-11 16:03:18 -0600620 }
621 ]
622 },
623 {
624 "name": "Set Proc 2 Core DVFS parameter",
625 "groups": [
626 {
627 "name": "proc 2 core dvfs temp",
628 "interface": "xyz.openbmc_project.Sensor.Value",
629 "property": { "name": "Value" }
630 }
631 ],
632 "triggers": [
633 {
634 "class": "init",
635 "method": "get_properties"
636 },
637 {
638 "class": "signal",
639 "signal": "interfaces_added"
640 },
641 {
642 "class": "signal",
643 "signal": "properties_changed"
644 }
645 ],
646 "actions": [
647 {
648 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600649 "parameter_name": "proc_2_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600650 "modifier": {
651 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600652 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600653 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600654 },
655 {
656 "name": "set_parameter_from_group_max",
657 "parameter_name": "proc_2_core_dvfs_decrease_temp",
658 "modifier": {
659 "operator": "minus",
660 "value": 13
661 }
Matt Spinler323694a2021-11-11 16:03:18 -0600662 }
663 ]
664 },
665 {
666 "name": "Set Proc 3 Core DVFS parameter",
667 "groups": [
668 {
669 "name": "proc 3 core dvfs temp",
670 "interface": "xyz.openbmc_project.Sensor.Value",
671 "property": { "name": "Value" }
672 }
673 ],
674 "triggers": [
675 {
676 "class": "init",
677 "method": "get_properties"
678 },
679 {
680 "class": "signal",
681 "signal": "interfaces_added"
682 },
683 {
684 "class": "signal",
685 "signal": "properties_changed"
686 }
687 ],
688 "actions": [
689 {
690 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600691 "parameter_name": "proc_3_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600692 "modifier": {
693 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600694 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600695 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600696 },
697 {
698 "name": "set_parameter_from_group_max",
699 "parameter_name": "proc_3_core_dvfs_decrease_temp",
700 "modifier": {
701 "operator": "minus",
702 "value": 13
703 }
Matt Spinler323694a2021-11-11 16:03:18 -0600704 }
705 ]
706 },
707 {
708 "name": "Set Proc 0 IO Ring DVFS parameter",
709 "groups": [
710 {
711 "name": "proc 0 ioring dvfs temp",
712 "interface": "xyz.openbmc_project.Sensor.Value",
713 "property": { "name": "Value" }
714 }
715 ],
716 "triggers": [
717 {
718 "class": "init",
719 "method": "get_properties"
720 },
721 {
722 "class": "signal",
723 "signal": "interfaces_added"
724 },
725 {
726 "class": "signal",
727 "signal": "properties_changed"
728 }
729 ],
730 "actions": [
731 {
732 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600733 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600734 "modifier": {
735 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600736 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600737 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600738 },
739 {
740 "name": "set_parameter_from_group_max",
741 "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
742 "modifier": {
743 "operator": "minus",
744 "value": 13
745 }
Matt Spinler323694a2021-11-11 16:03:18 -0600746 }
747 ]
748 },
749 {
750 "name": "Set Proc 1 IO Ring DVFS parameter",
751 "groups": [
752 {
753 "name": "proc 1 ioring dvfs temp",
754 "interface": "xyz.openbmc_project.Sensor.Value",
755 "property": { "name": "Value" }
756 }
757 ],
758 "triggers": [
759 {
760 "class": "init",
761 "method": "get_properties"
762 },
763 {
764 "class": "signal",
765 "signal": "interfaces_added"
766 },
767 {
768 "class": "signal",
769 "signal": "properties_changed"
770 }
771 ],
772 "actions": [
773 {
774 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600775 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600776 "modifier": {
777 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600778 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600779 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600780 },
781 {
782 "name": "set_parameter_from_group_max",
783 "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
784 "modifier": {
785 "operator": "minus",
786 "value": 13
787 }
Matt Spinler323694a2021-11-11 16:03:18 -0600788 }
789 ]
790 },
791 {
792 "name": "Set Proc 2 IO Ring DVFS parameter",
793 "groups": [
794 {
795 "name": "proc 2 ioring dvfs temp",
796 "interface": "xyz.openbmc_project.Sensor.Value",
797 "property": { "name": "Value" }
798 }
799 ],
800 "triggers": [
801 {
802 "class": "init",
803 "method": "get_properties"
804 },
805 {
806 "class": "signal",
807 "signal": "interfaces_added"
808 },
809 {
810 "class": "signal",
811 "signal": "properties_changed"
812 }
813 ],
814 "actions": [
815 {
816 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600817 "parameter_name": "proc_2_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600818 "modifier": {
819 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600820 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600821 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600822 },
823 {
824 "name": "set_parameter_from_group_max",
825 "parameter_name": "proc_2_ioring_dvfs_decrease_temp",
826 "modifier": {
827 "operator": "minus",
828 "value": 13
829 }
Matt Spinler323694a2021-11-11 16:03:18 -0600830 }
831 ]
832 },
833 {
834 "name": "Set Proc 3 IO Ring DVFS parameter",
835 "groups": [
836 {
837 "name": "proc 3 ioring dvfs temp",
838 "interface": "xyz.openbmc_project.Sensor.Value",
839 "property": { "name": "Value" }
840 }
841 ],
842 "triggers": [
843 {
844 "class": "init",
845 "method": "get_properties"
846 },
847 {
848 "class": "signal",
849 "signal": "properties_changed"
850 },
851 {
852 "class": "signal",
853 "signal": "interfaces_added"
854 }
855 ],
856 "actions": [
857 {
858 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600859 "parameter_name": "proc_3_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600860 "modifier": {
861 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600862 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600863 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600864 },
865 {
866 "name": "set_parameter_from_group_max",
867 "parameter_name": "proc_3_ioring_dvfs_decrease_temp",
868 "modifier": {
869 "operator": "minus",
870 "value": 13
871 }
Matt Spinler323694a2021-11-11 16:03:18 -0600872 }
873 ]
Matthew Barthb6f10352021-12-02 17:42:49 -0600874 },
875 {
876 // Collect group temperatures each iteration the repeating timer expires
877 "name": "Fan control timer loop",
878 "groups": [
879 {
880 "name": "proc0 core temps",
881 "interface": "xyz.openbmc_project.Sensor.Value",
882 "property": { "name": "Value" }
883 },
884 {
885 "name": "proc1 core temps",
886 "interface": "xyz.openbmc_project.Sensor.Value",
887 "property": { "name": "Value" }
888 },
889 {
890 "name": "proc2 core temps",
891 "interface": "xyz.openbmc_project.Sensor.Value",
892 "property": { "name": "Value" }
893 },
894 {
895 "name": "proc3 core temps",
896 "interface": "xyz.openbmc_project.Sensor.Value",
897 "property": { "name": "Value" }
898 },
899 {
900 "name": "proc0 ioring temp",
901 "interface": "xyz.openbmc_project.Sensor.Value",
902 "property": { "name": "Value" }
903 },
904 {
905 "name": "proc1 ioring temp",
906 "interface": "xyz.openbmc_project.Sensor.Value",
907 "property": { "name": "Value" }
908 },
909 {
910 "name": "proc2 ioring temp",
911 "interface": "xyz.openbmc_project.Sensor.Value",
912 "property": { "name": "Value" }
913 },
914 {
915 "name": "proc3 ioring temp",
916 "interface": "xyz.openbmc_project.Sensor.Value",
917 "property": { "name": "Value" }
918 },
919 {
920 "name": "dram temps",
921 "interface": "xyz.openbmc_project.Sensor.Value",
922 "property": { "name": "Value" }
923 },
924 {
925 "name": "pmic temps",
926 "interface": "xyz.openbmc_project.Sensor.Value",
927 "property": { "name": "Value" }
928 },
929 {
930 "name": "internal memory buffer temps",
931 "interface": "xyz.openbmc_project.Sensor.Value",
932 "property": { "name": "Value" }
933 },
934 {
935 "name": "dram and external memory buffer temps",
936 "interface": "xyz.openbmc_project.Sensor.Value",
937 "property": { "name": "Value" }
938 },
939 {
940 "name": "external memory buffer temps",
941 "interface": "xyz.openbmc_project.Sensor.Value",
942 "property": { "name": "Value" }
943 },
944 {
945 "name": "vdd vrm temps",
946 "interface": "xyz.openbmc_project.Sensor.Value",
947 "property": { "name": "Value" }
Matthew Barth23a7b2b2022-01-11 15:22:55 -0600948 },
949 {
950 "name": "nvme temps",
951 "interface": "xyz.openbmc_project.Sensor.Value",
952 "property": { "name": "Value" }
953 },
954 {
955 "name": "planar temps",
956 "interface": "xyz.openbmc_project.Sensor.Value",
957 "property": { "name": "Value" }
Matt Spinler9b7fc002022-01-11 15:35:29 -0600958 },
959 {
960 "name": "flett temps",
961 "interface": "xyz.openbmc_project.Sensor.Value",
962 "property": { "name": "Value" }
963 },
964 {
Matthew Barth48b74802022-01-14 15:25:24 -0600965 "name": "pcie cable card temps",
Matt Spinler9b7fc002022-01-11 15:35:29 -0600966 "interface": "xyz.openbmc_project.Sensor.Value",
967 "property": { "name": "Value" }
Matthew Barthb6f10352021-12-02 17:42:49 -0600968 }
969 ],
970 "triggers": [
971 {
972 "class": "timer",
973 "type": "repeating",
974 "interval": 2000000,
975 "preload_groups": true
976 }
Matthew Barth6f63b2f2021-12-06 21:08:13 -0600977 ],
978 "actions": [
979 {
980 "name": "set_net_increase_target",
981 "groups": [
982 {
983 "name": "proc0 core temps",
984 "interface": "xyz.openbmc_project.Sensor.Value",
985 "property": { "name": "Value" }
986 }
987 ],
988 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
989 "delta": 300
990 },
991 {
992 "name": "set_net_increase_target",
993 "groups": [
994 {
995 "name": "proc1 core temps",
996 "interface": "xyz.openbmc_project.Sensor.Value",
997 "property": { "name": "Value" }
998 }
999 ],
1000 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
1001 "delta": 300
1002 },
1003 {
1004 "name": "set_net_increase_target",
1005 "groups": [
1006 {
1007 "name": "proc2 core temps",
1008 "interface": "xyz.openbmc_project.Sensor.Value",
1009 "property": { "name": "Value" }
1010 }
1011 ],
1012 "state_parameter_name": "proc_2_core_dvfs_increase_temp",
1013 "delta": 300
1014 },
1015 {
1016 "name": "set_net_increase_target",
1017 "groups": [
1018 {
1019 "name": "proc3 core temps",
1020 "interface": "xyz.openbmc_project.Sensor.Value",
1021 "property": { "name": "Value" }
1022 }
1023 ],
1024 "state_parameter_name": "proc_3_core_dvfs_increase_temp",
1025 "delta": 300
1026 },
1027 {
1028 "name": "set_net_increase_target",
1029 "groups": [
1030 {
1031 "name": "proc0 ioring temp",
1032 "interface": "xyz.openbmc_project.Sensor.Value",
1033 "property": { "name": "Value" }
1034 }
1035 ],
1036 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
1037 "delta": 300
1038 },
1039 {
1040 "name": "set_net_increase_target",
1041 "groups": [
1042 {
1043 "name": "proc1 ioring temp",
1044 "interface": "xyz.openbmc_project.Sensor.Value",
1045 "property": { "name": "Value" }
1046 }
1047 ],
1048 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
1049 "delta": 300
1050 },
1051 {
1052 "name": "set_net_increase_target",
1053 "groups": [
1054 {
1055 "name": "proc2 ioring temp",
1056 "interface": "xyz.openbmc_project.Sensor.Value",
1057 "property": { "name": "Value" }
1058 }
1059 ],
1060 "state_parameter_name": "proc_2_ioring_dvfs_increase_temp",
1061 "delta": 300
1062 },
1063 {
1064 "name": "set_net_increase_target",
1065 "groups": [
1066 {
1067 "name": "proc3 ioring temp",
1068 "interface": "xyz.openbmc_project.Sensor.Value",
1069 "property": { "name": "Value" }
1070 }
1071 ],
1072 "state_parameter_name": "proc_3_ioring_dvfs_increase_temp",
1073 "delta": 300
1074 },
1075 {
1076 "name": "set_net_increase_target",
1077 "groups": [
1078 {
1079 "name": "dram temps",
1080 "interface": "xyz.openbmc_project.Sensor.Value",
1081 "property": { "name": "Value" }
1082 }
1083 ],
Matthew Barthb12f9062022-03-24 08:59:45 -05001084 "state": 68.0,
Matthew Bartheff46602022-02-11 14:10:58 -06001085 "delta": 100
Matthew Barth6f63b2f2021-12-06 21:08:13 -06001086 },
1087 {
1088 "name": "set_net_increase_target",
1089 "groups": [
1090 {
1091 "name": "pmic temps",
1092 "interface": "xyz.openbmc_project.Sensor.Value",
1093 "property": { "name": "Value" }
1094 }
1095 ],
Matthew Barthb12f9062022-03-24 08:59:45 -05001096 "state": 68.0,
Matthew Bartheff46602022-02-11 14:10:58 -06001097 "delta": 100
Matthew Barth6f63b2f2021-12-06 21:08:13 -06001098 },
1099 {
1100 "name": "set_net_increase_target",
1101 "groups": [
1102 {
1103 "name": "internal memory buffer temps",
1104 "interface": "xyz.openbmc_project.Sensor.Value",
1105 "property": { "name": "Value" }
1106 }
1107 ],
Matthew Bartheff46602022-02-11 14:10:58 -06001108 "state": 74.0,
1109 "delta": 100
Matthew Barth6f63b2f2021-12-06 21:08:13 -06001110 },
1111 {
1112 "name": "set_net_increase_target",
1113 "groups": [
1114 {
1115 "name": "dram and external memory buffer temps",
1116 "interface": "xyz.openbmc_project.Sensor.Value",
1117 "property": { "name": "Value" }
1118 }
1119 ],
1120 "state": 55.0,
1121 "delta": 200
1122 },
1123 {
1124 "name": "set_net_increase_target",
1125 "groups": [
1126 {
1127 "name": "external memory buffer temps",
1128 "interface": "xyz.openbmc_project.Sensor.Value",
1129 "property": { "name": "Value" }
1130 }
1131 ],
1132 "state": 55.0,
1133 "delta": 200
1134 },
1135 {
1136 "name": "set_net_increase_target",
1137 "groups": [
1138 {
1139 "name": "vdd vrm temps",
1140 "interface": "xyz.openbmc_project.Sensor.Value",
1141 "property": { "name": "Value" }
1142 }
1143 ],
1144 "state": 82.0,
1145 "delta": 300
Matthew Barthb253cbd2021-12-06 21:47:50 -06001146 },
1147 {
Matthew Barthb28663e2021-12-08 21:52:00 -06001148 "name": "set_net_increase_target",
1149 "groups": [
1150 {
1151 "name": "nvme temps",
1152 "interface": "xyz.openbmc_project.Sensor.Value",
1153 "property": { "name": "Value" }
1154 }
1155 ],
1156 "state": 58.0,
1157 "delta": 200
1158 },
1159 {
Matthew Barth075fcd82021-12-13 20:56:49 -06001160 "name": "set_net_increase_target",
1161 "groups": [
1162 {
1163 "name": "planar temps",
1164 "interface": "xyz.openbmc_project.Sensor.Value",
1165 "property": { "name": "Value" }
1166 }
1167 ],
1168 "state": 65.0,
1169 "delta": 255
1170 },
1171 {
Matt Spinler1006fe32022-01-10 14:06:22 -06001172 "name": "set_net_increase_target",
1173 "groups": [
1174 {
1175 "name": "flett temps",
1176 "interface": "xyz.openbmc_project.Sensor.Value",
1177 "property": { "name": "Value" }
1178 }
1179 ],
Matthew Bartheff46602022-02-11 14:10:58 -06001180 "state": 80.0,
1181 "delta": 200
Matt Spinler1006fe32022-01-10 14:06:22 -06001182 },
1183 {
1184 "name": "set_net_increase_target",
1185 "groups": [
1186 {
Matthew Barth48b74802022-01-14 15:25:24 -06001187 "name": "pcie cable card temps",
Matt Spinler1006fe32022-01-10 14:06:22 -06001188 "interface": "xyz.openbmc_project.Sensor.Value",
1189 "property": { "name": "Value" }
1190 }
1191 ],
1192 "state": 70.0,
1193 "delta": 255
1194 },
1195 {
Matthew Barthb253cbd2021-12-06 21:47:50 -06001196 "name": "set_net_decrease_target",
1197 "groups": [
1198 {
1199 "name": "proc0 core temps",
1200 "interface": "xyz.openbmc_project.Sensor.Value",
1201 "property": { "name": "Value" }
1202 }
1203 ],
1204 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
Matthew Bartheff46602022-02-11 14:10:58 -06001205 "delta": 50
Matthew Barthb253cbd2021-12-06 21:47:50 -06001206 },
1207 {
1208 "name": "set_net_decrease_target",
1209 "groups": [
1210 {
1211 "name": "proc1 core temps",
1212 "interface": "xyz.openbmc_project.Sensor.Value",
1213 "property": { "name": "Value" }
1214 }
1215 ],
1216 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
Matthew Bartheff46602022-02-11 14:10:58 -06001217 "delta": 50
Matthew Barthb253cbd2021-12-06 21:47:50 -06001218 },
1219 {
1220 "name": "set_net_decrease_target",
1221 "groups": [
1222 {
1223 "name": "proc2 core temps",
1224 "interface": "xyz.openbmc_project.Sensor.Value",
1225 "property": { "name": "Value" }
1226 }
1227 ],
1228 "state_parameter_name": "proc_2_core_dvfs_decrease_temp",
Matthew Bartheff46602022-02-11 14:10:58 -06001229 "delta": 50
Matthew Barthb253cbd2021-12-06 21:47:50 -06001230 },
1231 {
1232 "name": "set_net_decrease_target",
1233 "groups": [
1234 {
1235 "name": "proc3 core temps",
1236 "interface": "xyz.openbmc_project.Sensor.Value",
1237 "property": { "name": "Value" }
1238 }
1239 ],
1240 "state_parameter_name": "proc_3_core_dvfs_decrease_temp",
Matthew Bartheff46602022-02-11 14:10:58 -06001241 "delta": 50
Matthew Barthb253cbd2021-12-06 21:47:50 -06001242 },
1243 {
1244 "name": "set_net_decrease_target",
1245 "groups": [
1246 {
1247 "name": "proc0 ioring temp",
1248 "interface": "xyz.openbmc_project.Sensor.Value",
1249 "property": { "name": "Value" }
1250 }
1251 ],
1252 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
Matthew Bartheff46602022-02-11 14:10:58 -06001253 "delta": 50
Matthew Barthb253cbd2021-12-06 21:47:50 -06001254 },
1255 {
1256 "name": "set_net_decrease_target",
1257 "groups": [
1258 {
1259 "name": "proc1 ioring temp",
1260 "interface": "xyz.openbmc_project.Sensor.Value",
1261 "property": { "name": "Value" }
1262 }
1263 ],
1264 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
Matthew Bartheff46602022-02-11 14:10:58 -06001265 "delta": 50
Matthew Barthb253cbd2021-12-06 21:47:50 -06001266 },
1267 {
1268 "name": "set_net_decrease_target",
1269 "groups": [
1270 {
1271 "name": "proc2 ioring temp",
1272 "interface": "xyz.openbmc_project.Sensor.Value",
1273 "property": { "name": "Value" }
1274 }
1275 ],
1276 "state_parameter_name": "proc_2_ioring_dvfs_decrease_temp",
Matthew Bartheff46602022-02-11 14:10:58 -06001277 "delta": 50
Matthew Barthb253cbd2021-12-06 21:47:50 -06001278 },
1279 {
1280 "name": "set_net_decrease_target",
1281 "groups": [
1282 {
1283 "name": "proc3 ioring temp",
1284 "interface": "xyz.openbmc_project.Sensor.Value",
1285 "property": { "name": "Value" }
1286 }
1287 ],
1288 "state_parameter_name": "proc_3_ioring_dvfs_decrease_temp",
Matthew Bartheff46602022-02-11 14:10:58 -06001289 "delta": 50
Matthew Barthb253cbd2021-12-06 21:47:50 -06001290 },
1291 {
1292 "name": "set_net_decrease_target",
1293 "groups": [
1294 {
1295 "name": "dram temps",
1296 "interface": "xyz.openbmc_project.Sensor.Value",
1297 "property": { "name": "Value" }
1298 }
1299 ],
Matthew Barthb12f9062022-03-24 08:59:45 -05001300 "state": 65.0,
Matthew Barthb253cbd2021-12-06 21:47:50 -06001301 "delta": 40
1302 },
1303 {
1304 "name": "set_net_decrease_target",
1305 "groups": [
1306 {
1307 "name": "pmic temps",
1308 "interface": "xyz.openbmc_project.Sensor.Value",
1309 "property": { "name": "Value" }
1310 }
1311 ],
Matthew Barthb12f9062022-03-24 08:59:45 -05001312 "state": 65.0,
Matthew Barthb253cbd2021-12-06 21:47:50 -06001313 "delta": 40
1314 },
1315 {
1316 "name": "set_net_decrease_target",
1317 "groups": [
1318 {
1319 "name": "internal memory buffer temps",
1320 "interface": "xyz.openbmc_project.Sensor.Value",
1321 "property": { "name": "Value" }
1322 }
1323 ],
Matthew Bartheff46602022-02-11 14:10:58 -06001324 "state": 71.0,
Matthew Barthb253cbd2021-12-06 21:47:50 -06001325 "delta": 40
1326 },
1327 {
1328 "name": "set_net_decrease_target",
1329 "groups": [
1330 {
1331 "name": "dram and external memory buffer temps",
1332 "interface": "xyz.openbmc_project.Sensor.Value",
1333 "property": { "name": "Value" }
1334 }
1335 ],
1336 "state": 52.0,
1337 "delta": 40
1338 },
1339 {
1340 "name": "set_net_decrease_target",
1341 "groups": [
1342 {
1343 "name": "external memory buffer temps",
1344 "interface": "xyz.openbmc_project.Sensor.Value",
1345 "property": { "name": "Value" }
1346 }
1347 ],
1348 "state": 52.0,
1349 "delta": 40
1350 },
1351 {
1352 "name": "set_net_decrease_target",
1353 "groups": [
1354 {
1355 "name": "vdd vrm temps",
1356 "interface": "xyz.openbmc_project.Sensor.Value",
1357 "property": { "name": "Value" }
1358 }
1359 ],
1360 "state": 79.0,
1361 "delta": 30
Matthew Barth85080982021-12-08 22:27:29 -06001362 },
1363 {
1364 "name": "set_net_decrease_target",
1365 "groups": [
1366 {
1367 "name": "nvme temps",
1368 "interface": "xyz.openbmc_project.Sensor.Value",
1369 "property": { "name": "Value" }
1370 }
1371 ],
1372 "state": 55.0,
1373 "delta": 40
Matthew Barth075fcd82021-12-13 20:56:49 -06001374 },
1375 {
1376 "name": "set_net_decrease_target",
1377 "groups": [
1378 {
1379 "name": "planar temps",
1380 "interface": "xyz.openbmc_project.Sensor.Value",
1381 "property": { "name": "Value" }
1382 }
1383 ],
1384 "state": 60.0,
1385 "delta": 80
Matt Spinler1006fe32022-01-10 14:06:22 -06001386 },
1387 {
1388 "name": "set_net_decrease_target",
1389 "groups": [
1390 {
1391 "name": "flett temps",
1392 "interface": "xyz.openbmc_project.Sensor.Value",
1393 "property": { "name": "Value" }
1394 }
1395 ],
Matthew Bartheff46602022-02-11 14:10:58 -06001396 "state": 75.0,
Matt Spinler1006fe32022-01-10 14:06:22 -06001397 "delta": 80
1398 },
1399 {
1400 "name": "set_net_decrease_target",
1401 "groups": [
1402 {
Matthew Barth48b74802022-01-14 15:25:24 -06001403 "name": "pcie cable card temps",
Matt Spinler1006fe32022-01-10 14:06:22 -06001404 "interface": "xyz.openbmc_project.Sensor.Value",
1405 "property": { "name": "Value" }
1406 }
1407 ],
1408 "state": 65.0,
1409 "delta": 80
Matthew Barth6f63b2f2021-12-06 21:08:13 -06001410 }
Matthew Barthb6f10352021-12-02 17:42:49 -06001411 ]
Matthew Barthcf34be22021-12-08 22:53:48 -06001412 },
1413 {
1414 // Remove NVMe temperature objects from cache when they are removed from
1415 // dbus. There's no need to react to their removal.
1416 "name": "remove nvme objects",
1417 "groups": [
1418 {
1419 "name": "nvme temps",
1420 "interface": "xyz.openbmc_project.Sensor.Value",
1421 "property": { "name": "Value" }
Matt Spinler0461bd22022-04-25 16:24:23 -05001422 },
1423 {
1424 "name": "nvme temps",
1425 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
1426 "property": { "name": "Functional" }
Matthew Barthcf34be22021-12-08 22:53:48 -06001427 }
1428 ],
1429 "triggers": [
1430 {
1431 "class": "signal",
1432 "signal": "interfaces_removed"
1433 }
1434 ]
Matt Spinlerc02a8262022-01-05 15:12:10 -06001435 },
1436 {
1437 "name": "set pcie floor index",
1438 "groups": [
1439 {
1440 "name": "pcie slots",
1441 "interface": "xyz.openbmc_project.State.Decorator.PowerState",
1442 "property": {
1443 "name": "PowerState"
1444 }
1445 },
1446 {
1447 "name": "pcie cards",
1448 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1449 "property": {
1450 "name": "Function0DeviceId"
1451 }
1452 },
1453 {
1454 "name": "pcie cards",
1455 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1456 "property": {
1457 "name": "Function0VendorId"
1458 }
1459 },
1460 {
1461 "name": "pcie cards",
1462 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1463 "property": {
1464 "name": "Function0SubsystemId"
1465 }
1466 },
1467 {
1468 "name": "pcie cards",
1469 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
1470 "property": {
1471 "name": "Function0SubsystemVendorId"
1472 }
1473 }
1474 ],
1475 "triggers": [
1476 {
1477 "class": "init",
1478 "method": "get_properties"
1479 },
1480 {
1481 "class": "signal",
1482 "signal": "properties_changed"
1483 },
1484 {
1485 "class": "signal",
1486 "signal": "interfaces_added"
1487 }
1488 ],
1489 "actions": [
1490 {
1491 "name": "pcie_card_floors",
1492 "use_config_specific_files": true,
1493 "settle_time": 2
1494 }
1495 ]
1496 },
1497 {
Matthew Barth8b93d342022-03-10 10:22:04 -06001498 "name": "Set altitude offset parameter",
1499 "groups": [
1500 {
1501 "name": "altitude",
1502 "interface": "xyz.openbmc_project.Sensor.Value",
1503 "property": { "name": "Value" }
1504 }
1505 ],
1506 "triggers": [
1507 {
1508 "class": "init",
1509 "method": "get_properties"
1510 },
1511 {
1512 "class": "signal",
1513 "signal": "interfaces_added"
1514 },
1515 {
1516 // Refresh altitude every 24hrs
1517 "class": "timer",
1518 "type": "repeating",
1519 "interval": 86400000000,
1520 "preload_groups": true
1521 }
1522 ],
1523 "actions": [
1524 {
1525 "name": "set_parameter_from_group_max",
1526 "parameter_name": "ambient_20_altitude_offset",
1527 "modifier": {
1528 "operator": "less_than",
Matthew Barth9569ee42022-03-11 15:39:49 -06001529 "default_value": 10000,
Matthew Barth8b93d342022-03-10 10:22:04 -06001530 "value": [
1531 { "arg_value": 500, "parameter_value": 0 },
Matthew Barth9569ee42022-03-11 15:39:49 -06001532 { "arg_value": 1000, "parameter_value": 700 },
Matthew Barth8b93d342022-03-10 10:22:04 -06001533 { "arg_value": 1500, "parameter_value": 1600 },
Matthew Barth9569ee42022-03-11 15:39:49 -06001534 { "arg_value": 2000, "parameter_value": 2300 },
Matthew Barth8b93d342022-03-10 10:22:04 -06001535 { "arg_value": 2500, "parameter_value": 3200 },
Matthew Barth9569ee42022-03-11 15:39:49 -06001536 { "arg_value": 3300, "parameter_value": 4000 }
Matthew Barth8b93d342022-03-10 10:22:04 -06001537 ]
1538 }
1539 },
1540 {
1541 "name": "set_parameter_from_group_max",
1542 "parameter_name": "ambient_25_altitude_offset",
1543 "modifier": {
1544 "operator": "less_than",
Matthew Barth9569ee42022-03-11 15:39:49 -06001545 "default_value": 10000,
Matthew Barth8b93d342022-03-10 10:22:04 -06001546 "value": [
1547 { "arg_value": 500, "parameter_value": 0 },
Matthew Barth9569ee42022-03-11 15:39:49 -06001548 { "arg_value": 1000, "parameter_value": 1000 },
1549 { "arg_value": 1500, "parameter_value": 2100 },
1550 { "arg_value": 2000, "parameter_value": 3100 },
1551 { "arg_value": 2500, "parameter_value": 4100 },
1552 { "arg_value": 3300, "parameter_value": 4900 }
Matthew Barth8b93d342022-03-10 10:22:04 -06001553 ]
1554 }
1555 },
1556 {
1557 "name": "set_parameter_from_group_max",
1558 "parameter_name": "ambient_30_altitude_offset",
1559 "modifier": {
1560 "operator": "less_than",
Matthew Barth9569ee42022-03-11 15:39:49 -06001561 "default_value": 10000,
Matthew Barth8b93d342022-03-10 10:22:04 -06001562 "value": [
1563 { "arg_value": 500, "parameter_value": 0 },
Matthew Barth9569ee42022-03-11 15:39:49 -06001564 { "arg_value": 1000, "parameter_value": 1000 },
1565 { "arg_value": 1500, "parameter_value": 2100 },
1566 { "arg_value": 2000, "parameter_value": 3200 },
1567 { "arg_value": 2500, "parameter_value": 4000 },
1568 { "arg_value": 3300, "parameter_value": 4800 }
Matthew Barth8b93d342022-03-10 10:22:04 -06001569 ]
1570 }
1571 },
1572 {
1573 "name": "set_parameter_from_group_max",
1574 "parameter_name": "ambient_35_altitude_offset",
1575 "modifier": {
1576 "operator": "less_than",
Matthew Barth9569ee42022-03-11 15:39:49 -06001577 "default_value": 10000,
Matthew Barth8b93d342022-03-10 10:22:04 -06001578 "value": [
1579 { "arg_value": 500, "parameter_value": 0 },
1580 { "arg_value": 1000, "parameter_value": 900 },
Matthew Barth9569ee42022-03-11 15:39:49 -06001581 { "arg_value": 1500, "parameter_value": 1700 },
1582 { "arg_value": 2000, "parameter_value": 2500 },
1583 { "arg_value": 2500, "parameter_value": 3400 },
1584 { "arg_value": 3300, "parameter_value": 4200 }
Matthew Barth8b93d342022-03-10 10:22:04 -06001585 ]
1586 }
1587 },
1588 {
1589 "name": "set_parameter_from_group_max",
1590 "parameter_name": "ambient_40_altitude_offset",
1591 "modifier": {
1592 "operator": "less_than",
Matthew Barth9569ee42022-03-11 15:39:49 -06001593 "default_value": 10000,
Matthew Barth8b93d342022-03-10 10:22:04 -06001594 "value": [
1595 { "arg_value": 500, "parameter_value": 0 },
Matthew Barth9569ee42022-03-11 15:39:49 -06001596 { "arg_value": 1000, "parameter_value": 1000 },
1597 { "arg_value": 1500, "parameter_value": 1900 },
1598 { "arg_value": 2000, "parameter_value": 2800 },
1599 { "arg_value": 2500, "parameter_value": 3700 },
1600 { "arg_value": 3300, "parameter_value": 4500 }
Matthew Barth8b93d342022-03-10 10:22:04 -06001601 ]
1602 }
1603 }
1604 ]
1605 },
1606 {
Matt Spinlerc02a8262022-01-05 15:12:10 -06001607 "name": "Fan floors",
1608 "groups": [
1609 {
Matt Spinlerc02a8262022-01-05 15:12:10 -06001610 "name": "ambient temp",
1611 "interface": "xyz.openbmc_project.Sensor.Value",
1612 "property": { "name": "Value" }
1613 }
1614 ],
1615 "triggers": [
1616 {
1617 "class": "init",
1618 "method": "get_properties"
1619 },
1620 {
1621 "class": "signal",
1622 "signal": "properties_changed"
1623 },
1624 {
1625 "class": "signal",
1626 "signal": "interfaces_added"
Matt Spinler3a53f2c2022-02-18 09:24:05 -06001627 },
1628 {
1629 "class": "parameter",
1630 "parameter": "pcie_floor_index"
Matthew Barth8b93d342022-03-10 10:22:04 -06001631 },
1632 {
1633 "class": "parameter",
1634 "parameter": "ambient_20_altitude_offset"
1635 },
1636 {
1637 "class": "parameter",
1638 "parameter": "ambient_25_altitude_offset"
1639 },
1640 {
1641 "class": "parameter",
1642 "parameter": "ambient_30_altitude_offset"
1643 },
1644 {
1645 "class": "parameter",
1646 "parameter": "ambient_35_altitude_offset"
1647 },
1648 {
1649 "class": "parameter",
1650 "parameter": "ambient_40_altitude_offset"
Matt Spinlerc02a8262022-01-05 15:12:10 -06001651 }
1652 ],
1653 "actions": [
1654 {
1655 "name": "mapped_floor",
1656 "key_group": "ambient temp",
1657 "fan_floors": [
1658 {
1659 // Entry valid for temps < 20
1660 "key": 20,
Matthew Barth9569ee42022-03-11 15:39:49 -06001661 "default_floor": 5400,
Matthew Barth8b93d342022-03-10 10:22:04 -06001662 "floor_offset_parameter": "ambient_20_altitude_offset",
Matt Spinlerc02a8262022-01-05 15:12:10 -06001663 "floors": [
1664 {
1665 "parameter": "pcie_floor_index",
1666 "floors": [
Matthew Barth9569ee42022-03-11 15:39:49 -06001667 { "value": 1, "floor": 5600 },
1668 { "value": 2, "floor": 9000 },
1669 { "value": 3, "floor": 9000 },
1670 { "value": 4, "floor": 9200 },
1671 { "value": 5, "floor": 10600 }
Matt Spinlerc02a8262022-01-05 15:12:10 -06001672 ]
Matt Spinlerc02a8262022-01-05 15:12:10 -06001673 }
1674 ]
1675 },
1676 {
1677 // Entry valid for temps < 25
1678 "key": 25,
Matthew Barth9569ee42022-03-11 15:39:49 -06001679 "default_floor": 7300,
Matthew Barth8b93d342022-03-10 10:22:04 -06001680 "floor_offset_parameter": "ambient_25_altitude_offset",
Matt Spinlerc02a8262022-01-05 15:12:10 -06001681 "floors": [
1682 {
1683 "parameter": "pcie_floor_index",
1684 "floors": [
Matthew Barth9569ee42022-03-11 15:39:49 -06001685 { "value": 1, "floor": 7800 },
1686 { "value": 2, "floor": 10700 },
1687 { "value": 3, "floor": 11300 },
1688 { "value": 4, "floor": 12700 },
1689 { "value": 5, "floor": 13900 }
Matt Spinlerc02a8262022-01-05 15:12:10 -06001690 ]
Matt Spinlerc02a8262022-01-05 15:12:10 -06001691 }
1692 ]
1693 },
1694 {
1695 // Entry valid for temps < 30
1696 "key": 30,
Matthew Barth9569ee42022-03-11 15:39:49 -06001697 "default_floor": 9100,
Matthew Barth8b93d342022-03-10 10:22:04 -06001698 "floor_offset_parameter": "ambient_30_altitude_offset",
Matt Spinlerc02a8262022-01-05 15:12:10 -06001699 "floors": [
1700 {
1701 "parameter": "pcie_floor_index",
1702 "floors": [
Matthew Barth9569ee42022-03-11 15:39:49 -06001703 { "value": 1, "floor": 10300 },
1704 { "value": 2, "floor": 12100 },
1705 { "value": 3, "floor": 14400 },
1706 { "value": 4, "floor": 16300 },
1707 { "value": 5, "floor": 17200 }
Matt Spinlerc02a8262022-01-05 15:12:10 -06001708 ]
Matt Spinlerc02a8262022-01-05 15:12:10 -06001709 }
1710 ]
1711 },
1712 {
1713 // Entry valid for temps < 35
1714 "key": 35,
Matthew Barth9569ee42022-03-11 15:39:49 -06001715 "default_floor": 10800,
Matthew Barth8b93d342022-03-10 10:22:04 -06001716 "floor_offset_parameter": "ambient_35_altitude_offset",
Matt Spinlerc02a8262022-01-05 15:12:10 -06001717 "floors": [
1718 {
1719 "parameter": "pcie_floor_index",
1720 "floors": [
Matthew Barth9569ee42022-03-11 15:39:49 -06001721 { "value": 1, "floor": 12700 },
1722 { "value": 2, "floor": 13500 },
1723 { "value": 3, "floor": 17400 },
Matthew Bartheff46602022-02-11 14:10:58 -06001724 { "value": 4, "floor": 18000 },
1725 { "value": 5, "floor": 18000 }
Matt Spinlerc02a8262022-01-05 15:12:10 -06001726 ]
Matthew Bartheff46602022-02-11 14:10:58 -06001727 }
1728 ]
1729 },
1730 {
1731 // Entry valid for temps < 40
1732 "key": 40,
Matthew Barth9569ee42022-03-11 15:39:49 -06001733 "default_floor": 12600,
Matthew Barth8b93d342022-03-10 10:22:04 -06001734 "floor_offset_parameter": "ambient_40_altitude_offset",
Matthew Bartheff46602022-02-11 14:10:58 -06001735 "floors": [
1736 {
1737 "parameter": "pcie_floor_index",
1738 "floors": [
Matthew Barth9569ee42022-03-11 15:39:49 -06001739 { "value": 1, "floor": 15000 },
1740 { "value": 2, "floor": 15500 },
Matthew Bartheff46602022-02-11 14:10:58 -06001741 { "value": 3, "floor": 18000 },
1742 { "value": 4, "floor": 18000 },
1743 { "value": 5, "floor": 18000 }
1744 ]
Matt Spinlerc02a8262022-01-05 15:12:10 -06001745 }
1746 ]
1747 }
1748 ]
1749 }
1750 ]
Matt Spinler323694a2021-11-11 16:03:18 -06001751 }
Matthew Barthf0f213c2021-10-19 13:32:31 -05001752]