blob: 4f797c5499fe54ab36fdabf3a3c71a1ba1151ed2 [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 {
304 "class": "init",
305 "method": "get_properties"
306 }
307 ],
308 "actions": [
309 {
310 "name": "count_state_floor",
311 "count": 1,
312 "state": false,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600313 "floor": 10400
Matthew Barth39925fb2022-01-12 10:45:59 -0600314 }
315 ]
316 },
317 {
Matt Spinler323694a2021-11-11 16:03:18 -0600318 "name": "Set Proc 0 Core DVFS parameter",
319 "groups": [
320 {
321 "name": "proc 0 core dvfs temp",
322 "interface": "xyz.openbmc_project.Sensor.Value",
323 "property": { "name": "Value" }
324 }
325 ],
326 "triggers": [
327 {
328 "class": "init",
329 "method": "get_properties"
330 },
331 {
332 "class": "signal",
333 "signal": "interfaces_added"
334 },
335 {
336 "class": "signal",
337 "signal": "properties_changed"
338 }
339 ],
340 "actions": [
341 {
342 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600343 "parameter_name": "proc_0_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600344 "modifier": {
345 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600346 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600347 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600348 },
349 {
350 "name": "set_parameter_from_group_max",
351 "parameter_name": "proc_0_core_dvfs_decrease_temp",
352 "modifier": {
353 "operator": "minus",
354 "value": 13
355 }
Matt Spinler323694a2021-11-11 16:03:18 -0600356 }
357 ]
358 },
359 {
360 "name": "Set Proc 1 Core DVFS parameter",
361 "groups": [
362 {
363 "name": "proc 1 core dvfs temp",
364 "interface": "xyz.openbmc_project.Sensor.Value",
365 "property": { "name": "Value" }
366 }
367 ],
368 "triggers": [
369 {
370 "class": "init",
371 "method": "get_properties"
372 },
373 {
374 "class": "signal",
375 "signal": "interfaces_added"
376 },
377 {
378 "class": "signal",
379 "signal": "properties_changed"
380 }
381 ],
382 "actions": [
383 {
384 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600385 "parameter_name": "proc_1_core_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600386 "modifier": {
387 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600388 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600389 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600390 },
391 {
392 "name": "set_parameter_from_group_max",
393 "parameter_name": "proc_1_core_dvfs_decrease_temp",
394 "modifier": {
395 "operator": "minus",
396 "value": 13
397 }
Matt Spinler323694a2021-11-11 16:03:18 -0600398 }
399 ]
400 },
401 {
402 "name": "Set Proc 0 IO Ring DVFS parameter",
403 "groups": [
404 {
405 "name": "proc 0 ioring dvfs temp",
406 "interface": "xyz.openbmc_project.Sensor.Value",
407 "property": { "name": "Value" }
408 }
409 ],
410 "triggers": [
411 {
412 "class": "init",
413 "method": "get_properties"
414 },
415 {
416 "class": "signal",
417 "signal": "interfaces_added"
418 },
419 {
420 "class": "signal",
421 "signal": "properties_changed"
422 }
423 ],
424 "actions": [
425 {
426 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600427 "parameter_name": "proc_0_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600428 "modifier": {
429 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600430 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600431 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600432 },
433 {
434 "name": "set_parameter_from_group_max",
435 "parameter_name": "proc_0_ioring_dvfs_decrease_temp",
436 "modifier": {
437 "operator": "minus",
438 "value": 13
439 }
Matt Spinler323694a2021-11-11 16:03:18 -0600440 }
441 ]
442 },
443 {
444 "name": "Set Proc 1 IO Ring DVFS parameter",
445 "groups": [
446 {
447 "name": "proc 1 ioring dvfs temp",
448 "interface": "xyz.openbmc_project.Sensor.Value",
449 "property": { "name": "Value" }
450 }
451 ],
452 "triggers": [
453 {
454 "class": "init",
455 "method": "get_properties"
456 },
457 {
458 "class": "signal",
459 "signal": "interfaces_added"
460 },
461 {
462 "class": "signal",
463 "signal": "properties_changed"
464 }
465 ],
466 "actions": [
467 {
468 "name": "set_parameter_from_group_max",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600469 "parameter_name": "proc_1_ioring_dvfs_increase_temp",
Matt Spinler323694a2021-11-11 16:03:18 -0600470 "modifier": {
471 "operator": "minus",
Matthew Bartha0a72b12021-12-01 21:18:13 -0600472 "value": 10
Matt Spinler323694a2021-11-11 16:03:18 -0600473 }
Matthew Barthdcf39732021-12-01 21:58:59 -0600474 },
475 {
476 "name": "set_parameter_from_group_max",
477 "parameter_name": "proc_1_ioring_dvfs_decrease_temp",
478 "modifier": {
479 "operator": "minus",
480 "value": 13
481 }
Matt Spinler323694a2021-11-11 16:03:18 -0600482 }
483 ]
Matthew Barthb6f10352021-12-02 17:42:49 -0600484 },
485 {
486 // Collect group temperatures each iteration the repeating timer expires
487 "name": "Fan control timer loop",
488 "groups": [
489 {
490 "name": "proc0 core temps",
491 "interface": "xyz.openbmc_project.Sensor.Value",
492 "property": { "name": "Value" }
493 },
494 {
495 "name": "proc1 core temps",
496 "interface": "xyz.openbmc_project.Sensor.Value",
497 "property": { "name": "Value" }
498 },
499 {
500 "name": "proc0 ioring temp",
501 "interface": "xyz.openbmc_project.Sensor.Value",
502 "property": { "name": "Value" }
503 },
504 {
505 "name": "proc1 ioring temp",
506 "interface": "xyz.openbmc_project.Sensor.Value",
507 "property": { "name": "Value" }
508 },
509 {
510 "name": "dram temps",
511 "interface": "xyz.openbmc_project.Sensor.Value",
512 "property": { "name": "Value" }
513 },
514 {
515 "name": "pmic temps",
516 "interface": "xyz.openbmc_project.Sensor.Value",
517 "property": { "name": "Value" }
518 },
519 {
520 "name": "internal memory buffer temps",
521 "interface": "xyz.openbmc_project.Sensor.Value",
522 "property": { "name": "Value" }
523 },
524 {
525 "name": "dram and external memory buffer temps",
526 "interface": "xyz.openbmc_project.Sensor.Value",
527 "property": { "name": "Value" }
528 },
529 {
530 "name": "external memory buffer temps",
531 "interface": "xyz.openbmc_project.Sensor.Value",
532 "property": { "name": "Value" }
533 },
534 {
535 "name": "vdd vrm temps",
536 "interface": "xyz.openbmc_project.Sensor.Value",
537 "property": { "name": "Value" }
Matthew Barth23a7b2b2022-01-11 15:22:55 -0600538 },
539 {
540 "name": "nvme temps",
541 "interface": "xyz.openbmc_project.Sensor.Value",
542 "property": { "name": "Value" }
543 },
544 {
545 "name": "planar temps",
546 "interface": "xyz.openbmc_project.Sensor.Value",
547 "property": { "name": "Value" }
Matt Spinler9b7fc002022-01-11 15:35:29 -0600548 },
549 {
550 "name": "flett temps",
551 "interface": "xyz.openbmc_project.Sensor.Value",
552 "property": { "name": "Value" }
553 },
554 {
Matthew Barth48b74802022-01-14 15:25:24 -0600555 "name": "pcie cable card temps",
Matt Spinler9b7fc002022-01-11 15:35:29 -0600556 "interface": "xyz.openbmc_project.Sensor.Value",
557 "property": { "name": "Value" }
Matthew Barthb6f10352021-12-02 17:42:49 -0600558 }
559 ],
560 "triggers": [
561 {
562 "class": "timer",
563 "type": "repeating",
564 "interval": 2000000,
565 "preload_groups": true
566 }
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600567 ],
568 "actions": [
569 {
570 "name": "set_net_increase_target",
571 "groups": [
572 {
573 "name": "proc0 core temps",
574 "interface": "xyz.openbmc_project.Sensor.Value",
575 "property": { "name": "Value" }
576 }
577 ],
578 "state_parameter_name": "proc_0_core_dvfs_increase_temp",
579 "delta": 300
580 },
581 {
582 "name": "set_net_increase_target",
583 "groups": [
584 {
585 "name": "proc1 core temps",
586 "interface": "xyz.openbmc_project.Sensor.Value",
587 "property": { "name": "Value" }
588 }
589 ],
590 "state_parameter_name": "proc_1_core_dvfs_increase_temp",
591 "delta": 300
592 },
593 {
594 "name": "set_net_increase_target",
595 "groups": [
596 {
597 "name": "proc0 ioring temp",
598 "interface": "xyz.openbmc_project.Sensor.Value",
599 "property": { "name": "Value" }
600 }
601 ],
602 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp",
603 "delta": 300
604 },
605 {
606 "name": "set_net_increase_target",
607 "groups": [
608 {
609 "name": "proc1 ioring temp",
610 "interface": "xyz.openbmc_project.Sensor.Value",
611 "property": { "name": "Value" }
612 }
613 ],
614 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp",
615 "delta": 300
616 },
617 {
618 "name": "set_net_increase_target",
619 "groups": [
620 {
621 "name": "dram temps",
622 "interface": "xyz.openbmc_project.Sensor.Value",
623 "property": { "name": "Value" }
624 }
625 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600626 "state": 63.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600627 "delta": 200
628 },
629 {
630 "name": "set_net_increase_target",
631 "groups": [
632 {
633 "name": "pmic temps",
634 "interface": "xyz.openbmc_project.Sensor.Value",
635 "property": { "name": "Value" }
636 }
637 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600638 "state": 65.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600639 "delta": 200
640 },
641 {
642 "name": "set_net_increase_target",
643 "groups": [
644 {
645 "name": "internal memory buffer temps",
646 "interface": "xyz.openbmc_project.Sensor.Value",
647 "property": { "name": "Value" }
648 }
649 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600650 "state": 74.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600651 "delta": 200
652 },
653 {
654 "name": "set_net_increase_target",
655 "groups": [
656 {
657 "name": "dram and external memory buffer temps",
658 "interface": "xyz.openbmc_project.Sensor.Value",
659 "property": { "name": "Value" }
660 }
661 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600662 "state": 66.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600663 "delta": 200
664 },
665 {
666 "name": "set_net_increase_target",
667 "groups": [
668 {
669 "name": "external memory buffer temps",
670 "interface": "xyz.openbmc_project.Sensor.Value",
671 "property": { "name": "Value" }
672 }
673 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600674 "state": 57.0,
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600675 "delta": 200
676 },
677 {
678 "name": "set_net_increase_target",
679 "groups": [
680 {
681 "name": "vdd vrm temps",
682 "interface": "xyz.openbmc_project.Sensor.Value",
683 "property": { "name": "Value" }
684 }
685 ],
686 "state": 82.0,
687 "delta": 300
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600688 },
689 {
Matthew Barth4a7337e2021-12-08 22:03:48 -0600690 "name": "set_net_increase_target",
691 "groups": [
692 {
693 "name": "nvme temps",
694 "interface": "xyz.openbmc_project.Sensor.Value",
695 "property": { "name": "Value" }
696 }
697 ],
698 "state": 58.0,
699 "delta": 200
700 },
701 {
Matthew Barth075fcd82021-12-13 20:56:49 -0600702 "name": "set_net_increase_target",
703 "groups": [
704 {
705 "name": "planar temps",
706 "interface": "xyz.openbmc_project.Sensor.Value",
707 "property": { "name": "Value" }
708 }
709 ],
710 "state": 65.0,
711 "delta": 255
712 },
713 {
Matt Spinler1006fe32022-01-10 14:06:22 -0600714 "name": "set_net_increase_target",
715 "groups": [
716 {
717 "name": "flett temps",
718 "interface": "xyz.openbmc_project.Sensor.Value",
719 "property": { "name": "Value" }
720 }
721 ],
722 "state": 70.0,
723 "delta": 255
724 },
725 {
726 "name": "set_net_increase_target",
727 "groups": [
728 {
Matthew Barth48b74802022-01-14 15:25:24 -0600729 "name": "pcie cable card temps",
Matt Spinler1006fe32022-01-10 14:06:22 -0600730 "interface": "xyz.openbmc_project.Sensor.Value",
731 "property": { "name": "Value" }
732 }
733 ],
734 "state": 70.0,
735 "delta": 255
736 },
737 {
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600738 "name": "set_net_decrease_target",
739 "groups": [
740 {
741 "name": "proc0 core temps",
742 "interface": "xyz.openbmc_project.Sensor.Value",
743 "property": { "name": "Value" }
744 }
745 ],
746 "state_parameter_name": "proc_0_core_dvfs_decrease_temp",
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600747 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600748 },
749 {
750 "name": "set_net_decrease_target",
751 "groups": [
752 {
753 "name": "proc1 core temps",
754 "interface": "xyz.openbmc_project.Sensor.Value",
755 "property": { "name": "Value" }
756 }
757 ],
758 "state_parameter_name": "proc_1_core_dvfs_decrease_temp",
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600759 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600760 },
761 {
762 "name": "set_net_decrease_target",
763 "groups": [
764 {
765 "name": "proc0 ioring temp",
766 "interface": "xyz.openbmc_project.Sensor.Value",
767 "property": { "name": "Value" }
768 }
769 ],
770 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp",
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600771 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600772 },
773 {
774 "name": "set_net_decrease_target",
775 "groups": [
776 {
777 "name": "proc1 ioring temp",
778 "interface": "xyz.openbmc_project.Sensor.Value",
779 "property": { "name": "Value" }
780 }
781 ],
782 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp",
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600783 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600784 },
785 {
786 "name": "set_net_decrease_target",
787 "groups": [
788 {
789 "name": "dram temps",
790 "interface": "xyz.openbmc_project.Sensor.Value",
791 "property": { "name": "Value" }
792 }
793 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600794 "state": 60.0,
795 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600796 },
797 {
798 "name": "set_net_decrease_target",
799 "groups": [
800 {
801 "name": "pmic temps",
802 "interface": "xyz.openbmc_project.Sensor.Value",
803 "property": { "name": "Value" }
804 }
805 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600806 "state": 62.0,
807 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600808 },
809 {
810 "name": "set_net_decrease_target",
811 "groups": [
812 {
813 "name": "internal memory buffer temps",
814 "interface": "xyz.openbmc_project.Sensor.Value",
815 "property": { "name": "Value" }
816 }
817 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600818 "state": 71.0,
819 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600820 },
821 {
822 "name": "set_net_decrease_target",
823 "groups": [
824 {
825 "name": "dram and external memory buffer temps",
826 "interface": "xyz.openbmc_project.Sensor.Value",
827 "property": { "name": "Value" }
828 }
829 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600830 "state": 63.0,
831 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600832 },
833 {
834 "name": "set_net_decrease_target",
835 "groups": [
836 {
837 "name": "external memory buffer temps",
838 "interface": "xyz.openbmc_project.Sensor.Value",
839 "property": { "name": "Value" }
840 }
841 ],
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600842 "state": 54.0,
843 "delta": 50
Matthew Barth1cb3ce12021-12-06 22:38:15 -0600844 },
845 {
846 "name": "set_net_decrease_target",
847 "groups": [
848 {
849 "name": "vdd vrm temps",
850 "interface": "xyz.openbmc_project.Sensor.Value",
851 "property": { "name": "Value" }
852 }
853 ],
854 "state": 79.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600855 "delta": 50
Matthew Barthcd8a80f2021-12-08 22:28:38 -0600856 },
857 {
858 "name": "set_net_decrease_target",
859 "groups": [
860 {
861 "name": "nvme temps",
862 "interface": "xyz.openbmc_project.Sensor.Value",
863 "property": { "name": "Value" }
864 }
865 ],
866 "state": 55.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600867 "delta": 50
Matthew Barth075fcd82021-12-13 20:56:49 -0600868 },
869 {
870 "name": "set_net_decrease_target",
871 "groups": [
872 {
873 "name": "planar temps",
874 "interface": "xyz.openbmc_project.Sensor.Value",
875 "property": { "name": "Value" }
876 }
877 ],
878 "state": 60.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600879 "delta": 50
Matt Spinler1006fe32022-01-10 14:06:22 -0600880 },
881 {
882 "name": "set_net_decrease_target",
883 "groups": [
884 {
885 "name": "flett temps",
886 "interface": "xyz.openbmc_project.Sensor.Value",
887 "property": { "name": "Value" }
888 }
889 ],
890 "state": 65.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600891 "delta": 50
Matt Spinler1006fe32022-01-10 14:06:22 -0600892 },
893 {
894 "name": "set_net_decrease_target",
895 "groups": [
896 {
Matthew Barth48b74802022-01-14 15:25:24 -0600897 "name": "pcie cable card temps",
Matt Spinler1006fe32022-01-10 14:06:22 -0600898 "interface": "xyz.openbmc_project.Sensor.Value",
899 "property": { "name": "Value" }
900 }
901 ],
902 "state": 65.0,
Matthew Barthb20f2fe2022-02-11 15:29:29 -0600903 "delta": 50
Matthew Barthbf3c6b92021-12-06 22:35:30 -0600904 }
Matthew Barthb6f10352021-12-02 17:42:49 -0600905 ]
Matthew Barthcf34be22021-12-08 22:53:48 -0600906 },
907 {
908 // Remove NVMe temperature objects from cache when they are removed from
909 // dbus. There's no need to react to their removal.
910 "name": "remove nvme objects",
911 "groups": [
912 {
913 "name": "nvme temps",
914 "interface": "xyz.openbmc_project.Sensor.Value",
915 "property": { "name": "Value" }
916 }
917 ],
918 "triggers": [
919 {
920 "class": "signal",
921 "signal": "interfaces_removed"
922 }
923 ]
Matthew Barth3fefda52022-01-21 16:11:33 -0600924 },
925 {
926 "name": "set pcie floor index",
927 "groups": [
928 {
929 "name": "pcie slots",
930 "interface": "xyz.openbmc_project.State.Decorator.PowerState",
931 "property": {
932 "name": "PowerState"
933 }
934 },
935 {
936 "name": "pcie cards",
937 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
938 "property": {
939 "name": "Function0DeviceId"
940 }
941 },
942 {
943 "name": "pcie cards",
944 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
945 "property": {
946 "name": "Function0VendorId"
947 }
948 },
949 {
950 "name": "pcie cards",
951 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
952 "property": {
953 "name": "Function0SubsystemId"
954 }
955 },
956 {
957 "name": "pcie cards",
958 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice",
959 "property": {
960 "name": "Function0SubsystemVendorId"
961 }
962 }
963 ],
964 "triggers": [
965 {
966 "class": "init",
967 "method": "get_properties"
968 },
969 {
970 "class": "signal",
971 "signal": "properties_changed"
972 },
973 {
974 "class": "signal",
975 "signal": "interfaces_added"
976 }
977 ],
978 "actions": [
979 {
980 "name": "pcie_card_floors",
981 "use_config_specific_files": true,
982 "settle_time": 2
983 }
984 ]
985 },
986 {
987 "name": "Fan floors",
988 "groups": [
989 {
990 "name": "ambient temp",
991 "interface": "xyz.openbmc_project.Sensor.Value",
992 "property": { "name": "Value" }
993 },
994 {
995 "name": "power mode",
996 "interface": "xyz.openbmc_project.Control.Power.Mode",
997 "property": { "name": "PowerMode" }
998 }
999 ],
1000 "triggers": [
1001 {
1002 "class": "init",
1003 "method": "get_properties"
1004 },
1005 {
1006 "class": "signal",
1007 "signal": "properties_changed"
1008 },
1009 {
1010 "class": "signal",
1011 "signal": "interfaces_added"
Matt Spinler3a53f2c2022-02-18 09:24:05 -06001012 },
1013 {
1014 "class": "parameter",
1015 "parameter": "pcie_floor_index"
Matthew Barth3fefda52022-01-21 16:11:33 -06001016 }
1017 ],
1018 "actions": [
1019 {
1020 "name": "mapped_floor",
1021 "key_group": "ambient temp",
1022 "fan_floors": [
1023 {
1024 // Entry valid for ambient temp < 27
1025 "key": 27,
1026 "floors": [
1027 {
1028 "group": "power mode",
1029 "floors": [
1030 {
1031 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.Static",
1032 "floor": 5000
1033 },
1034 {
1035 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.PowerSaving",
1036 "floor": 5000
1037 },
1038 {
1039 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.MaximumPerformance",
1040 "floor": 5000
1041 },
1042 {
1043 // OEM == MaximumPerformance
1044 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.OEM",
1045 "floor": 5000
1046 }
1047 ]
1048 },
1049 {
1050 "parameter": "pcie_floor_index",
1051 "floors": [
1052 { "value": 1, "floor": 7000 },
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001053 { "value": 2, "floor": 8000 },
1054 { "value": 3, "floor": 9000 }
Matthew Barth3fefda52022-01-21 16:11:33 -06001055 ]
1056 }
1057 ]
1058 },
1059 {
1060 // Entry valid for ambient temp < 32
1061 "key": 32,
1062 "floors": [
1063 {
1064 "group": "power mode",
1065 "floors": [
1066 {
1067 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.Static",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001068 "floor": 6000
Matthew Barth3fefda52022-01-21 16:11:33 -06001069 },
1070 {
1071 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.PowerSaving",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001072 "floor": 6000
Matthew Barth3fefda52022-01-21 16:11:33 -06001073 },
1074 {
1075 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.MaximumPerformance",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001076 "floor": 6000
Matthew Barth3fefda52022-01-21 16:11:33 -06001077 },
1078 {
1079 // OEM == MaximumPerformance
1080 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.OEM",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001081 "floor": 6000
Matthew Barth3fefda52022-01-21 16:11:33 -06001082 }
1083 ]
1084 },
1085 {
1086 "parameter": "pcie_floor_index",
1087 "floors": [
1088 { "value": 1, "floor": 8000 },
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001089 { "value": 2, "floor": 9000 },
1090 { "value": 3, "floor": 9500 }
Matthew Barth3fefda52022-01-21 16:11:33 -06001091 ]
1092 }
1093 ]
1094 },
1095 {
1096 // Entry valid for ambient temp < 37
1097 "key": 37,
1098 "floors": [
1099 {
1100 "group": "power mode",
1101 "floors": [
1102 {
1103 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.Static",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001104 "floor": 7000
Matthew Barth3fefda52022-01-21 16:11:33 -06001105 },
1106 {
1107 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.PowerSaving",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001108 "floor": 7000
Matthew Barth3fefda52022-01-21 16:11:33 -06001109 },
1110 {
1111 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.MaximumPerformance",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001112 "floor": 7000
Matthew Barth3fefda52022-01-21 16:11:33 -06001113 },
1114 {
1115 // OEM == MaximumPerformance
1116 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.OEM",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001117 "floor": 7000
Matthew Barth3fefda52022-01-21 16:11:33 -06001118 }
1119 ]
1120 },
1121 {
1122 "parameter": "pcie_floor_index",
1123 "floors": [
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001124 { "value": 1, "floor": 9000 },
1125 { "value": 2, "floor": 9500 },
1126 { "value": 3, "floor": 10400 }
Matthew Barth3fefda52022-01-21 16:11:33 -06001127 ]
1128 }
1129 ]
1130 },
1131 {
1132 // Entry valid for ambient temp < 43
1133 "key": 43,
1134 "floors": [
1135 {
1136 "group": "power mode",
1137 "floors": [
1138 {
1139 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.Static",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001140 "floor": 8000
Matthew Barth3fefda52022-01-21 16:11:33 -06001141 },
1142 {
1143 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.PowerSaving",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001144 "floor": 8000
Matthew Barth3fefda52022-01-21 16:11:33 -06001145 },
1146 {
1147 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.MaximumPerformance",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001148 "floor": 8000
Matthew Barth3fefda52022-01-21 16:11:33 -06001149 },
1150 {
1151 // OEM == MaximumPerformance
1152 "value": "xyz.openbmc_project.Control.Power.Mode.PowerMode.OEM",
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001153 "floor": 8000
Matthew Barth3fefda52022-01-21 16:11:33 -06001154 }
1155 ]
1156 },
1157 {
1158 "parameter": "pcie_floor_index",
1159 "floors": [
Matthew Barthb20f2fe2022-02-11 15:29:29 -06001160 { "value": 1, "floor": 9500 },
1161 { "value": 2, "floor": 10400 },
1162 { "value": 3, "floor": 10400 }
Matthew Barth3fefda52022-01-21 16:11:33 -06001163 ]
1164 }
1165 ]
1166 }
1167 ]
1168 }
1169 ]
Matt Spinler323694a2021-11-11 16:03:18 -06001170 }
Matthew Barthb477a562021-10-19 14:39:19 -05001171]