1[ 2 { 3 // Hold fans at the given target when a number of fans are missing. 4 "name": "fan(s) missing", 5 "groups": [ 6 { 7 "name": "fan inventory", 8 "interface": "xyz.openbmc_project.Inventory.Item", 9 "property": { "name": "Present" } 10 } 11 ], 12 "triggers": [ 13 { 14 "class": "init", 15 "method": "get_properties" 16 }, 17 { 18 "class": "signal", 19 "signal": "properties_changed" 20 } 21 ], 22 "actions": [ 23 { 24 "name": "count_state_before_target", 25 "count": 1, 26 "state": false, 27 "target": 11300 28 } 29 ] 30 }, 31 { 32 // Hold fans at the given target when a number of rotors are nonfunctional. 33 "name": "fan rotor(s) faulted", 34 "groups": [ 35 { 36 "name": "fan0 rotor inventory", 37 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 38 "property": { "name": "Functional" } 39 }, 40 { 41 "name": "fan1 rotor inventory", 42 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 43 "property": { "name": "Functional" } 44 }, 45 { 46 "name": "fan2 rotor inventory", 47 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 48 "property": { "name": "Functional" } 49 }, 50 { 51 "name": "fan3 rotor inventory", 52 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 53 "property": { "name": "Functional" } 54 } 55 ], 56 "triggers": [ 57 { 58 "class": "init", 59 "method": "get_properties" 60 }, 61 { 62 "class": "signal", 63 "signal": "properties_changed" 64 } 65 ], 66 "actions": [ 67 { 68 "name": "count_state_before_target", 69 "count": 2, 70 "state": false, 71 "target": 11300 72 } 73 ] 74 }, 75 { 76 // (for the following 4 rules) 77 // if a dual-rotor fan becomes non-functional, lock its speed to 78 // poweron_target to lock the other rotor to full_speed 79 "name": "nonfunc rotor override-0", 80 "groups": [ 81 { 82 "name": "fan0 rotor inventory", 83 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 84 "property": { "name": "Functional" } 85 } 86 ], 87 "triggers": [ 88 { 89 "class": "init", 90 "method": "get_properties" 91 }, 92 { 93 "class": "signal", 94 "signal": "properties_changed" 95 } 96 ], 97 "actions": [ 98 { 99 "name": "override_fan_target", 100 "count": 1, 101 "state": false, 102 "fans": ["fan0"], 103 "target": 11300 104 } 105 ] 106 }, 107 { 108 "name": "nonfunc rotor override-1", 109 "groups": [ 110 { 111 "name": "fan1 rotor inventory", 112 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 113 "property": { "name": "Functional" } 114 } 115 ], 116 "triggers": [ 117 { 118 "class": "init", 119 "method": "get_properties" 120 }, 121 { 122 "class": "signal", 123 "signal": "properties_changed" 124 } 125 ], 126 "actions": [ 127 { 128 "name": "override_fan_target", 129 "count": 1, 130 "state": false, 131 "fans": ["fan1"], 132 "target": 11300 133 } 134 ] 135 }, 136 { 137 "name": "nonfunc rotor override-2", 138 "groups": [ 139 { 140 "name": "fan2 rotor inventory", 141 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 142 "property": { "name": "Functional" } 143 } 144 ], 145 "triggers": [ 146 { 147 "class": "init", 148 "method": "get_properties" 149 }, 150 { 151 "class": "signal", 152 "signal": "properties_changed" 153 } 154 ], 155 "actions": [ 156 { 157 "name": "override_fan_target", 158 "count": 1, 159 "state": false, 160 "fans": ["fan2"], 161 "target": 11300 162 } 163 ] 164 }, 165 { 166 "name": "nonfunc rotor override-3", 167 "groups": [ 168 { 169 "name": "fan3 rotor inventory", 170 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 171 "property": { "name": "Functional" } 172 } 173 ], 174 "triggers": [ 175 { 176 "class": "init", 177 "method": "get_properties" 178 }, 179 { 180 "class": "signal", 181 "signal": "properties_changed" 182 } 183 ], 184 "actions": [ 185 { 186 "name": "override_fan_target", 187 "count": 1, 188 "state": false, 189 "fans": ["fan3"], 190 "target": 11300 191 } 192 ] 193 }, 194 { 195 // Hold fans at the given target when any critical service 196 // is not running for 5 seconds. 197 "name": "service(s) missing", 198 "groups": [ 199 { 200 "name": "fan inventory", 201 "interface": "xyz.openbmc_project.Inventory.Item", 202 "property": { "name": "Present" } 203 }, 204 { 205 "name": "occ objects", 206 "interface": "org.open_power.OCC.Status", 207 "property": { "name": "OccActive" } 208 }, 209 { 210 "name": "nvme temps", 211 "interface": "xyz.openbmc_project.Sensor.Value", 212 "property": { "name": "Value" } 213 }, 214 { 215 "name": "planar temps", 216 "interface": "xyz.openbmc_project.Sensor.Value", 217 "property": { "name": "Value" } 218 }, 219 { 220 "name": "pcie cable card temps", 221 "interface": "xyz.openbmc_project.Sensor.Value", 222 "property": { "name": "Value" } 223 }, 224 { 225 "name": "ambient temp", 226 "interface": "xyz.openbmc_project.Sensor.Value", 227 "property": { "name": "Value" } 228 }, 229 { 230 "name": "altitude", 231 "interface": "xyz.openbmc_project.Sensor.Value", 232 "property": { "name": "Value" } 233 } 234 ], 235 "triggers": [ 236 { 237 "class": "init", 238 "method": "name_has_owner" 239 }, 240 { 241 "class": "signal", 242 "signal": "name_owner_changed" 243 } 244 ], 245 "actions": [ 246 { 247 "name": "call_actions_based_on_timer", 248 "timer": { 249 "interval": 5000000, 250 "type": "oneshot" 251 }, 252 "actions": [ 253 { 254 "name": "set_target_on_missing_owner", 255 "groups": [ 256 { 257 "name": "fan inventory", 258 "interface": "xyz.openbmc_project.Inventory.Item", 259 "property": { "name": "Present" } 260 }, 261 { 262 "name": "occ objects", 263 "interface": "org.open_power.OCC.Status", 264 "property": { "name": "OccActive" } 265 }, 266 { 267 "name": "nvme temps", 268 "interface": "xyz.openbmc_project.Sensor.Value", 269 "property": { "name": "Value" } 270 }, 271 { 272 "name": "planar temps", 273 "interface": "xyz.openbmc_project.Sensor.Value", 274 "property": { "name": "Value" } 275 }, 276 { 277 "name": "pcie cable card temps", 278 "interface": "xyz.openbmc_project.Sensor.Value", 279 "property": { "name": "Value" } 280 }, 281 { 282 "name": "ambient temp", 283 "interface": "xyz.openbmc_project.Sensor.Value", 284 "property": { "name": "Value" } 285 } 286 ], 287 "target": 9700 288 } 289 ] 290 } 291 ] 292 }, 293 { 294 // Set a fan floor if an OCC isn't active 295 "name": "Non-active OCC(s)", 296 "groups": [ 297 { 298 "name": "occ objects", 299 "interface": "org.open_power.OCC.Status", 300 "property": { 301 "name": "OccActive" 302 } 303 } 304 ], 305 "triggers": [ 306 { 307 "class": "signal", 308 "signal": "properties_changed" 309 }, 310 { 311 "class": "signal", 312 "signal": "interfaces_added" 313 }, 314 { 315 "class": "init", 316 "method": "get_properties" 317 } 318 ], 319 "actions": [ 320 { 321 "name": "count_state_floor", 322 "count": 1, 323 "state": false, 324 "floor": 11300 325 } 326 ] 327 }, 328 { 329 // Set a raised fan floor when any temperature or altitude sensor is 330 // nonfunctional 331 "name": "Nonfunctional temperature sensors", 332 "groups": [ 333 { 334 "name": "proc0 core temps", 335 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 336 "property": { "name": "Functional" } 337 }, 338 { 339 "name": "proc1 core temps", 340 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 341 "property": { "name": "Functional" } 342 }, 343 { 344 "name": "proc2 core temps", 345 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 346 "property": { "name": "Functional" } 347 }, 348 { 349 "name": "proc3 core temps", 350 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 351 "property": { "name": "Functional" } 352 }, 353 { 354 "name": "proc4 core temps", 355 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 356 "property": { "name": "Functional" } 357 }, 358 { 359 "name": "proc5 core temps", 360 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 361 "property": { "name": "Functional" } 362 }, 363 { 364 "name": "proc6 core temps", 365 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 366 "property": { "name": "Functional" } 367 }, 368 { 369 "name": "proc7 core temps", 370 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 371 "property": { "name": "Functional" } 372 }, 373 { 374 "name": "proc0 ioring temp", 375 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 376 "property": { "name": "Functional" } 377 }, 378 { 379 "name": "proc1 ioring temp", 380 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 381 "property": { "name": "Functional" } 382 }, 383 { 384 "name": "proc2 ioring temp", 385 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 386 "property": { "name": "Functional" } 387 }, 388 { 389 "name": "proc3 ioring temp", 390 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 391 "property": { "name": "Functional" } 392 }, 393 { 394 "name": "proc4 ioring temp", 395 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 396 "property": { "name": "Functional" } 397 }, 398 { 399 "name": "proc5 ioring temp", 400 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 401 "property": { "name": "Functional" } 402 }, 403 { 404 "name": "proc6 ioring temp", 405 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 406 "property": { "name": "Functional" } 407 }, 408 { 409 "name": "proc7 ioring temp", 410 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 411 "property": { "name": "Functional" } 412 }, 413 { 414 "name": "dram temps", 415 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 416 "property": { "name": "Functional" } 417 }, 418 { 419 "name": "pmic temps", 420 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 421 "property": { "name": "Functional" } 422 }, 423 { 424 "name": "internal memory buffer temps", 425 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 426 "property": { "name": "Functional" } 427 }, 428 { 429 "name": "dram and external memory buffer temps", 430 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 431 "property": { "name": "Functional" } 432 }, 433 { 434 "name": "external memory buffer temps", 435 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 436 "property": { "name": "Functional" } 437 }, 438 { 439 "name": "vdd vrm temps", 440 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 441 "property": { "name": "Functional" } 442 }, 443 { 444 "name": "nvme temps", 445 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 446 "property": { "name": "Functional" } 447 }, 448 { 449 "name": "planar temps", 450 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 451 "property": { "name": "Functional" } 452 }, 453 { 454 "name": "pcie cable card temps", 455 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 456 "property": { "name": "Functional" } 457 }, 458 { 459 "name": "ambient temp", 460 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 461 "property": { "name": "Functional" } 462 }, 463 { 464 "name": "altitude", 465 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 466 "property": { "name": "Functional" } 467 } 468 ], 469 "triggers": [ 470 { 471 "class": "signal", 472 "signal": "properties_changed" 473 }, 474 { 475 "class": "signal", 476 "signal": "interfaces_added" 477 }, 478 { 479 "class": "signal", 480 "signal": "interfaces_removed" 481 }, 482 { 483 "class": "init", 484 "method": "get_properties" 485 } 486 ], 487 "actions": [ 488 { 489 "name": "count_state_floor", 490 "count": 1, 491 "state": false, 492 "delay": 5, 493 "floor": 11300 494 } 495 ] 496 }, 497 { 498 "name": "Set Proc 0 Core DVFS parameter", 499 "groups": [ 500 { 501 "name": "proc 0 core dvfs temp", 502 "interface": "xyz.openbmc_project.Sensor.Value", 503 "property": { "name": "Value" } 504 } 505 ], 506 "triggers": [ 507 { 508 "class": "init", 509 "method": "get_properties" 510 }, 511 { 512 "class": "signal", 513 "signal": "interfaces_added" 514 }, 515 { 516 "class": "signal", 517 "signal": "properties_changed" 518 } 519 ], 520 "actions": [ 521 { 522 "name": "set_parameter_from_group_max", 523 "parameter_name": "proc_0_core_dvfs_increase_temp", 524 "modifier": { 525 "operator": "minus", 526 "value": 7 527 } 528 }, 529 { 530 "name": "set_parameter_from_group_max", 531 "parameter_name": "proc_0_core_dvfs_decrease_temp", 532 "modifier": { 533 "operator": "minus", 534 "value": 9 535 } 536 } 537 ] 538 }, 539 { 540 "name": "Set Proc 1 Core DVFS parameter", 541 "groups": [ 542 { 543 "name": "proc 1 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", 565 "parameter_name": "proc_1_core_dvfs_increase_temp", 566 "modifier": { 567 "operator": "minus", 568 "value": 7 569 } 570 }, 571 { 572 "name": "set_parameter_from_group_max", 573 "parameter_name": "proc_1_core_dvfs_decrease_temp", 574 "modifier": { 575 "operator": "minus", 576 "value": 9 577 } 578 } 579 ] 580 }, 581 { 582 "name": "Set Proc 2 Core DVFS parameter", 583 "groups": [ 584 { 585 "name": "proc 2 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", 607 "parameter_name": "proc_2_core_dvfs_increase_temp", 608 "modifier": { 609 "operator": "minus", 610 "value": 7 611 } 612 }, 613 { 614 "name": "set_parameter_from_group_max", 615 "parameter_name": "proc_2_core_dvfs_decrease_temp", 616 "modifier": { 617 "operator": "minus", 618 "value": 9 619 } 620 } 621 ] 622 }, 623 { 624 "name": "Set Proc 3 Core DVFS parameter", 625 "groups": [ 626 { 627 "name": "proc 3 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", 649 "parameter_name": "proc_3_core_dvfs_increase_temp", 650 "modifier": { 651 "operator": "minus", 652 "value": 7 653 } 654 }, 655 { 656 "name": "set_parameter_from_group_max", 657 "parameter_name": "proc_3_core_dvfs_decrease_temp", 658 "modifier": { 659 "operator": "minus", 660 "value": 9 661 } 662 } 663 ] 664 }, 665 { 666 "name": "Set Proc 4 Core DVFS parameter", 667 "groups": [ 668 { 669 "name": "proc 4 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", 691 "parameter_name": "proc_4_core_dvfs_increase_temp", 692 "modifier": { 693 "operator": "minus", 694 "value": 7 695 } 696 }, 697 { 698 "name": "set_parameter_from_group_max", 699 "parameter_name": "proc_4_core_dvfs_decrease_temp", 700 "modifier": { 701 "operator": "minus", 702 "value": 9 703 } 704 } 705 ] 706 }, 707 { 708 "name": "Set Proc 5 Core DVFS parameter", 709 "groups": [ 710 { 711 "name": "proc 5 core 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", 733 "parameter_name": "proc_5_core_dvfs_increase_temp", 734 "modifier": { 735 "operator": "minus", 736 "value": 7 737 } 738 }, 739 { 740 "name": "set_parameter_from_group_max", 741 "parameter_name": "proc_5_core_dvfs_decrease_temp", 742 "modifier": { 743 "operator": "minus", 744 "value": 9 745 } 746 } 747 ] 748 }, 749 { 750 "name": "Set Proc 6 Core DVFS parameter", 751 "groups": [ 752 { 753 "name": "proc 6 core 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", 775 "parameter_name": "proc_6_core_dvfs_increase_temp", 776 "modifier": { 777 "operator": "minus", 778 "value": 7 779 } 780 }, 781 { 782 "name": "set_parameter_from_group_max", 783 "parameter_name": "proc_6_core_dvfs_decrease_temp", 784 "modifier": { 785 "operator": "minus", 786 "value": 9 787 } 788 } 789 ] 790 }, 791 { 792 "name": "Set Proc 7 Core DVFS parameter", 793 "groups": [ 794 { 795 "name": "proc 7 core 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", 817 "parameter_name": "proc_7_core_dvfs_increase_temp", 818 "modifier": { 819 "operator": "minus", 820 "value": 7 821 } 822 }, 823 { 824 "name": "set_parameter_from_group_max", 825 "parameter_name": "proc_7_core_dvfs_decrease_temp", 826 "modifier": { 827 "operator": "minus", 828 "value": 9 829 } 830 } 831 ] 832 }, 833 { 834 "name": "Set Proc 0 IO Ring DVFS parameter", 835 "groups": [ 836 { 837 "name": "proc 0 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": "interfaces_added" 850 }, 851 { 852 "class": "signal", 853 "signal": "properties_changed" 854 } 855 ], 856 "actions": [ 857 { 858 "name": "set_parameter_from_group_max", 859 "parameter_name": "proc_0_ioring_dvfs_increase_temp", 860 "modifier": { 861 "operator": "minus", 862 "value": 10 863 } 864 }, 865 { 866 "name": "set_parameter_from_group_max", 867 "parameter_name": "proc_0_ioring_dvfs_decrease_temp", 868 "modifier": { 869 "operator": "minus", 870 "value": 13 871 } 872 } 873 ] 874 }, 875 { 876 "name": "Set Proc 1 IO Ring DVFS parameter", 877 "groups": [ 878 { 879 "name": "proc 1 ioring dvfs temp", 880 "interface": "xyz.openbmc_project.Sensor.Value", 881 "property": { "name": "Value" } 882 } 883 ], 884 "triggers": [ 885 { 886 "class": "init", 887 "method": "get_properties" 888 }, 889 { 890 "class": "signal", 891 "signal": "interfaces_added" 892 }, 893 { 894 "class": "signal", 895 "signal": "properties_changed" 896 } 897 ], 898 "actions": [ 899 { 900 "name": "set_parameter_from_group_max", 901 "parameter_name": "proc_1_ioring_dvfs_increase_temp", 902 "modifier": { 903 "operator": "minus", 904 "value": 10 905 } 906 }, 907 { 908 "name": "set_parameter_from_group_max", 909 "parameter_name": "proc_1_ioring_dvfs_decrease_temp", 910 "modifier": { 911 "operator": "minus", 912 "value": 13 913 } 914 } 915 ] 916 }, 917 { 918 "name": "Set Proc 2 IO Ring DVFS parameter", 919 "groups": [ 920 { 921 "name": "proc 2 ioring dvfs temp", 922 "interface": "xyz.openbmc_project.Sensor.Value", 923 "property": { "name": "Value" } 924 } 925 ], 926 "triggers": [ 927 { 928 "class": "init", 929 "method": "get_properties" 930 }, 931 { 932 "class": "signal", 933 "signal": "interfaces_added" 934 }, 935 { 936 "class": "signal", 937 "signal": "properties_changed" 938 } 939 ], 940 "actions": [ 941 { 942 "name": "set_parameter_from_group_max", 943 "parameter_name": "proc_2_ioring_dvfs_increase_temp", 944 "modifier": { 945 "operator": "minus", 946 "value": 10 947 } 948 }, 949 { 950 "name": "set_parameter_from_group_max", 951 "parameter_name": "proc_2_ioring_dvfs_decrease_temp", 952 "modifier": { 953 "operator": "minus", 954 "value": 13 955 } 956 } 957 ] 958 }, 959 { 960 "name": "Set Proc 3 IO Ring DVFS parameter", 961 "groups": [ 962 { 963 "name": "proc 3 ioring dvfs temp", 964 "interface": "xyz.openbmc_project.Sensor.Value", 965 "property": { "name": "Value" } 966 } 967 ], 968 "triggers": [ 969 { 970 "class": "init", 971 "method": "get_properties" 972 }, 973 { 974 "class": "signal", 975 "signal": "properties_changed" 976 }, 977 { 978 "class": "signal", 979 "signal": "interfaces_added" 980 } 981 ], 982 "actions": [ 983 { 984 "name": "set_parameter_from_group_max", 985 "parameter_name": "proc_3_ioring_dvfs_increase_temp", 986 "modifier": { 987 "operator": "minus", 988 "value": 10 989 } 990 }, 991 { 992 "name": "set_parameter_from_group_max", 993 "parameter_name": "proc_3_ioring_dvfs_decrease_temp", 994 "modifier": { 995 "operator": "minus", 996 "value": 13 997 } 998 } 999 ] 1000 }, 1001 { 1002 "name": "Set Proc 4 IO Ring DVFS parameter", 1003 "groups": [ 1004 { 1005 "name": "proc 4 ioring dvfs temp", 1006 "interface": "xyz.openbmc_project.Sensor.Value", 1007 "property": { "name": "Value" } 1008 } 1009 ], 1010 "triggers": [ 1011 { 1012 "class": "init", 1013 "method": "get_properties" 1014 }, 1015 { 1016 "class": "signal", 1017 "signal": "interfaces_added" 1018 }, 1019 { 1020 "class": "signal", 1021 "signal": "properties_changed" 1022 } 1023 ], 1024 "actions": [ 1025 { 1026 "name": "set_parameter_from_group_max", 1027 "parameter_name": "proc_4_ioring_dvfs_increase_temp", 1028 "modifier": { 1029 "operator": "minus", 1030 "value": 10 1031 } 1032 }, 1033 { 1034 "name": "set_parameter_from_group_max", 1035 "parameter_name": "proc_4_ioring_dvfs_decrease_temp", 1036 "modifier": { 1037 "operator": "minus", 1038 "value": 13 1039 } 1040 } 1041 ] 1042 }, 1043 { 1044 "name": "Set Proc 5 IO Ring DVFS parameter", 1045 "groups": [ 1046 { 1047 "name": "proc 5 ioring dvfs temp", 1048 "interface": "xyz.openbmc_project.Sensor.Value", 1049 "property": { "name": "Value" } 1050 } 1051 ], 1052 "triggers": [ 1053 { 1054 "class": "init", 1055 "method": "get_properties" 1056 }, 1057 { 1058 "class": "signal", 1059 "signal": "interfaces_added" 1060 }, 1061 { 1062 "class": "signal", 1063 "signal": "properties_changed" 1064 } 1065 ], 1066 "actions": [ 1067 { 1068 "name": "set_parameter_from_group_max", 1069 "parameter_name": "proc_5_ioring_dvfs_increase_temp", 1070 "modifier": { 1071 "operator": "minus", 1072 "value": 10 1073 } 1074 }, 1075 { 1076 "name": "set_parameter_from_group_max", 1077 "parameter_name": "proc_5_ioring_dvfs_decrease_temp", 1078 "modifier": { 1079 "operator": "minus", 1080 "value": 13 1081 } 1082 } 1083 ] 1084 }, 1085 { 1086 "name": "Set Proc 6 IO Ring DVFS parameter", 1087 "groups": [ 1088 { 1089 "name": "proc 6 ioring dvfs temp", 1090 "interface": "xyz.openbmc_project.Sensor.Value", 1091 "property": { "name": "Value" } 1092 } 1093 ], 1094 "triggers": [ 1095 { 1096 "class": "init", 1097 "method": "get_properties" 1098 }, 1099 { 1100 "class": "signal", 1101 "signal": "interfaces_added" 1102 }, 1103 { 1104 "class": "signal", 1105 "signal": "properties_changed" 1106 } 1107 ], 1108 "actions": [ 1109 { 1110 "name": "set_parameter_from_group_max", 1111 "parameter_name": "proc_6_ioring_dvfs_increase_temp", 1112 "modifier": { 1113 "operator": "minus", 1114 "value": 10 1115 } 1116 }, 1117 { 1118 "name": "set_parameter_from_group_max", 1119 "parameter_name": "proc_6_ioring_dvfs_decrease_temp", 1120 "modifier": { 1121 "operator": "minus", 1122 "value": 13 1123 } 1124 } 1125 ] 1126 }, 1127 { 1128 "name": "Set Proc 7 IO Ring DVFS parameter", 1129 "groups": [ 1130 { 1131 "name": "proc 7 ioring dvfs temp", 1132 "interface": "xyz.openbmc_project.Sensor.Value", 1133 "property": { "name": "Value" } 1134 } 1135 ], 1136 "triggers": [ 1137 { 1138 "class": "init", 1139 "method": "get_properties" 1140 }, 1141 { 1142 "class": "signal", 1143 "signal": "interfaces_added" 1144 }, 1145 { 1146 "class": "signal", 1147 "signal": "properties_changed" 1148 } 1149 ], 1150 "actions": [ 1151 { 1152 "name": "set_parameter_from_group_max", 1153 "parameter_name": "proc_7_ioring_dvfs_increase_temp", 1154 "modifier": { 1155 "operator": "minus", 1156 "value": 10 1157 } 1158 }, 1159 { 1160 "name": "set_parameter_from_group_max", 1161 "parameter_name": "proc_7_ioring_dvfs_decrease_temp", 1162 "modifier": { 1163 "operator": "minus", 1164 "value": 13 1165 } 1166 } 1167 ] 1168 }, 1169 { 1170 "name": "Set DRAM DVFS parameter", 1171 "groups": [ 1172 { 1173 "name": "dram dvfs temp", 1174 "interface": "xyz.openbmc_project.Sensor.Value", 1175 "property": { "name": "Value" } 1176 } 1177 ], 1178 "triggers": [ 1179 { 1180 "class": "init", 1181 "method": "get_properties" 1182 }, 1183 { 1184 "class": "signal", 1185 "signal": "properties_changed" 1186 }, 1187 { 1188 "class": "signal", 1189 "signal": "interfaces_added" 1190 } 1191 ], 1192 "actions": [ 1193 { 1194 "name": "set_parameter_from_group_max", 1195 "parameter_name": "dram_dvfs_increase_temp", 1196 "modifier": { 1197 "operator": "minus", 1198 "value": 8 1199 } 1200 }, 1201 { 1202 "name": "set_parameter_from_group_max", 1203 "parameter_name": "dram_dvfs_decrease_temp", 1204 "modifier": { 1205 "operator": "minus", 1206 "value": 11 1207 } 1208 } 1209 ] 1210 }, 1211 { 1212 "name": "Set PMIC DVFS parameter", 1213 "groups": [ 1214 { 1215 "name": "pmic dvfs temp", 1216 "interface": "xyz.openbmc_project.Sensor.Value", 1217 "property": { "name": "Value" } 1218 } 1219 ], 1220 "triggers": [ 1221 { 1222 "class": "init", 1223 "method": "get_properties" 1224 }, 1225 { 1226 "class": "signal", 1227 "signal": "properties_changed" 1228 }, 1229 { 1230 "class": "signal", 1231 "signal": "interfaces_added" 1232 } 1233 ], 1234 "actions": [ 1235 { 1236 "name": "set_parameter_from_group_max", 1237 "parameter_name": "pmic_dvfs_increase_temp", 1238 "modifier": { 1239 "operator": "minus", 1240 "value": 10 1241 } 1242 }, 1243 { 1244 "name": "set_parameter_from_group_max", 1245 "parameter_name": "pmic_dvfs_decrease_temp", 1246 "modifier": { 1247 "operator": "minus", 1248 "value": 13 1249 } 1250 } 1251 ] 1252 }, 1253 { 1254 "name": "Set internal memory buffer DVFS parameter", 1255 "groups": [ 1256 { 1257 "name": "internal memory buffer dvfs temp", 1258 "interface": "xyz.openbmc_project.Sensor.Value", 1259 "property": { "name": "Value" } 1260 } 1261 ], 1262 "triggers": [ 1263 { 1264 "class": "init", 1265 "method": "get_properties" 1266 }, 1267 { 1268 "class": "signal", 1269 "signal": "properties_changed" 1270 }, 1271 { 1272 "class": "signal", 1273 "signal": "interfaces_added" 1274 } 1275 ], 1276 "actions": [ 1277 { 1278 "name": "set_parameter_from_group_max", 1279 "parameter_name": "intmb_dvfs_increase_temp", 1280 "modifier": { 1281 "operator": "minus", 1282 "value": 9 1283 } 1284 }, 1285 { 1286 "name": "set_parameter_from_group_max", 1287 "parameter_name": "intmb_dvfs_decrease_temp", 1288 "modifier": { 1289 "operator": "minus", 1290 "value": 12 1291 } 1292 } 1293 ] 1294 }, 1295 { 1296 "name": "Set DRAM and external memory buffer DVFS parameter", 1297 "groups": [ 1298 { 1299 "name": "dram and external memory buffer dvfs temp", 1300 "interface": "xyz.openbmc_project.Sensor.Value", 1301 "property": { "name": "Value" } 1302 } 1303 ], 1304 "triggers": [ 1305 { 1306 "class": "init", 1307 "method": "get_properties" 1308 }, 1309 { 1310 "class": "signal", 1311 "signal": "properties_changed" 1312 }, 1313 { 1314 "class": "signal", 1315 "signal": "interfaces_added" 1316 } 1317 ], 1318 "actions": [ 1319 { 1320 "name": "set_parameter_from_group_max", 1321 "parameter_name": "dram_extmb_dvfs_increase_temp", 1322 "modifier": { 1323 "operator": "minus", 1324 "value": 10 1325 } 1326 }, 1327 { 1328 "name": "set_parameter_from_group_max", 1329 "parameter_name": "dram_extmb_dvfs_decrease_temp", 1330 "modifier": { 1331 "operator": "minus", 1332 "value": 13 1333 } 1334 } 1335 ] 1336 }, 1337 { 1338 "name": "Set external memory buffer DVFS parameter", 1339 "groups": [ 1340 { 1341 "name": "external memory buffer dvfs temp", 1342 "interface": "xyz.openbmc_project.Sensor.Value", 1343 "property": { "name": "Value" } 1344 } 1345 ], 1346 "triggers": [ 1347 { 1348 "class": "init", 1349 "method": "get_properties" 1350 }, 1351 { 1352 "class": "signal", 1353 "signal": "properties_changed" 1354 }, 1355 { 1356 "class": "signal", 1357 "signal": "interfaces_added" 1358 } 1359 ], 1360 "actions": [ 1361 { 1362 "name": "set_parameter_from_group_max", 1363 "parameter_name": "extmb_dvfs_increase_temp", 1364 "modifier": { 1365 "operator": "minus", 1366 "value": 10 1367 } 1368 }, 1369 { 1370 "name": "set_parameter_from_group_max", 1371 "parameter_name": "extmb_dvfs_decrease_temp", 1372 "modifier": { 1373 "operator": "minus", 1374 "value": 13 1375 } 1376 } 1377 ] 1378 }, 1379 { 1380 // Collect group temperatures each iteration the repeating timer expires 1381 "name": "Fan control timer loop", 1382 "groups": [ 1383 { 1384 "name": "proc0 core temps", 1385 "interface": "xyz.openbmc_project.Sensor.Value", 1386 "property": { "name": "Value" } 1387 }, 1388 { 1389 "name": "proc1 core temps", 1390 "interface": "xyz.openbmc_project.Sensor.Value", 1391 "property": { "name": "Value" } 1392 }, 1393 { 1394 "name": "proc2 core temps", 1395 "interface": "xyz.openbmc_project.Sensor.Value", 1396 "property": { "name": "Value" } 1397 }, 1398 { 1399 "name": "proc3 core temps", 1400 "interface": "xyz.openbmc_project.Sensor.Value", 1401 "property": { "name": "Value" } 1402 }, 1403 { 1404 "name": "proc4 core temps", 1405 "interface": "xyz.openbmc_project.Sensor.Value", 1406 "property": { "name": "Value" } 1407 }, 1408 { 1409 "name": "proc5 core temps", 1410 "interface": "xyz.openbmc_project.Sensor.Value", 1411 "property": { "name": "Value" } 1412 }, 1413 { 1414 "name": "proc6 core temps", 1415 "interface": "xyz.openbmc_project.Sensor.Value", 1416 "property": { "name": "Value" } 1417 }, 1418 { 1419 "name": "proc7 core temps", 1420 "interface": "xyz.openbmc_project.Sensor.Value", 1421 "property": { "name": "Value" } 1422 }, 1423 { 1424 "name": "proc0 ioring temp", 1425 "interface": "xyz.openbmc_project.Sensor.Value", 1426 "property": { "name": "Value" } 1427 }, 1428 { 1429 "name": "proc1 ioring temp", 1430 "interface": "xyz.openbmc_project.Sensor.Value", 1431 "property": { "name": "Value" } 1432 }, 1433 { 1434 "name": "proc2 ioring temp", 1435 "interface": "xyz.openbmc_project.Sensor.Value", 1436 "property": { "name": "Value" } 1437 }, 1438 { 1439 "name": "proc3 ioring temp", 1440 "interface": "xyz.openbmc_project.Sensor.Value", 1441 "property": { "name": "Value" } 1442 }, 1443 { 1444 "name": "proc4 ioring temp", 1445 "interface": "xyz.openbmc_project.Sensor.Value", 1446 "property": { "name": "Value" } 1447 }, 1448 { 1449 "name": "proc5 ioring temp", 1450 "interface": "xyz.openbmc_project.Sensor.Value", 1451 "property": { "name": "Value" } 1452 }, 1453 { 1454 "name": "proc6 ioring temp", 1455 "interface": "xyz.openbmc_project.Sensor.Value", 1456 "property": { "name": "Value" } 1457 }, 1458 { 1459 "name": "proc7 ioring temp", 1460 "interface": "xyz.openbmc_project.Sensor.Value", 1461 "property": { "name": "Value" } 1462 }, 1463 { 1464 "name": "dram temps", 1465 "interface": "xyz.openbmc_project.Sensor.Value", 1466 "property": { "name": "Value" } 1467 }, 1468 { 1469 "name": "pmic temps", 1470 "interface": "xyz.openbmc_project.Sensor.Value", 1471 "property": { "name": "Value" } 1472 }, 1473 { 1474 "name": "internal memory buffer temps", 1475 "interface": "xyz.openbmc_project.Sensor.Value", 1476 "property": { "name": "Value" } 1477 }, 1478 { 1479 "name": "dram and external memory buffer temps", 1480 "interface": "xyz.openbmc_project.Sensor.Value", 1481 "property": { "name": "Value" } 1482 }, 1483 { 1484 "name": "external memory buffer temps", 1485 "interface": "xyz.openbmc_project.Sensor.Value", 1486 "property": { "name": "Value" } 1487 }, 1488 { 1489 "name": "vdd vrm temps", 1490 "interface": "xyz.openbmc_project.Sensor.Value", 1491 "property": { "name": "Value" } 1492 }, 1493 { 1494 "name": "nvme temps", 1495 "interface": "xyz.openbmc_project.Sensor.Value", 1496 "property": { "name": "Value" } 1497 }, 1498 { 1499 "name": "planar temps", 1500 "interface": "xyz.openbmc_project.Sensor.Value", 1501 "property": { "name": "Value" } 1502 }, 1503 { 1504 "name": "pcie cable card temps", 1505 "interface": "xyz.openbmc_project.Sensor.Value", 1506 "property": { "name": "Value" } 1507 } 1508 ], 1509 "triggers": [ 1510 { 1511 "class": "timer", 1512 "type": "repeating", 1513 "interval": 2000000, 1514 "preload_groups": true 1515 } 1516 ], 1517 "actions": [ 1518 { 1519 "name": "set_net_increase_target", 1520 "groups": [ 1521 { 1522 "name": "proc0 core temps", 1523 "interface": "xyz.openbmc_project.Sensor.Value", 1524 "property": { "name": "Value" } 1525 } 1526 ], 1527 "state_parameter_name": "proc_0_core_dvfs_increase_temp", 1528 "delta": 255 1529 }, 1530 { 1531 "name": "set_net_increase_target", 1532 "groups": [ 1533 { 1534 "name": "proc1 core temps", 1535 "interface": "xyz.openbmc_project.Sensor.Value", 1536 "property": { "name": "Value" } 1537 } 1538 ], 1539 "state_parameter_name": "proc_1_core_dvfs_increase_temp", 1540 "delta": 255 1541 }, 1542 { 1543 "name": "set_net_increase_target", 1544 "groups": [ 1545 { 1546 "name": "proc2 core temps", 1547 "interface": "xyz.openbmc_project.Sensor.Value", 1548 "property": { "name": "Value" } 1549 } 1550 ], 1551 "state_parameter_name": "proc_2_core_dvfs_increase_temp", 1552 "delta": 255 1553 }, 1554 { 1555 "name": "set_net_increase_target", 1556 "groups": [ 1557 { 1558 "name": "proc3 core temps", 1559 "interface": "xyz.openbmc_project.Sensor.Value", 1560 "property": { "name": "Value" } 1561 } 1562 ], 1563 "state_parameter_name": "proc_3_core_dvfs_increase_temp", 1564 "delta": 255 1565 }, 1566 { 1567 "name": "set_net_increase_target", 1568 "groups": [ 1569 { 1570 "name": "proc4 core temps", 1571 "interface": "xyz.openbmc_project.Sensor.Value", 1572 "property": { "name": "Value" } 1573 } 1574 ], 1575 "state_parameter_name": "proc_4_core_dvfs_increase_temp", 1576 "delta": 255 1577 }, 1578 { 1579 "name": "set_net_increase_target", 1580 "groups": [ 1581 { 1582 "name": "proc5 core temps", 1583 "interface": "xyz.openbmc_project.Sensor.Value", 1584 "property": { "name": "Value" } 1585 } 1586 ], 1587 "state_parameter_name": "proc_5_core_dvfs_increase_temp", 1588 "delta": 255 1589 }, 1590 { 1591 "name": "set_net_increase_target", 1592 "groups": [ 1593 { 1594 "name": "proc6 core temps", 1595 "interface": "xyz.openbmc_project.Sensor.Value", 1596 "property": { "name": "Value" } 1597 } 1598 ], 1599 "state_parameter_name": "proc_6_core_dvfs_increase_temp", 1600 "delta": 255 1601 }, 1602 { 1603 "name": "set_net_increase_target", 1604 "groups": [ 1605 { 1606 "name": "proc7 core temps", 1607 "interface": "xyz.openbmc_project.Sensor.Value", 1608 "property": { "name": "Value" } 1609 } 1610 ], 1611 "state_parameter_name": "proc_7_core_dvfs_increase_temp", 1612 "delta": 255 1613 }, 1614 { 1615 "name": "set_net_increase_target", 1616 "groups": [ 1617 { 1618 "name": "proc0 ioring temp", 1619 "interface": "xyz.openbmc_project.Sensor.Value", 1620 "property": { "name": "Value" } 1621 } 1622 ], 1623 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp", 1624 "delta": 255 1625 }, 1626 { 1627 "name": "set_net_increase_target", 1628 "groups": [ 1629 { 1630 "name": "proc1 ioring temp", 1631 "interface": "xyz.openbmc_project.Sensor.Value", 1632 "property": { "name": "Value" } 1633 } 1634 ], 1635 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp", 1636 "delta": 255 1637 }, 1638 { 1639 "name": "set_net_increase_target", 1640 "groups": [ 1641 { 1642 "name": "proc2 ioring temp", 1643 "interface": "xyz.openbmc_project.Sensor.Value", 1644 "property": { "name": "Value" } 1645 } 1646 ], 1647 "state_parameter_name": "proc_2_ioring_dvfs_increase_temp", 1648 "delta": 255 1649 }, 1650 { 1651 "name": "set_net_increase_target", 1652 "groups": [ 1653 { 1654 "name": "proc3 ioring temp", 1655 "interface": "xyz.openbmc_project.Sensor.Value", 1656 "property": { "name": "Value" } 1657 } 1658 ], 1659 "state_parameter_name": "proc_3_ioring_dvfs_increase_temp", 1660 "delta": 255 1661 }, 1662 { 1663 "name": "set_net_increase_target", 1664 "groups": [ 1665 { 1666 "name": "proc4 ioring temp", 1667 "interface": "xyz.openbmc_project.Sensor.Value", 1668 "property": { "name": "Value" } 1669 } 1670 ], 1671 "state_parameter_name": "proc_4_ioring_dvfs_increase_temp", 1672 "delta": 255 1673 }, 1674 { 1675 "name": "set_net_increase_target", 1676 "groups": [ 1677 { 1678 "name": "proc5 ioring temp", 1679 "interface": "xyz.openbmc_project.Sensor.Value", 1680 "property": { "name": "Value" } 1681 } 1682 ], 1683 "state_parameter_name": "proc_5_ioring_dvfs_increase_temp", 1684 "delta": 255 1685 }, 1686 { 1687 "name": "set_net_increase_target", 1688 "groups": [ 1689 { 1690 "name": "proc6 ioring temp", 1691 "interface": "xyz.openbmc_project.Sensor.Value", 1692 "property": { "name": "Value" } 1693 } 1694 ], 1695 "state_parameter_name": "proc_6_ioring_dvfs_increase_temp", 1696 "delta": 255 1697 }, 1698 { 1699 "name": "set_net_increase_target", 1700 "groups": [ 1701 { 1702 "name": "proc7 ioring temp", 1703 "interface": "xyz.openbmc_project.Sensor.Value", 1704 "property": { "name": "Value" } 1705 } 1706 ], 1707 "state_parameter_name": "proc_7_ioring_dvfs_increase_temp", 1708 "delta": 255 1709 }, 1710 { 1711 "name": "set_net_increase_target", 1712 "groups": [ 1713 { 1714 "name": "dram temps", 1715 "interface": "xyz.openbmc_project.Sensor.Value", 1716 "property": { "name": "Value" } 1717 } 1718 ], 1719 "state_parameter_name": "dram_dvfs_increase_temp", 1720 "delta": 175 1721 }, 1722 { 1723 "name": "set_net_increase_target", 1724 "groups": [ 1725 { 1726 "name": "pmic temps", 1727 "interface": "xyz.openbmc_project.Sensor.Value", 1728 "property": { "name": "Value" } 1729 } 1730 ], 1731 "state_parameter_name": "pmic_dvfs_increase_temp", 1732 "delta": 200 1733 }, 1734 { 1735 "name": "set_net_increase_target", 1736 "groups": [ 1737 { 1738 "name": "internal memory buffer temps", 1739 "interface": "xyz.openbmc_project.Sensor.Value", 1740 "property": { "name": "Value" } 1741 } 1742 ], 1743 "state_parameter_name": "intmb_dvfs_increase_temp", 1744 "delta": 150 1745 }, 1746 { 1747 "name": "set_net_increase_target", 1748 "groups": [ 1749 { 1750 "name": "dram and external memory buffer temps", 1751 "interface": "xyz.openbmc_project.Sensor.Value", 1752 "property": { "name": "Value" } 1753 } 1754 ], 1755 "state_parameter_name": "dram_extmb_dvfs_increase_temp", 1756 "delta": 200 1757 }, 1758 { 1759 "name": "set_net_increase_target", 1760 "groups": [ 1761 { 1762 "name": "external memory buffer temps", 1763 "interface": "xyz.openbmc_project.Sensor.Value", 1764 "property": { "name": "Value" } 1765 } 1766 ], 1767 "state_parameter_name": "extmb_dvfs_increase_temp", 1768 "delta": 200 1769 }, 1770 { 1771 "name": "set_net_increase_target", 1772 "groups": [ 1773 { 1774 "name": "vdd vrm temps", 1775 "interface": "xyz.openbmc_project.Sensor.Value", 1776 "property": { "name": "Value" } 1777 } 1778 ], 1779 "state": 85.0, 1780 "delta": 255 1781 }, 1782 { 1783 "name": "set_net_increase_target", 1784 "groups": [ 1785 { 1786 "name": "nvme temps", 1787 "interface": "xyz.openbmc_project.Sensor.Value", 1788 "property": { "name": "Value" } 1789 } 1790 ], 1791 "state": 58.0, 1792 "delta": 200 1793 }, 1794 { 1795 "name": "set_net_increase_target", 1796 "groups": [ 1797 { 1798 "name": "planar temps", 1799 "interface": "xyz.openbmc_project.Sensor.Value", 1800 "property": { "name": "Value" } 1801 } 1802 ], 1803 "state": 50.0, 1804 "delta": 255 1805 }, 1806 { 1807 "name": "set_net_increase_target", 1808 "groups": [ 1809 { 1810 "name": "pcie cable card temps", 1811 "interface": "xyz.openbmc_project.Sensor.Value", 1812 "property": { "name": "Value" } 1813 } 1814 ], 1815 "state": 70.0, 1816 "delta": 255 1817 }, 1818 { 1819 "name": "set_net_decrease_target", 1820 "groups": [ 1821 { 1822 "name": "proc0 core temps", 1823 "interface": "xyz.openbmc_project.Sensor.Value", 1824 "property": { "name": "Value" } 1825 } 1826 ], 1827 "state_parameter_name": "proc_0_core_dvfs_decrease_temp", 1828 "delta": 50 1829 }, 1830 { 1831 "name": "set_net_decrease_target", 1832 "groups": [ 1833 { 1834 "name": "proc1 core temps", 1835 "interface": "xyz.openbmc_project.Sensor.Value", 1836 "property": { "name": "Value" } 1837 } 1838 ], 1839 "state_parameter_name": "proc_1_core_dvfs_decrease_temp", 1840 "delta": 50 1841 }, 1842 { 1843 "name": "set_net_decrease_target", 1844 "groups": [ 1845 { 1846 "name": "proc2 core temps", 1847 "interface": "xyz.openbmc_project.Sensor.Value", 1848 "property": { "name": "Value" } 1849 } 1850 ], 1851 "state_parameter_name": "proc_2_core_dvfs_decrease_temp", 1852 "delta": 50 1853 }, 1854 { 1855 "name": "set_net_decrease_target", 1856 "groups": [ 1857 { 1858 "name": "proc3 core temps", 1859 "interface": "xyz.openbmc_project.Sensor.Value", 1860 "property": { "name": "Value" } 1861 } 1862 ], 1863 "state_parameter_name": "proc_3_core_dvfs_decrease_temp", 1864 "delta": 50 1865 }, 1866 { 1867 "name": "set_net_decrease_target", 1868 "groups": [ 1869 { 1870 "name": "proc4 core temps", 1871 "interface": "xyz.openbmc_project.Sensor.Value", 1872 "property": { "name": "Value" } 1873 } 1874 ], 1875 "state_parameter_name": "proc_4_core_dvfs_decrease_temp", 1876 "delta": 50 1877 }, 1878 { 1879 "name": "set_net_decrease_target", 1880 "groups": [ 1881 { 1882 "name": "proc5 core temps", 1883 "interface": "xyz.openbmc_project.Sensor.Value", 1884 "property": { "name": "Value" } 1885 } 1886 ], 1887 "state_parameter_name": "proc_5_core_dvfs_decrease_temp", 1888 "delta": 50 1889 }, 1890 { 1891 "name": "set_net_decrease_target", 1892 "groups": [ 1893 { 1894 "name": "proc6 core temps", 1895 "interface": "xyz.openbmc_project.Sensor.Value", 1896 "property": { "name": "Value" } 1897 } 1898 ], 1899 "state_parameter_name": "proc_6_core_dvfs_decrease_temp", 1900 "delta": 50 1901 }, 1902 { 1903 "name": "set_net_decrease_target", 1904 "groups": [ 1905 { 1906 "name": "proc7 core temps", 1907 "interface": "xyz.openbmc_project.Sensor.Value", 1908 "property": { "name": "Value" } 1909 } 1910 ], 1911 "state_parameter_name": "proc_7_core_dvfs_decrease_temp", 1912 "delta": 50 1913 }, 1914 { 1915 "name": "set_net_decrease_target", 1916 "groups": [ 1917 { 1918 "name": "proc0 ioring temp", 1919 "interface": "xyz.openbmc_project.Sensor.Value", 1920 "property": { "name": "Value" } 1921 } 1922 ], 1923 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp", 1924 "delta": 50 1925 }, 1926 { 1927 "name": "set_net_decrease_target", 1928 "groups": [ 1929 { 1930 "name": "proc1 ioring temp", 1931 "interface": "xyz.openbmc_project.Sensor.Value", 1932 "property": { "name": "Value" } 1933 } 1934 ], 1935 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp", 1936 "delta": 50 1937 }, 1938 { 1939 "name": "set_net_decrease_target", 1940 "groups": [ 1941 { 1942 "name": "proc2 ioring temp", 1943 "interface": "xyz.openbmc_project.Sensor.Value", 1944 "property": { "name": "Value" } 1945 } 1946 ], 1947 "state_parameter_name": "proc_2_ioring_dvfs_decrease_temp", 1948 "delta": 50 1949 }, 1950 { 1951 "name": "set_net_decrease_target", 1952 "groups": [ 1953 { 1954 "name": "proc3 ioring temp", 1955 "interface": "xyz.openbmc_project.Sensor.Value", 1956 "property": { "name": "Value" } 1957 } 1958 ], 1959 "state_parameter_name": "proc_3_ioring_dvfs_decrease_temp", 1960 "delta": 50 1961 }, 1962 { 1963 "name": "set_net_decrease_target", 1964 "groups": [ 1965 { 1966 "name": "proc4 ioring temp", 1967 "interface": "xyz.openbmc_project.Sensor.Value", 1968 "property": { "name": "Value" } 1969 } 1970 ], 1971 "state_parameter_name": "proc_4_ioring_dvfs_decrease_temp", 1972 "delta": 50 1973 }, 1974 { 1975 "name": "set_net_decrease_target", 1976 "groups": [ 1977 { 1978 "name": "proc5 ioring temp", 1979 "interface": "xyz.openbmc_project.Sensor.Value", 1980 "property": { "name": "Value" } 1981 } 1982 ], 1983 "state_parameter_name": "proc_5_ioring_dvfs_decrease_temp", 1984 "delta": 50 1985 }, 1986 { 1987 "name": "set_net_decrease_target", 1988 "groups": [ 1989 { 1990 "name": "proc6 ioring temp", 1991 "interface": "xyz.openbmc_project.Sensor.Value", 1992 "property": { "name": "Value" } 1993 } 1994 ], 1995 "state_parameter_name": "proc_6_ioring_dvfs_decrease_temp", 1996 "delta": 50 1997 }, 1998 { 1999 "name": "set_net_decrease_target", 2000 "groups": [ 2001 { 2002 "name": "proc7 ioring temp", 2003 "interface": "xyz.openbmc_project.Sensor.Value", 2004 "property": { "name": "Value" } 2005 } 2006 ], 2007 "state_parameter_name": "proc_7_ioring_dvfs_decrease_temp", 2008 "delta": 50 2009 }, 2010 { 2011 "name": "set_net_decrease_target", 2012 "groups": [ 2013 { 2014 "name": "dram temps", 2015 "interface": "xyz.openbmc_project.Sensor.Value", 2016 "property": { "name": "Value" } 2017 } 2018 ], 2019 "state_parameter_name": "dram_dvfs_decrease_temp", 2020 "delta": 40 2021 }, 2022 { 2023 "name": "set_net_decrease_target", 2024 "groups": [ 2025 { 2026 "name": "pmic temps", 2027 "interface": "xyz.openbmc_project.Sensor.Value", 2028 "property": { "name": "Value" } 2029 } 2030 ], 2031 "state_parameter_name": "pmic_dvfs_decrease_temp", 2032 "delta": 40 2033 }, 2034 { 2035 "name": "set_net_decrease_target", 2036 "groups": [ 2037 { 2038 "name": "internal memory buffer temps", 2039 "interface": "xyz.openbmc_project.Sensor.Value", 2040 "property": { "name": "Value" } 2041 } 2042 ], 2043 "state_parameter_name": "intmb_dvfs_decrease_temp", 2044 "delta": 40 2045 }, 2046 { 2047 "name": "set_net_decrease_target", 2048 "groups": [ 2049 { 2050 "name": "dram and external memory buffer temps", 2051 "interface": "xyz.openbmc_project.Sensor.Value", 2052 "property": { "name": "Value" } 2053 } 2054 ], 2055 "state_parameter_name": "dram_extmb_dvfs_decrease_temp", 2056 "delta": 40 2057 }, 2058 { 2059 "name": "set_net_decrease_target", 2060 "groups": [ 2061 { 2062 "name": "external memory buffer temps", 2063 "interface": "xyz.openbmc_project.Sensor.Value", 2064 "property": { "name": "Value" } 2065 } 2066 ], 2067 "state_parameter_name": "extmb_dvfs_decrease_temp", 2068 "delta": 40 2069 }, 2070 { 2071 "name": "set_net_decrease_target", 2072 "groups": [ 2073 { 2074 "name": "vdd vrm temps", 2075 "interface": "xyz.openbmc_project.Sensor.Value", 2076 "property": { "name": "Value" } 2077 } 2078 ], 2079 "state": 80.0, 2080 "delta": 30 2081 }, 2082 { 2083 "name": "set_net_decrease_target", 2084 "groups": [ 2085 { 2086 "name": "nvme temps", 2087 "interface": "xyz.openbmc_project.Sensor.Value", 2088 "property": { "name": "Value" } 2089 } 2090 ], 2091 "state": 55.0, 2092 "delta": 40 2093 }, 2094 { 2095 "name": "set_net_decrease_target", 2096 "groups": [ 2097 { 2098 "name": "planar temps", 2099 "interface": "xyz.openbmc_project.Sensor.Value", 2100 "property": { "name": "Value" } 2101 } 2102 ], 2103 "state": 48.0, 2104 "delta": 80 2105 }, 2106 { 2107 "name": "set_net_decrease_target", 2108 "groups": [ 2109 { 2110 "name": "pcie cable card temps", 2111 "interface": "xyz.openbmc_project.Sensor.Value", 2112 "property": { "name": "Value" } 2113 } 2114 ], 2115 "state": 65.0, 2116 "delta": 80 2117 } 2118 ] 2119 }, 2120 { 2121 // Remove NVMe temperature objects from cache when they are removed from 2122 // dbus. There's no need to react to their removal. 2123 "name": "remove nvme objects", 2124 "groups": [ 2125 { 2126 "name": "nvme temps", 2127 "interface": "xyz.openbmc_project.Sensor.Value", 2128 "property": { "name": "Value" } 2129 }, 2130 { 2131 "name": "nvme temps", 2132 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 2133 "property": { "name": "Functional" } 2134 } 2135 ], 2136 "triggers": [ 2137 { 2138 "class": "signal", 2139 "signal": "interfaces_removed" 2140 } 2141 ] 2142 }, 2143 { 2144 "name": "set pcie floor index", 2145 "groups": [ 2146 { 2147 "name": "pcie slots", 2148 "interface": "xyz.openbmc_project.State.Decorator.PowerState", 2149 "property": { 2150 "name": "PowerState" 2151 } 2152 }, 2153 { 2154 "name": "pcie cards", 2155 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 2156 "property": { 2157 "name": "Function0DeviceId" 2158 } 2159 }, 2160 { 2161 "name": "pcie cards", 2162 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 2163 "property": { 2164 "name": "Function0VendorId" 2165 } 2166 }, 2167 { 2168 "name": "pcie cards", 2169 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 2170 "property": { 2171 "name": "Function0SubsystemId" 2172 } 2173 }, 2174 { 2175 "name": "pcie cards", 2176 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 2177 "property": { 2178 "name": "Function0SubsystemVendorId" 2179 } 2180 } 2181 ], 2182 "triggers": [ 2183 { 2184 "class": "init", 2185 "method": "get_properties" 2186 }, 2187 { 2188 "class": "signal", 2189 "signal": "properties_changed" 2190 }, 2191 { 2192 "class": "signal", 2193 "signal": "interfaces_added" 2194 } 2195 ], 2196 "actions": [ 2197 { 2198 "name": "pcie_card_floors", 2199 "use_config_specific_files": true, 2200 "settle_time": 2 2201 } 2202 ] 2203 }, 2204 { 2205 "name": "Set altitude offset parameter", 2206 "groups": [ 2207 { 2208 "name": "altitude", 2209 "interface": "xyz.openbmc_project.Sensor.Value", 2210 "property": { "name": "Value" } 2211 } 2212 ], 2213 "triggers": [ 2214 { 2215 "class": "init", 2216 "method": "get_properties" 2217 }, 2218 { 2219 "class": "signal", 2220 "signal": "interfaces_added" 2221 }, 2222 { 2223 // Refresh altitude every 24hrs 2224 "class": "timer", 2225 "type": "repeating", 2226 "interval": 86400000000, 2227 "preload_groups": true 2228 } 2229 ], 2230 "actions": [ 2231 { 2232 "name": "set_parameter_from_group_max", 2233 "parameter_name": "ambient_20_altitude_offset", 2234 "modifier": { 2235 "operator": "less_than", 2236 "default_value": 1500, 2237 "value": [ 2238 { "arg_value": 500, "parameter_value": 0 }, 2239 { "arg_value": 1000, "parameter_value": 375 }, 2240 { "arg_value": 1500, "parameter_value": 550 }, 2241 { "arg_value": 2000, "parameter_value": 775 }, 2242 { "arg_value": 2500, "parameter_value": 1000 }, 2243 { "arg_value": 3050, "parameter_value": 1275 } 2244 ] 2245 } 2246 }, 2247 { 2248 "name": "set_parameter_from_group_max", 2249 "parameter_name": "ambient_25_altitude_offset", 2250 "modifier": { 2251 "operator": "less_than", 2252 "default_value": 2000, 2253 "value": [ 2254 { "arg_value": 500, "parameter_value": 0 }, 2255 { "arg_value": 1000, "parameter_value": 450 }, 2256 { "arg_value": 1500, "parameter_value": 700 }, 2257 { "arg_value": 2000, "parameter_value": 975 }, 2258 { "arg_value": 2500, "parameter_value": 1275 }, 2259 { "arg_value": 3050, "parameter_value": 1625 } 2260 ] 2261 } 2262 }, 2263 { 2264 "name": "set_parameter_from_group_max", 2265 "parameter_name": "ambient_30_altitude_offset", 2266 "modifier": { 2267 "operator": "less_than", 2268 "default_value": 2500, 2269 "value": [ 2270 { "arg_value": 500, "parameter_value": 0 }, 2271 { "arg_value": 1000, "parameter_value": 600 }, 2272 { "arg_value": 1500, "parameter_value": 900 }, 2273 { "arg_value": 2000, "parameter_value": 1275 }, 2274 { "arg_value": 2500, "parameter_value": 1650 }, 2275 { "arg_value": 3050, "parameter_value": 2100 } 2276 ] 2277 } 2278 }, 2279 { 2280 "name": "set_parameter_from_group_max", 2281 "parameter_name": "ambient_35_altitude_offset", 2282 "modifier": { 2283 "operator": "less_than", 2284 "default_value": 3000, 2285 "value": [ 2286 { "arg_value": 500, "parameter_value": 0 }, 2287 { "arg_value": 1000, "parameter_value": 750 }, 2288 { "arg_value": 1500, "parameter_value": 1175 }, 2289 { "arg_value": 2000, "parameter_value": 1625 }, 2290 { "arg_value": 2500, "parameter_value": 2125 }, 2291 { "arg_value": 3050, "parameter_value": 2725 } 2292 ] 2293 } 2294 }, 2295 { 2296 "name": "set_parameter_from_group_max", 2297 "parameter_name": "ambient_40_altitude_offset", 2298 "modifier": { 2299 "operator": "less_than", 2300 "default_value": 3500, 2301 "value": [ 2302 { "arg_value": 500, "parameter_value": 0 }, 2303 { "arg_value": 1000, "parameter_value": 975 }, 2304 { "arg_value": 1500, "parameter_value": 1500 }, 2305 { "arg_value": 2000, "parameter_value": 2100 }, 2306 { "arg_value": 2500, "parameter_value": 2750 }, 2307 { "arg_value": 3050, "parameter_value": 3500 } 2308 ] 2309 } 2310 } 2311 ] 2312 }, 2313 { 2314 "name": "Fan floors", 2315 "groups": [ 2316 { 2317 "name": "ambient temp", 2318 "interface": "xyz.openbmc_project.Sensor.Value", 2319 "property": { "name": "Value" } 2320 } 2321 ], 2322 "triggers": [ 2323 { 2324 "class": "init", 2325 "method": "get_properties" 2326 }, 2327 { 2328 "class": "signal", 2329 "signal": "properties_changed" 2330 }, 2331 { 2332 "class": "signal", 2333 "signal": "interfaces_added" 2334 }, 2335 { 2336 "class": "parameter", 2337 "parameter": "pcie_floor_index" 2338 }, 2339 { 2340 "class": "parameter", 2341 "parameter": "ambient_20_altitude_offset" 2342 }, 2343 { 2344 "class": "parameter", 2345 "parameter": "ambient_25_altitude_offset" 2346 }, 2347 { 2348 "class": "parameter", 2349 "parameter": "ambient_30_altitude_offset" 2350 }, 2351 { 2352 "class": "parameter", 2353 "parameter": "ambient_35_altitude_offset" 2354 }, 2355 { 2356 "class": "parameter", 2357 "parameter": "ambient_40_altitude_offset" 2358 } 2359 ], 2360 "actions": [ 2361 { 2362 "name": "mapped_floor", 2363 "key_group": "ambient temp", 2364 "fan_floors": [ 2365 { 2366 // Entry valid for temps < 20 2367 "key": 20, 2368 "default_floor": 3800, 2369 "floor_offset_parameter": "ambient_20_altitude_offset", 2370 "floors": [ 2371 { 2372 "parameter": "pcie_floor_index", 2373 "floors": [ 2374 { "value": 1, "floor": 3800 }, 2375 { "value": 2, "floor": 4200 }, 2376 { "value": 3, "floor": 4600 } 2377 ] 2378 } 2379 ] 2380 }, 2381 { 2382 // Entry valid for temps < 25 2383 "key": 25, 2384 "default_floor": 4400, 2385 "floor_offset_parameter": "ambient_25_altitude_offset", 2386 "floors": [ 2387 { 2388 "parameter": "pcie_floor_index", 2389 "floors": [ 2390 { "value": 1, "floor": 4400 }, 2391 { "value": 2, "floor": 4800 }, 2392 { "value": 3, "floor": 5400 } 2393 ] 2394 } 2395 ] 2396 }, 2397 { 2398 // Entry valid for temps < 30 2399 "key": 30, 2400 "default_floor": 5000, 2401 "floor_offset_parameter": "ambient_30_altitude_offset", 2402 "floors": [ 2403 { 2404 "parameter": "pcie_floor_index", 2405 "floors": [ 2406 { "value": 1, "floor": 5000 }, 2407 { "value": 2, "floor": 5600 }, 2408 { "value": 3, "floor": 6500 } 2409 ] 2410 } 2411 ] 2412 }, 2413 { 2414 // Entry valid for temps < 35 2415 "key": 35, 2416 "default_floor": 5800, 2417 "floor_offset_parameter": "ambient_35_altitude_offset", 2418 "floors": [ 2419 { 2420 "parameter": "pcie_floor_index", 2421 "floors": [ 2422 { "value": 1, "floor": 5800 }, 2423 { "value": 2, "floor": 6700 }, 2424 { "value": 3, "floor": 7700 } 2425 ] 2426 } 2427 ] 2428 }, 2429 { 2430 // Entry valid for temps < 40 2431 "key": 40, 2432 "default_floor": 6900, 2433 "floor_offset_parameter": "ambient_40_altitude_offset", 2434 "floors": [ 2435 { 2436 "parameter": "pcie_floor_index", 2437 "floors": [ 2438 { "value": 1, "floor": 6900 }, 2439 { "value": 2, "floor": 7900 }, 2440 { "value": 3, "floor": 9200 } 2441 ] 2442 } 2443 ] 2444 } 2445 ] 2446 } 2447 ] 2448 } 2449] 2450