blob: 5671809265b7dbd87f3d52c6f6c0d8b61445cc22 [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,
Matthew Barthb20f2fe2022-02-11 15:29:29 -060027 "target": 10400
Matthew Barthb477a562021-10-19 14:39:19 -050028 }
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,
Matthew Barthb20f2fe2022-02-11 15:29:29 -060071 "target": 10400
Matthew Barthdc593cb2021-10-19 14:43:41 -050072 }
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" }
Matthew Barth86a484f2022-01-14 13:06:50 -060089 },
90 {
91 "name": "nvme temps",
92 "interface": "xyz.openbmc_project.Sensor.Value",
93 "property": { "name": "Value" }
94 },
95 {
96 "name": "planar temps",
97 "interface": "xyz.openbmc_project.Sensor.Value",
98 "property": { "name": "Value" }
99 },
100 {
101 "name": "flett temps",
102 "interface": "xyz.openbmc_project.Sensor.Value",
103 "property": { "name": "Value" }
104 },
105 {
Matthew Barth48b74802022-01-14 15:25:24 -0600106 "name": "pcie cable card temps",
Matthew Barth86a484f2022-01-14 13:06:50 -0600107 "interface": "xyz.openbmc_project.Sensor.Value",
108 "property": { "name": "Value" }
109 },
110 {
111 "name": "ambient temp",
112 "interface": "xyz.openbmc_project.Sensor.Value",
113 "property": { "name": "Value" }
Matthew Barth09b09e52021-10-28 15:29:13 -0500114 }
115 ],
116 "triggers": [
117 {
118 "class": "init",
119 "method": "name_has_owner"
120 },
121 {
122 "class": "signal",
123 "signal": "name_owner_changed"
124 }
125 ],
126 "actions": [
127 {
128 "name": "call_actions_based_on_timer",
129 "timer": {
130 "interval": 5000000,
131 "type": "oneshot"
132 },
133 "actions": [
134 {
135 "name": "set_target_on_missing_owner",
136 "groups": [
137 {
138 "name": "fan inventory",
139 "interface": "xyz.openbmc_project.Inventory.Item",
140 "property": { "name": "Present" }
141 },
142 {
143 "name": "occ objects",
144 "interface": "org.open_power.OCC.Status",
145 "property": { "name": "OccActive" }
Matthew Barth86a484f2022-01-14 13:06:50 -0600146 },
147 {
148 "name": "nvme temps",
149 "interface": "xyz.openbmc_project.Sensor.Value",
150 "property": { "name": "Value" }
151 },
152 {
153 "name": "planar temps",
154 "interface": "xyz.openbmc_project.Sensor.Value",
155 "property": { "name": "Value" }
156 },
157 {
158 "name": "flett temps",
159 "interface": "xyz.openbmc_project.Sensor.Value",
160 "property": { "name": "Value" }
161 },
162 {
Matthew Barth48b74802022-01-14 15:25:24 -0600163 "name": "pcie cable card temps",
Matthew Barth86a484f2022-01-14 13:06:50 -0600164 "interface": "xyz.openbmc_project.Sensor.Value",
165 "property": { "name": "Value" }
166 },
167 {
168 "name": "ambient temp",
169 "interface": "xyz.openbmc_project.Sensor.Value",
170 "property": { "name": "Value" }
Matthew Barth09b09e52021-10-28 15:29:13 -0500171 }
172 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600173 "target": 10400
Matthew Barth09b09e52021-10-28 15:29:13 -0500174 }
175 ]
176 }
177 ]
Matt Spinler5934f092021-11-03 14:30:28 -0500178 },
179 {
180 // Set a fan floor if an OCC isn't active
181 "name": "Non-active OCC(s)",
182 "groups": [
183 {
184 "name": "occ objects",
185 "interface": "org.open_power.OCC.Status",
186 "property": {
187 "name": "OccActive"
188 }
189 }
190 ],
191 "triggers": [
192 {
193 "class": "signal",
194 "signal": "properties_changed"
195 },
196 {
197 "class": "signal",
198 "signal": "interfaces_added"
199 },
200 {
201 "class": "init",
202 "method": "get_properties"
203 }
204 ],
205 "actions": [
206 {
207 "name": "count_state_floor",
208 "count": 1,
209 "state": false,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600210 "floor": 10400
Matt Spinler5934f092021-11-03 14:30:28 -0500211 }
212 ]
Matt Spinler323694a2021-11-11 16:03:18 -0600213 },
214 {
Matthew Barth4172d8d2022-01-13 11:31:54 -0600215 // Set a raised fan floor when any temperature sensor is nonfunctional
216 "name": "Nonfunctional temperature sensors",
Matthew Barth39925fb2022-01-12 10:45:59 -0600217 "groups": [
218 {
219 "name": "proc0 core temps",
220 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
221 "property": { "name": "Functional" }
222 },
223 {
224 "name": "proc1 core temps",
225 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
226 "property": { "name": "Functional" }
227 },
228 {
229 "name": "proc0 ioring temp",
230 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
231 "property": { "name": "Functional" }
232 },
233 {
234 "name": "proc1 ioring temp",
235 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
236 "property": { "name": "Functional" }
237 },
238 {
239 "name": "dram temps",
240 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
241 "property": { "name": "Functional" }
242 },
243 {
244 "name": "pmic temps",
245 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
246 "property": { "name": "Functional" }
247 },
248 {
249 "name": "internal memory buffer temps",
250 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
251 "property": { "name": "Functional" }
252 },
253 {
254 "name": "dram and external memory buffer temps",
255 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
256 "property": { "name": "Functional" }
257 },
258 {
259 "name": "external memory buffer temps",
260 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
261 "property": { "name": "Functional" }
262 },
263 {
264 "name": "vdd vrm temps",
265 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
266 "property": { "name": "Functional" }
Matthew Barth4172d8d2022-01-13 11:31:54 -0600267 },
268 {
269 "name": "nvme temps",
270 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
271 "property": { "name": "Functional" }
272 },
273 {
274 "name": "planar temps",
275 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
276 "property": { "name": "Functional" }
277 },
278 {
279 "name": "flett temps",
280 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
281 "property": { "name": "Functional" }
282 },
283 {
Matthew Barth48b74802022-01-14 15:25:24 -0600284 "name": "pcie cable card temps",
Matthew Barth4172d8d2022-01-13 11:31:54 -0600285 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
286 "property": { "name": "Functional" }
Matthew Barth8d6cf062022-01-13 14:02:20 -0600287 },
288 {
289 "name": "ambient temp",
290 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
291 "property": { "name": "Functional" }
Matthew Barth39925fb2022-01-12 10:45:59 -0600292 }
293 ],
294 "triggers": [
295 {
296 "class": "signal",
297 "signal": "properties_changed"
298 },
299 {
300 "class": "signal",
301 "signal": "interfaces_added"
302 },
303 {
Matt Spinler0461bd22022-04-25 16:24:23 -0500304 "class": "signal",
305 "signal": "interfaces_removed"
306 },
307 {
Matthew Barth39925fb2022-01-12 10:45:59 -0600308 "class": "init",
309 "method": "get_properties"
310 }
311 ],
312 "actions": [
313 {
314 "name": "count_state_floor",
315 "count": 1,
316 "state": false,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600317 "floor": 10400
Matthew Barth39925fb2022-01-12 10:45:59 -0600318 }
319 ]
320 },
321 {
Matt Spinler323694a2021-11-11 16:03:18 -0600322 "name": "Set Proc 0 Core DVFS parameter",
323 "groups": [
324 {
325 "name": "proc 0 core dvfs temp",
326 "interface": "xyz.openbmc_project.Sensor.Value",
327 "property": { "name": "Value" }
328 }
329 ],
330 "triggers": [
331 {
332 "class": "init",
333 "method": "get_properties"
334 },
335 {
336 "class": "signal",
337 "signal": "interfaces_added"
338 },
339 {
340 "class": "signal",
341 "signal": "properties_changed"
342 }
343 ],
344 "actions": [
345 {
346 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600347 "parameter_name": "proc_0_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600348 "modifier": {
349 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600350 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600351 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600352 },
353 {
354 "name": "set_parameter_from_group_max",
355 "parameter_name": "proc_0_core_dvfs_decrease_temp",
356 "modifier": {
357 "operator": "minus",
358 "value": 13
359 }
Matt Spinler323694a2021-11-11 16:03:18 -0600360 }
361 ]
362 },
363 {
364 "name": "Set Proc 1 Core DVFS parameter",
365 "groups": [
366 {
367 "name": "proc 1 core dvfs temp",
368 "interface": "xyz.openbmc_project.Sensor.Value",
369 "property": { "name": "Value" }
370 }
371 ],
372 "triggers": [
373 {
374 "class": "init",
375 "method": "get_properties"
376 },
377 {
378 "class": "signal",
379 "signal": "interfaces_added"
380 },
381 {
382 "class": "signal",
383 "signal": "properties_changed"
384 }
385 ],
386 "actions": [
387 {
388 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600389 "parameter_name": "proc_1_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600390 "modifier": {
391 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600392 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600393 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600394 },
395 {
396 "name": "set_parameter_from_group_max",
397 "parameter_name": "proc_1_core_dvfs_decrease_temp",
398 "modifier": {
399 "operator": "minus",
400 "value": 13
401 }
Matt Spinler323694a2021-11-11 16:03:18 -0600402 }
403 ]
404 },
405 {
406 "name": "Set Proc 0 IO Ring DVFS parameter",
407 "groups": [
408 {
409 "name": "proc 0 ioring dvfs temp",
410 "interface": "xyz.openbmc_project.Sensor.Value",
411 "property": { "name": "Value" }
412 }
413 ],
414 "triggers": [
415 {
416 "class": "init",
417 "method": "get_properties"
418 },
419 {
420 "class": "signal",
421 "signal": "interfaces_added"
422 },
423 {
424 "class": "signal",
425 "signal": "properties_changed"
426 }
427 ],
428 "actions": [
429 {
430 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600431 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600432 "modifier": {
433 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600434 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600435 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600436 },
437 {
438 "name": "set_parameter_from_group_max",
439 "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
440 "modifier": {
441 "operator": "minus",
442 "value": 13
443 }
Matt Spinler323694a2021-11-11 16:03:18 -0600444 }
445 ]
446 },
447 {
448 "name": "Set Proc 1 IO Ring DVFS parameter",
449 "groups": [
450 {
451 "name": "proc 1 ioring dvfs temp",
452 "interface": "xyz.openbmc_project.Sensor.Value",
453 "property": { "name": "Value" }
454 }
455 ],
456 "triggers": [
457 {
458 "class": "init",
459 "method": "get_properties"
460 },
461 {
462 "class": "signal",
463 "signal": "interfaces_added"
464 },
465 {
466 "class": "signal",
467 "signal": "properties_changed"
468 }
469 ],
470 "actions": [
471 {
472 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600473 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600474 "modifier": {
475 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600476 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600477 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600478 },
479 {
480 "name": "set_parameter_from_group_max",
481 "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
482 "modifier": {
483 "operator": "minus",
484 "value": 13
485 }
Matt Spinler323694a2021-11-11 16:03:18 -0600486 }
487 ]
Matthew Barthb6f10352021-12-02 17:42:49 -0600488 },
489 {
490 // Collect group temperatures each iteration the repeating timer expires
491 "name": "Fan control timer loop",
492 "groups": [
493 {
494 "name": "proc0 core temps",
495 "interface": "xyz.openbmc_project.Sensor.Value",
496 "property": { "name": "Value" }
497 },
498 {
499 "name": "proc1 core temps",
500 "interface": "xyz.openbmc_project.Sensor.Value",
501 "property": { "name": "Value" }
502 },
503 {
504 "name": "proc0 ioring temp",
505 "interface": "xyz.openbmc_project.Sensor.Value",
506 "property": { "name": "Value" }
507 },
508 {
509 "name": "proc1 ioring temp",
510 "interface": "xyz.openbmc_project.Sensor.Value",
511 "property": { "name": "Value" }
512 },
513 {
514 "name": "dram temps",
515 "interface": "xyz.openbmc_project.Sensor.Value",
516 "property": { "name": "Value" }
517 },
518 {
519 "name": "pmic temps",
520 "interface": "xyz.openbmc_project.Sensor.Value",
521 "property": { "name": "Value" }
522 },
523 {
524 "name": "internal memory buffer temps",
525 "interface": "xyz.openbmc_project.Sensor.Value",
526 "property": { "name": "Value" }
527 },
528 {
529 "name": "dram and external memory buffer temps",
530 "interface": "xyz.openbmc_project.Sensor.Value",
531 "property": { "name": "Value" }
532 },
533 {
534 "name": "external memory buffer temps",
535 "interface": "xyz.openbmc_project.Sensor.Value",
536 "property": { "name": "Value" }
537 },
538 {
539 "name": "vdd vrm temps",
540 "interface": "xyz.openbmc_project.Sensor.Value",
541 "property": { "name": "Value" }
Matthew Barth23a7b2b2022-01-11 15:22:55 -0600542 },
543 {
544 "name": "nvme temps",
545 "interface": "xyz.openbmc_project.Sensor.Value",
546 "property": { "name": "Value" }
547 },
548 {
549 "name": "planar temps",
550 "interface": "xyz.openbmc_project.Sensor.Value",
551 "property": { "name": "Value" }
Matt Spinler9b7fc002022-01-11 15:35:29 -0600552 },
553 {
554 "name": "flett temps",
555 "interface": "xyz.openbmc_project.Sensor.Value",
556 "property": { "name": "Value" }
557 },
558 {
Matthew Barth48b74802022-01-14 15:25:24 -0600559 "name": "pcie cable card temps",
Matt Spinler9b7fc002022-01-11 15:35:29 -0600560 "interface": "xyz.openbmc_project.Sensor.Value",
561 "property": { "name": "Value" }
Matthew Barthb6f10352021-12-02 17:42:49 -0600562 }
563 ],
564 "triggers": [
565 {
566 "class": "timer",
567 "type": "repeating",
568 "interval": 2000000,
569 "preload_groups": true
570 }
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600571 ],
572 "actions": [
573 {
574 "name": "set_net_increase_target",
575 "groups": [
576 {
577 "name": "proc0 core temps",
578 "interface": "xyz.openbmc_project.Sensor.Value",
579 "property": { "name": "Value" }
580 }
581 ],
582 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
583 "delta": 300
584 },
585 {
586 "name": "set_net_increase_target",
587 "groups": [
588 {
589 "name": "proc1 core temps",
590 "interface": "xyz.openbmc_project.Sensor.Value",
591 "property": { "name": "Value" }
592 }
593 ],
594 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
595 "delta": 300
596 },
597 {
598 "name": "set_net_increase_target",
599 "groups": [
600 {
601 "name": "proc0 ioring temp",
602 "interface": "xyz.openbmc_project.Sensor.Value",
603 "property": { "name": "Value" }
604 }
605 ],
606 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
607 "delta": 300
608 },
609 {
610 "name": "set_net_increase_target",
611 "groups": [
612 {
613 "name": "proc1 ioring temp",
614 "interface": "xyz.openbmc_project.Sensor.Value",
615 "property": { "name": "Value" }
616 }
617 ],
618 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
619 "delta": 300
620 },
621 {
622 "name": "set_net_increase_target",
623 "groups": [
624 {
625 "name": "dram temps",
626 "interface": "xyz.openbmc_project.Sensor.Value",
627 "property": { "name": "Value" }
628 }
629 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600630 "state": 63.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600631 "delta": 200
632 },
633 {
634 "name": "set_net_increase_target",
635 "groups": [
636 {
637 "name": "pmic temps",
638 "interface": "xyz.openbmc_project.Sensor.Value",
639 "property": { "name": "Value" }
640 }
641 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600642 "state": 65.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600643 "delta": 200
644 },
645 {
646 "name": "set_net_increase_target",
647 "groups": [
648 {
649 "name": "internal memory buffer temps",
650 "interface": "xyz.openbmc_project.Sensor.Value",
651 "property": { "name": "Value" }
652 }
653 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600654 "state": 74.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600655 "delta": 200
656 },
657 {
658 "name": "set_net_increase_target",
659 "groups": [
660 {
661 "name": "dram and external memory buffer temps",
662 "interface": "xyz.openbmc_project.Sensor.Value",
663 "property": { "name": "Value" }
664 }
665 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600666 "state": 66.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600667 "delta": 200
668 },
669 {
670 "name": "set_net_increase_target",
671 "groups": [
672 {
673 "name": "external memory buffer temps",
674 "interface": "xyz.openbmc_project.Sensor.Value",
675 "property": { "name": "Value" }
676 }
677 ],
Matthew Barth8fbdba32022-03-11 09:23:55 -0600678 "state": 60.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600679 "delta": 200
680 },
681 {
682 "name": "set_net_increase_target",
683 "groups": [
684 {
685 "name": "vdd vrm temps",
686 "interface": "xyz.openbmc_project.Sensor.Value",
687 "property": { "name": "Value" }
688 }
689 ],
690 "state": 82.0,
691 "delta": 300
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600692 },
693 {
Matthew Barth4a7337e2021-12-08 22:03:48 -0600694 "name": "set_net_increase_target",
695 "groups": [
696 {
697 "name": "nvme temps",
698 "interface": "xyz.openbmc_project.Sensor.Value",
699 "property": { "name": "Value" }
700 }
701 ],
702 "state": 58.0,
703 "delta": 200
704 },
705 {
Matthew Barth075fcd82021-12-13 20:56:49 -0600706 "name": "set_net_increase_target",
707 "groups": [
708 {
709 "name": "planar temps",
710 "interface": "xyz.openbmc_project.Sensor.Value",
711 "property": { "name": "Value" }
712 }
713 ],
714 "state": 65.0,
715 "delta": 255
716 },
717 {
Matt Spinler1006fe32022-01-10 14:06:22 -0600718 "name": "set_net_increase_target",
719 "groups": [
720 {
721 "name": "flett temps",
722 "interface": "xyz.openbmc_project.Sensor.Value",
723 "property": { "name": "Value" }
724 }
725 ],
Matthew Bartha23ac122022-03-02 07:26:25 -0600726 "state": 80.0,
727 "delta": 200
Matt Spinler1006fe32022-01-10 14:06:22 -0600728 },
729 {
730 "name": "set_net_increase_target",
731 "groups": [
732 {
Matthew Barth48b74802022-01-14 15:25:24 -0600733 "name": "pcie cable card temps",
Matt Spinler1006fe32022-01-10 14:06:22 -0600734 "interface": "xyz.openbmc_project.Sensor.Value",
735 "property": { "name": "Value" }
736 }
737 ],
738 "state": 70.0,
739 "delta": 255
740 },
741 {
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600742 "name": "set_net_decrease_target",
743 "groups": [
744 {
745 "name": "proc0 core temps",
746 "interface": "xyz.openbmc_project.Sensor.Value",
747 "property": { "name": "Value" }
748 }
749 ],
750 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600751 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600752 },
753 {
754 "name": "set_net_decrease_target",
755 "groups": [
756 {
757 "name": "proc1 core temps",
758 "interface": "xyz.openbmc_project.Sensor.Value",
759 "property": { "name": "Value" }
760 }
761 ],
762 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600763 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600764 },
765 {
766 "name": "set_net_decrease_target",
767 "groups": [
768 {
769 "name": "proc0 ioring temp",
770 "interface": "xyz.openbmc_project.Sensor.Value",
771 "property": { "name": "Value" }
772 }
773 ],
774 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600775 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600776 },
777 {
778 "name": "set_net_decrease_target",
779 "groups": [
780 {
781 "name": "proc1 ioring temp",
782 "interface": "xyz.openbmc_project.Sensor.Value",
783 "property": { "name": "Value" }
784 }
785 ],
786 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600787 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600788 },
789 {
790 "name": "set_net_decrease_target",
791 "groups": [
792 {
793 "name": "dram temps",
794 "interface": "xyz.openbmc_project.Sensor.Value",
795 "property": { "name": "Value" }
796 }
797 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600798 "state": 60.0,
799 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600800 },
801 {
802 "name": "set_net_decrease_target",
803 "groups": [
804 {
805 "name": "pmic temps",
806 "interface": "xyz.openbmc_project.Sensor.Value",
807 "property": { "name": "Value" }
808 }
809 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600810 "state": 62.0,
811 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600812 },
813 {
814 "name": "set_net_decrease_target",
815 "groups": [
816 {
817 "name": "internal memory buffer temps",
818 "interface": "xyz.openbmc_project.Sensor.Value",
819 "property": { "name": "Value" }
820 }
821 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600822 "state": 71.0,
823 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600824 },
825 {
826 "name": "set_net_decrease_target",
827 "groups": [
828 {
829 "name": "dram and external memory buffer temps",
830 "interface": "xyz.openbmc_project.Sensor.Value",
831 "property": { "name": "Value" }
832 }
833 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600834 "state": 63.0,
835 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600836 },
837 {
838 "name": "set_net_decrease_target",
839 "groups": [
840 {
841 "name": "external memory buffer temps",
842 "interface": "xyz.openbmc_project.Sensor.Value",
843 "property": { "name": "Value" }
844 }
845 ],
Matthew Barth8fbdba32022-03-11 09:23:55 -0600846 "state": 57.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600847 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600848 },
849 {
850 "name": "set_net_decrease_target",
851 "groups": [
852 {
853 "name": "vdd vrm temps",
854 "interface": "xyz.openbmc_project.Sensor.Value",
855 "property": { "name": "Value" }
856 }
857 ],
858 "state": 79.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600859 "delta": 50
Matthew Barthcd8a80f2021-12-08 22:28:38 -0600860 },
861 {
862 "name": "set_net_decrease_target",
863 "groups": [
864 {
865 "name": "nvme temps",
866 "interface": "xyz.openbmc_project.Sensor.Value",
867 "property": { "name": "Value" }
868 }
869 ],
870 "state": 55.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600871 "delta": 50
Matthew Barth075fcd82021-12-13 20:56:49 -0600872 },
873 {
874 "name": "set_net_decrease_target",
875 "groups": [
876 {
877 "name": "planar temps",
878 "interface": "xyz.openbmc_project.Sensor.Value",
879 "property": { "name": "Value" }
880 }
881 ],
882 "state": 60.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600883 "delta": 50
Matt Spinler1006fe32022-01-10 14:06:22 -0600884 },
885 {
886 "name": "set_net_decrease_target",
887 "groups": [
888 {
889 "name": "flett temps",
890 "interface": "xyz.openbmc_project.Sensor.Value",
891 "property": { "name": "Value" }
892 }
893 ],
Matthew Bartha23ac122022-03-02 07:26:25 -0600894 "state": 75.0,
895 "delta": 40
Matt Spinler1006fe32022-01-10 14:06:22 -0600896 },
897 {
898 "name": "set_net_decrease_target",
899 "groups": [
900 {
Matthew Barth48b74802022-01-14 15:25:24 -0600901 "name": "pcie cable card temps",
Matt Spinler1006fe32022-01-10 14:06:22 -0600902 "interface": "xyz.openbmc_project.Sensor.Value",
903 "property": { "name": "Value" }
904 }
905 ],
906 "state": 65.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600907 "delta": 50
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600908 }
Matthew Barthb6f10352021-12-02 17:42:49 -0600909 ]
Matthew Barthcf34be22021-12-08 22:53:48 -0600910 },
911 {
912 // Remove NVMe temperature objects from cache when they are removed from
913 // dbus. There's no need to react to their removal.
914 "name": "remove nvme objects",
915 "groups": [
916 {
917 "name": "nvme temps",
918 "interface": "xyz.openbmc_project.Sensor.Value",
919 "property": { "name": "Value" }
Matt Spinler0461bd22022-04-25 16:24:23 -0500920 },
921 {
922 "name": "nvme temps",
923 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus",
924 "property": { "name": "Functional" }
Matthew Barthcf34be22021-12-08 22:53:48 -0600925 }
926 ],
927 "triggers": [
928 {
929 "class": "signal",
930 "signal": "interfaces_removed"
931 }
932 ]
Matthew Barth3fefda52022-01-21 16:11:33 -0600933 },
934 {
935 "name": "set pcie floor index",
936 "groups": [
937 {
938 "name": "pcie slots",
939 "interface": "xyz.openbmc_project.State.Decorator.PowerState",
940 "property": {
941 "name": "PowerState"
942 }
943 },
944 {
945 "name": "pcie cards",
946 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
947 "property": {
948 "name": "Function0DeviceId"
949 }
950 },
951 {
952 "name": "pcie cards",
953 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
954 "property": {
955 "name": "Function0VendorId"
956 }
957 },
958 {
959 "name": "pcie cards",
960 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
961 "property": {
962 "name": "Function0SubsystemId"
963 }
964 },
965 {
966 "name": "pcie cards",
967 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
968 "property": {
969 "name": "Function0SubsystemVendorId"
970 }
971 }
972 ],
973 "triggers": [
974 {
975 "class": "init",
976 "method": "get_properties"
977 },
978 {
979 "class": "signal",
980 "signal": "properties_changed"
981 },
982 {
983 "class": "signal",
984 "signal": "interfaces_added"
985 }
986 ],
987 "actions": [
988 {
989 "name": "pcie_card_floors",
990 "use_config_specific_files": true,
991 "settle_time": 2
992 }
993 ]
994 },
995 {
Matthew Barthfacbe122022-03-10 16:56:19 -0600996 "name": "Set altitude offset parameter",
997 "groups": [
998 {
999 "name": "altitude",
1000 "interface": "xyz.openbmc_project.Sensor.Value",
1001 "property": { "name": "Value" }
1002 }
1003 ],
1004 "triggers": [
1005 {
1006 "class": "init",
1007 "method": "get_properties"
1008 },
1009 {
1010 "class": "signal",
1011 "signal": "interfaces_added"
1012 },
1013 {
1014 // Refresh altitude every 24hrs
1015 "class": "timer",
1016 "type": "repeating",
1017 "interval": 86400000000,
1018 "preload_groups": true
1019 }
1020 ],
1021 "actions": [
1022 {
1023 "name": "set_parameter_from_group_max",
1024 "parameter_name": "altitude_offset",
1025 "modifier": {
1026 "operator": "less_than",
1027 "default_value": 3000,
1028 "value": [
1029 { "arg_value": 1000, "parameter_value": 0 },
1030 { "arg_value": 1900, "parameter_value": 1000 },
1031 { "arg_value": 2800, "parameter_value": 2000 }
1032 ]
1033 }
1034 }
1035 ]
1036 },
1037 {
Matthew Barth3fefda52022-01-21 16:11:33 -06001038 "name": "Fan floors",
1039 "groups": [
1040 {
1041 "name": "ambient temp",
1042 "interface": "xyz.openbmc_project.Sensor.Value",
1043 "property": { "name": "Value" }
1044 },
1045 {
1046 "name": "power mode",
1047 "interface": "xyz.openbmc_project.Control.Power.Mode",
1048 "property": { "name": "PowerMode" }
1049 }
1050 ],
1051 "triggers": [
1052 {
1053 "class": "init",
1054 "method": "get_properties"
1055 },
1056 {
1057 "class": "signal",
1058 "signal": "properties_changed"
1059 },
1060 {
1061 "class": "signal",
1062 "signal": "interfaces_added"
Matt Spinler3a53f2c2022-02-18 09:24:05 -06001063 },
1064 {
1065 "class": "parameter",
1066 "parameter": "pcie_floor_index"
Matthew Barthfacbe122022-03-10 16:56:19 -06001067 },
1068 {
1069 "class": "parameter",
1070 "parameter": "altitude_offset"
Matthew Barth3fefda52022-01-21 16:11:33 -06001071 }
1072 ],
1073 "actions": [
1074 {
1075 "name": "mapped_floor",
1076 "key_group": "ambient temp",
1077 "fan_floors": [
1078 {
1079 // Entry valid for ambient temp < 27
1080 "key": 27,
Matt Spinler7d299442022-06-17 11:07:14 -05001081 "default_floor": 3700,
Matthew Barthfacbe122022-03-10 16:56:19 -06001082 "floor_offset_parameter": "altitude_offset",
Matthew Barth3fefda52022-01-21 16:11:33 -06001083 "floors": [
1084 {
1085 "group": "power mode",
1086 "floors": [
1087 {
1088 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.Static",
Matt Spinler7d299442022-06-17 11:07:14 -05001089 "floor": 3700
Matthew Barth8fbdba32022-03-11 09:23:55 -06001090 },
1091 {
1092 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.PowerSaving",
Matt Spinler7d299442022-06-17 11:07:14 -05001093 "floor": 3700
Matthew Barth8fbdba32022-03-11 09:23:55 -06001094 },
1095 {
1096 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.MaximumPerformance",
Matt Spinler7d299442022-06-17 11:07:14 -05001097 "floor": 3700
Matthew Barth8fbdba32022-03-11 09:23:55 -06001098 },
1099 {
1100 // OEM == MaximumPerformance
1101 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.OEM",
Matt Spinler7d299442022-06-17 11:07:14 -05001102 "floor": 3700
Matthew Barth8fbdba32022-03-11 09:23:55 -06001103 }
1104 ]
1105 },
1106 {
1107 "parameter": "pcie_floor_index",
1108 "floors": [
1109 { "value": 1, "floor": 6000 },
1110 { "value": 2, "floor": 7000 },
1111 { "value": 3, "floor": 8000 }
1112 ]
1113 }
1114 ]
1115 },
1116 {
1117 // Entry valid for ambient temp < 32
1118 "key": 32,
Matthew Barthfacbe122022-03-10 16:56:19 -06001119 "default_floor": 5000,
1120 "floor_offset_parameter": "altitude_offset",
Matthew Barth8fbdba32022-03-11 09:23:55 -06001121 "floors": [
1122 {
1123 "group": "power mode",
1124 "floors": [
1125 {
1126 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.Static",
Matthew Barth3fefda52022-01-21 16:11:33 -06001127 "floor": 5000
1128 },
1129 {
1130 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.PowerSaving",
1131 "floor": 5000
1132 },
1133 {
1134 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.MaximumPerformance",
1135 "floor": 5000
1136 },
1137 {
1138 // OEM == MaximumPerformance
1139 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.OEM",
1140 "floor": 5000
1141 }
1142 ]
1143 },
1144 {
1145 "parameter": "pcie_floor_index",
1146 "floors": [
1147 { "value": 1, "floor": 7000 },
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001148 { "value": 2, "floor": 9000 },
1149 { "value": 3, "floor": 9500 }
Matthew Barth3fefda52022-01-21 16:11:33 -06001150 ]
1151 }
1152 ]
1153 },
1154 {
1155 // Entry valid for ambient temp < 37
1156 "key": 37,
Matthew Barthfacbe122022-03-10 16:56:19 -06001157 "default_floor": 6000,
1158 "floor_offset_parameter": "altitude_offset",
Matthew Barth3fefda52022-01-21 16:11:33 -06001159 "floors": [
1160 {
1161 "group": "power mode",
1162 "floors": [
1163 {
1164 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.Static",
Matthew Barth8fbdba32022-03-11 09:23:55 -06001165 "floor": 6000
Matthew Barth3fefda52022-01-21 16:11:33 -06001166 },
1167 {
1168 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.PowerSaving",
Matthew Barth8fbdba32022-03-11 09:23:55 -06001169 "floor": 6000
Matthew Barth3fefda52022-01-21 16:11:33 -06001170 },
1171 {
1172 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.MaximumPerformance",
Matthew Barth8fbdba32022-03-11 09:23:55 -06001173 "floor": 6000
Matthew Barth3fefda52022-01-21 16:11:33 -06001174 },
1175 {
1176 // OEM == MaximumPerformance
1177 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.OEM",
Matthew Barth8fbdba32022-03-11 09:23:55 -06001178 "floor": 6000
Matthew Barth3fefda52022-01-21 16:11:33 -06001179 }
1180 ]
1181 },
1182 {
1183 "parameter": "pcie_floor_index",
1184 "floors": [
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001185 { "value": 1, "floor": 9000 },
1186 { "value": 2, "floor": 9500 },
1187 { "value": 3, "floor": 10400 }
Matthew Barth3fefda52022-01-21 16:11:33 -06001188 ]
1189 }
1190 ]
1191 },
1192 {
Matthew Barth8fbdba32022-03-11 09:23:55 -06001193 // Entry valid for ambient temp < 42
1194 "key": 42,
Matthew Barthfacbe122022-03-10 16:56:19 -06001195 "default_floor": 8000,
1196 "floor_offset_parameter": "altitude_offset",
Matthew Barth3fefda52022-01-21 16:11:33 -06001197 "floors": [
1198 {
1199 "group": "power mode",
1200 "floors": [
1201 {
1202 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.Static",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001203 "floor": 8000
Matthew Barth3fefda52022-01-21 16:11:33 -06001204 },
1205 {
1206 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.PowerSaving",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001207 "floor": 8000
Matthew Barth3fefda52022-01-21 16:11:33 -06001208 },
1209 {
1210 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.MaximumPerformance",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001211 "floor": 8000
Matthew Barth3fefda52022-01-21 16:11:33 -06001212 },
1213 {
1214 // OEM == MaximumPerformance
1215 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.OEM",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001216 "floor": 8000
Matthew Barth3fefda52022-01-21 16:11:33 -06001217 }
1218 ]
1219 },
1220 {
1221 "parameter": "pcie_floor_index",
1222 "floors": [
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001223 { "value": 1, "floor": 9500 },
1224 { "value": 2, "floor": 10400 },
1225 { "value": 3, "floor": 10400 }
Matthew Barth3fefda52022-01-21 16:11:33 -06001226 ]
1227 }
1228 ]
1229 }
1230 ]
1231 }
1232 ]
Matt Spinler323694a2021-11-11 16:03:18 -06001233 }
Matthew Barthb477a562021-10-19 14:39:19 -05001234]