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 "floor": 11300 493 } 494 ] 495 }, 496 { 497 "name": "Set Proc 0 Core DVFS parameter", 498 "groups": [ 499 { 500 "name": "proc 0 core dvfs temp", 501 "interface": "xyz.openbmc_project.Sensor.Value", 502 "property": { "name": "Value" } 503 } 504 ], 505 "triggers": [ 506 { 507 "class": "init", 508 "method": "get_properties" 509 }, 510 { 511 "class": "signal", 512 "signal": "interfaces_added" 513 }, 514 { 515 "class": "signal", 516 "signal": "properties_changed" 517 } 518 ], 519 "actions": [ 520 { 521 "name": "set_parameter_from_group_max", 522 "parameter_name": "proc_0_core_dvfs_increase_temp", 523 "modifier": { 524 "operator": "minus", 525 "value": 7 526 } 527 }, 528 { 529 "name": "set_parameter_from_group_max", 530 "parameter_name": "proc_0_core_dvfs_decrease_temp", 531 "modifier": { 532 "operator": "minus", 533 "value": 9 534 } 535 } 536 ] 537 }, 538 { 539 "name": "Set Proc 1 Core DVFS parameter", 540 "groups": [ 541 { 542 "name": "proc 1 core dvfs temp", 543 "interface": "xyz.openbmc_project.Sensor.Value", 544 "property": { "name": "Value" } 545 } 546 ], 547 "triggers": [ 548 { 549 "class": "init", 550 "method": "get_properties" 551 }, 552 { 553 "class": "signal", 554 "signal": "interfaces_added" 555 }, 556 { 557 "class": "signal", 558 "signal": "properties_changed" 559 } 560 ], 561 "actions": [ 562 { 563 "name": "set_parameter_from_group_max", 564 "parameter_name": "proc_1_core_dvfs_increase_temp", 565 "modifier": { 566 "operator": "minus", 567 "value": 7 568 } 569 }, 570 { 571 "name": "set_parameter_from_group_max", 572 "parameter_name": "proc_1_core_dvfs_decrease_temp", 573 "modifier": { 574 "operator": "minus", 575 "value": 9 576 } 577 } 578 ] 579 }, 580 { 581 "name": "Set Proc 2 Core DVFS parameter", 582 "groups": [ 583 { 584 "name": "proc 2 core dvfs temp", 585 "interface": "xyz.openbmc_project.Sensor.Value", 586 "property": { "name": "Value" } 587 } 588 ], 589 "triggers": [ 590 { 591 "class": "init", 592 "method": "get_properties" 593 }, 594 { 595 "class": "signal", 596 "signal": "interfaces_added" 597 }, 598 { 599 "class": "signal", 600 "signal": "properties_changed" 601 } 602 ], 603 "actions": [ 604 { 605 "name": "set_parameter_from_group_max", 606 "parameter_name": "proc_2_core_dvfs_increase_temp", 607 "modifier": { 608 "operator": "minus", 609 "value": 7 610 } 611 }, 612 { 613 "name": "set_parameter_from_group_max", 614 "parameter_name": "proc_2_core_dvfs_decrease_temp", 615 "modifier": { 616 "operator": "minus", 617 "value": 9 618 } 619 } 620 ] 621 }, 622 { 623 "name": "Set Proc 3 Core DVFS parameter", 624 "groups": [ 625 { 626 "name": "proc 3 core dvfs temp", 627 "interface": "xyz.openbmc_project.Sensor.Value", 628 "property": { "name": "Value" } 629 } 630 ], 631 "triggers": [ 632 { 633 "class": "init", 634 "method": "get_properties" 635 }, 636 { 637 "class": "signal", 638 "signal": "interfaces_added" 639 }, 640 { 641 "class": "signal", 642 "signal": "properties_changed" 643 } 644 ], 645 "actions": [ 646 { 647 "name": "set_parameter_from_group_max", 648 "parameter_name": "proc_3_core_dvfs_increase_temp", 649 "modifier": { 650 "operator": "minus", 651 "value": 7 652 } 653 }, 654 { 655 "name": "set_parameter_from_group_max", 656 "parameter_name": "proc_3_core_dvfs_decrease_temp", 657 "modifier": { 658 "operator": "minus", 659 "value": 9 660 } 661 } 662 ] 663 }, 664 { 665 "name": "Set Proc 4 Core DVFS parameter", 666 "groups": [ 667 { 668 "name": "proc 4 core dvfs temp", 669 "interface": "xyz.openbmc_project.Sensor.Value", 670 "property": { "name": "Value" } 671 } 672 ], 673 "triggers": [ 674 { 675 "class": "init", 676 "method": "get_properties" 677 }, 678 { 679 "class": "signal", 680 "signal": "interfaces_added" 681 }, 682 { 683 "class": "signal", 684 "signal": "properties_changed" 685 } 686 ], 687 "actions": [ 688 { 689 "name": "set_parameter_from_group_max", 690 "parameter_name": "proc_4_core_dvfs_increase_temp", 691 "modifier": { 692 "operator": "minus", 693 "value": 7 694 } 695 }, 696 { 697 "name": "set_parameter_from_group_max", 698 "parameter_name": "proc_4_core_dvfs_decrease_temp", 699 "modifier": { 700 "operator": "minus", 701 "value": 9 702 } 703 } 704 ] 705 }, 706 { 707 "name": "Set Proc 5 Core DVFS parameter", 708 "groups": [ 709 { 710 "name": "proc 5 core dvfs temp", 711 "interface": "xyz.openbmc_project.Sensor.Value", 712 "property": { "name": "Value" } 713 } 714 ], 715 "triggers": [ 716 { 717 "class": "init", 718 "method": "get_properties" 719 }, 720 { 721 "class": "signal", 722 "signal": "interfaces_added" 723 }, 724 { 725 "class": "signal", 726 "signal": "properties_changed" 727 } 728 ], 729 "actions": [ 730 { 731 "name": "set_parameter_from_group_max", 732 "parameter_name": "proc_5_core_dvfs_increase_temp", 733 "modifier": { 734 "operator": "minus", 735 "value": 7 736 } 737 }, 738 { 739 "name": "set_parameter_from_group_max", 740 "parameter_name": "proc_5_core_dvfs_decrease_temp", 741 "modifier": { 742 "operator": "minus", 743 "value": 9 744 } 745 } 746 ] 747 }, 748 { 749 "name": "Set Proc 6 Core DVFS parameter", 750 "groups": [ 751 { 752 "name": "proc 6 core dvfs temp", 753 "interface": "xyz.openbmc_project.Sensor.Value", 754 "property": { "name": "Value" } 755 } 756 ], 757 "triggers": [ 758 { 759 "class": "init", 760 "method": "get_properties" 761 }, 762 { 763 "class": "signal", 764 "signal": "interfaces_added" 765 }, 766 { 767 "class": "signal", 768 "signal": "properties_changed" 769 } 770 ], 771 "actions": [ 772 { 773 "name": "set_parameter_from_group_max", 774 "parameter_name": "proc_6_core_dvfs_increase_temp", 775 "modifier": { 776 "operator": "minus", 777 "value": 7 778 } 779 }, 780 { 781 "name": "set_parameter_from_group_max", 782 "parameter_name": "proc_6_core_dvfs_decrease_temp", 783 "modifier": { 784 "operator": "minus", 785 "value": 9 786 } 787 } 788 ] 789 }, 790 { 791 "name": "Set Proc 7 Core DVFS parameter", 792 "groups": [ 793 { 794 "name": "proc 7 core dvfs temp", 795 "interface": "xyz.openbmc_project.Sensor.Value", 796 "property": { "name": "Value" } 797 } 798 ], 799 "triggers": [ 800 { 801 "class": "init", 802 "method": "get_properties" 803 }, 804 { 805 "class": "signal", 806 "signal": "interfaces_added" 807 }, 808 { 809 "class": "signal", 810 "signal": "properties_changed" 811 } 812 ], 813 "actions": [ 814 { 815 "name": "set_parameter_from_group_max", 816 "parameter_name": "proc_7_core_dvfs_increase_temp", 817 "modifier": { 818 "operator": "minus", 819 "value": 7 820 } 821 }, 822 { 823 "name": "set_parameter_from_group_max", 824 "parameter_name": "proc_7_core_dvfs_decrease_temp", 825 "modifier": { 826 "operator": "minus", 827 "value": 9 828 } 829 } 830 ] 831 }, 832 { 833 "name": "Set Proc 0 IO Ring DVFS parameter", 834 "groups": [ 835 { 836 "name": "proc 0 ioring dvfs temp", 837 "interface": "xyz.openbmc_project.Sensor.Value", 838 "property": { "name": "Value" } 839 } 840 ], 841 "triggers": [ 842 { 843 "class": "init", 844 "method": "get_properties" 845 }, 846 { 847 "class": "signal", 848 "signal": "interfaces_added" 849 }, 850 { 851 "class": "signal", 852 "signal": "properties_changed" 853 } 854 ], 855 "actions": [ 856 { 857 "name": "set_parameter_from_group_max", 858 "parameter_name": "proc_0_ioring_dvfs_increase_temp", 859 "modifier": { 860 "operator": "minus", 861 "value": 10 862 } 863 }, 864 { 865 "name": "set_parameter_from_group_max", 866 "parameter_name": "proc_0_ioring_dvfs_decrease_temp", 867 "modifier": { 868 "operator": "minus", 869 "value": 13 870 } 871 } 872 ] 873 }, 874 { 875 "name": "Set Proc 1 IO Ring DVFS parameter", 876 "groups": [ 877 { 878 "name": "proc 1 ioring dvfs temp", 879 "interface": "xyz.openbmc_project.Sensor.Value", 880 "property": { "name": "Value" } 881 } 882 ], 883 "triggers": [ 884 { 885 "class": "init", 886 "method": "get_properties" 887 }, 888 { 889 "class": "signal", 890 "signal": "interfaces_added" 891 }, 892 { 893 "class": "signal", 894 "signal": "properties_changed" 895 } 896 ], 897 "actions": [ 898 { 899 "name": "set_parameter_from_group_max", 900 "parameter_name": "proc_1_ioring_dvfs_increase_temp", 901 "modifier": { 902 "operator": "minus", 903 "value": 10 904 } 905 }, 906 { 907 "name": "set_parameter_from_group_max", 908 "parameter_name": "proc_1_ioring_dvfs_decrease_temp", 909 "modifier": { 910 "operator": "minus", 911 "value": 13 912 } 913 } 914 ] 915 }, 916 { 917 "name": "Set Proc 2 IO Ring DVFS parameter", 918 "groups": [ 919 { 920 "name": "proc 2 ioring dvfs temp", 921 "interface": "xyz.openbmc_project.Sensor.Value", 922 "property": { "name": "Value" } 923 } 924 ], 925 "triggers": [ 926 { 927 "class": "init", 928 "method": "get_properties" 929 }, 930 { 931 "class": "signal", 932 "signal": "interfaces_added" 933 }, 934 { 935 "class": "signal", 936 "signal": "properties_changed" 937 } 938 ], 939 "actions": [ 940 { 941 "name": "set_parameter_from_group_max", 942 "parameter_name": "proc_2_ioring_dvfs_increase_temp", 943 "modifier": { 944 "operator": "minus", 945 "value": 10 946 } 947 }, 948 { 949 "name": "set_parameter_from_group_max", 950 "parameter_name": "proc_2_ioring_dvfs_decrease_temp", 951 "modifier": { 952 "operator": "minus", 953 "value": 13 954 } 955 } 956 ] 957 }, 958 { 959 "name": "Set Proc 3 IO Ring DVFS parameter", 960 "groups": [ 961 { 962 "name": "proc 3 ioring dvfs temp", 963 "interface": "xyz.openbmc_project.Sensor.Value", 964 "property": { "name": "Value" } 965 } 966 ], 967 "triggers": [ 968 { 969 "class": "init", 970 "method": "get_properties" 971 }, 972 { 973 "class": "signal", 974 "signal": "properties_changed" 975 }, 976 { 977 "class": "signal", 978 "signal": "interfaces_added" 979 } 980 ], 981 "actions": [ 982 { 983 "name": "set_parameter_from_group_max", 984 "parameter_name": "proc_3_ioring_dvfs_increase_temp", 985 "modifier": { 986 "operator": "minus", 987 "value": 10 988 } 989 }, 990 { 991 "name": "set_parameter_from_group_max", 992 "parameter_name": "proc_3_ioring_dvfs_decrease_temp", 993 "modifier": { 994 "operator": "minus", 995 "value": 13 996 } 997 } 998 ] 999 }, 1000 { 1001 "name": "Set Proc 4 IO Ring DVFS parameter", 1002 "groups": [ 1003 { 1004 "name": "proc 4 ioring dvfs temp", 1005 "interface": "xyz.openbmc_project.Sensor.Value", 1006 "property": { "name": "Value" } 1007 } 1008 ], 1009 "triggers": [ 1010 { 1011 "class": "init", 1012 "method": "get_properties" 1013 }, 1014 { 1015 "class": "signal", 1016 "signal": "interfaces_added" 1017 }, 1018 { 1019 "class": "signal", 1020 "signal": "properties_changed" 1021 } 1022 ], 1023 "actions": [ 1024 { 1025 "name": "set_parameter_from_group_max", 1026 "parameter_name": "proc_4_ioring_dvfs_increase_temp", 1027 "modifier": { 1028 "operator": "minus", 1029 "value": 10 1030 } 1031 }, 1032 { 1033 "name": "set_parameter_from_group_max", 1034 "parameter_name": "proc_4_ioring_dvfs_decrease_temp", 1035 "modifier": { 1036 "operator": "minus", 1037 "value": 13 1038 } 1039 } 1040 ] 1041 }, 1042 { 1043 "name": "Set Proc 5 IO Ring DVFS parameter", 1044 "groups": [ 1045 { 1046 "name": "proc 5 ioring dvfs temp", 1047 "interface": "xyz.openbmc_project.Sensor.Value", 1048 "property": { "name": "Value" } 1049 } 1050 ], 1051 "triggers": [ 1052 { 1053 "class": "init", 1054 "method": "get_properties" 1055 }, 1056 { 1057 "class": "signal", 1058 "signal": "interfaces_added" 1059 }, 1060 { 1061 "class": "signal", 1062 "signal": "properties_changed" 1063 } 1064 ], 1065 "actions": [ 1066 { 1067 "name": "set_parameter_from_group_max", 1068 "parameter_name": "proc_5_ioring_dvfs_increase_temp", 1069 "modifier": { 1070 "operator": "minus", 1071 "value": 10 1072 } 1073 }, 1074 { 1075 "name": "set_parameter_from_group_max", 1076 "parameter_name": "proc_5_ioring_dvfs_decrease_temp", 1077 "modifier": { 1078 "operator": "minus", 1079 "value": 13 1080 } 1081 } 1082 ] 1083 }, 1084 { 1085 "name": "Set Proc 6 IO Ring DVFS parameter", 1086 "groups": [ 1087 { 1088 "name": "proc 6 ioring dvfs temp", 1089 "interface": "xyz.openbmc_project.Sensor.Value", 1090 "property": { "name": "Value" } 1091 } 1092 ], 1093 "triggers": [ 1094 { 1095 "class": "init", 1096 "method": "get_properties" 1097 }, 1098 { 1099 "class": "signal", 1100 "signal": "interfaces_added" 1101 }, 1102 { 1103 "class": "signal", 1104 "signal": "properties_changed" 1105 } 1106 ], 1107 "actions": [ 1108 { 1109 "name": "set_parameter_from_group_max", 1110 "parameter_name": "proc_6_ioring_dvfs_increase_temp", 1111 "modifier": { 1112 "operator": "minus", 1113 "value": 10 1114 } 1115 }, 1116 { 1117 "name": "set_parameter_from_group_max", 1118 "parameter_name": "proc_6_ioring_dvfs_decrease_temp", 1119 "modifier": { 1120 "operator": "minus", 1121 "value": 13 1122 } 1123 } 1124 ] 1125 }, 1126 { 1127 "name": "Set Proc 7 IO Ring DVFS parameter", 1128 "groups": [ 1129 { 1130 "name": "proc 7 ioring dvfs temp", 1131 "interface": "xyz.openbmc_project.Sensor.Value", 1132 "property": { "name": "Value" } 1133 } 1134 ], 1135 "triggers": [ 1136 { 1137 "class": "init", 1138 "method": "get_properties" 1139 }, 1140 { 1141 "class": "signal", 1142 "signal": "interfaces_added" 1143 }, 1144 { 1145 "class": "signal", 1146 "signal": "properties_changed" 1147 } 1148 ], 1149 "actions": [ 1150 { 1151 "name": "set_parameter_from_group_max", 1152 "parameter_name": "proc_7_ioring_dvfs_increase_temp", 1153 "modifier": { 1154 "operator": "minus", 1155 "value": 10 1156 } 1157 }, 1158 { 1159 "name": "set_parameter_from_group_max", 1160 "parameter_name": "proc_7_ioring_dvfs_decrease_temp", 1161 "modifier": { 1162 "operator": "minus", 1163 "value": 13 1164 } 1165 } 1166 ] 1167 }, 1168 { 1169 "name": "Set DRAM DVFS parameter", 1170 "groups": [ 1171 { 1172 "name": "dram dvfs temp", 1173 "interface": "xyz.openbmc_project.Sensor.Value", 1174 "property": { "name": "Value" } 1175 } 1176 ], 1177 "triggers": [ 1178 { 1179 "class": "init", 1180 "method": "get_properties" 1181 }, 1182 { 1183 "class": "signal", 1184 "signal": "properties_changed" 1185 }, 1186 { 1187 "class": "signal", 1188 "signal": "interfaces_added" 1189 } 1190 ], 1191 "actions": [ 1192 { 1193 "name": "set_parameter_from_group_max", 1194 "parameter_name": "dram_dvfs_increase_temp", 1195 "modifier": { 1196 "operator": "minus", 1197 "value": 8 1198 } 1199 }, 1200 { 1201 "name": "set_parameter_from_group_max", 1202 "parameter_name": "dram_dvfs_decrease_temp", 1203 "modifier": { 1204 "operator": "minus", 1205 "value": 11 1206 } 1207 } 1208 ] 1209 }, 1210 { 1211 "name": "Set PMIC DVFS parameter", 1212 "groups": [ 1213 { 1214 "name": "pmic dvfs temp", 1215 "interface": "xyz.openbmc_project.Sensor.Value", 1216 "property": { "name": "Value" } 1217 } 1218 ], 1219 "triggers": [ 1220 { 1221 "class": "init", 1222 "method": "get_properties" 1223 }, 1224 { 1225 "class": "signal", 1226 "signal": "properties_changed" 1227 }, 1228 { 1229 "class": "signal", 1230 "signal": "interfaces_added" 1231 } 1232 ], 1233 "actions": [ 1234 { 1235 "name": "set_parameter_from_group_max", 1236 "parameter_name": "pmic_dvfs_increase_temp", 1237 "modifier": { 1238 "operator": "minus", 1239 "value": 10 1240 } 1241 }, 1242 { 1243 "name": "set_parameter_from_group_max", 1244 "parameter_name": "pmic_dvfs_decrease_temp", 1245 "modifier": { 1246 "operator": "minus", 1247 "value": 13 1248 } 1249 } 1250 ] 1251 }, 1252 { 1253 "name": "Set internal memory buffer DVFS parameter", 1254 "groups": [ 1255 { 1256 "name": "internal memory buffer dvfs temp", 1257 "interface": "xyz.openbmc_project.Sensor.Value", 1258 "property": { "name": "Value" } 1259 } 1260 ], 1261 "triggers": [ 1262 { 1263 "class": "init", 1264 "method": "get_properties" 1265 }, 1266 { 1267 "class": "signal", 1268 "signal": "properties_changed" 1269 }, 1270 { 1271 "class": "signal", 1272 "signal": "interfaces_added" 1273 } 1274 ], 1275 "actions": [ 1276 { 1277 "name": "set_parameter_from_group_max", 1278 "parameter_name": "intmb_dvfs_increase_temp", 1279 "modifier": { 1280 "operator": "minus", 1281 "value": 9 1282 } 1283 }, 1284 { 1285 "name": "set_parameter_from_group_max", 1286 "parameter_name": "intmb_dvfs_decrease_temp", 1287 "modifier": { 1288 "operator": "minus", 1289 "value": 12 1290 } 1291 } 1292 ] 1293 }, 1294 { 1295 "name": "Set DRAM and external memory buffer DVFS parameter", 1296 "groups": [ 1297 { 1298 "name": "dram and external memory buffer dvfs temp", 1299 "interface": "xyz.openbmc_project.Sensor.Value", 1300 "property": { "name": "Value" } 1301 } 1302 ], 1303 "triggers": [ 1304 { 1305 "class": "init", 1306 "method": "get_properties" 1307 }, 1308 { 1309 "class": "signal", 1310 "signal": "properties_changed" 1311 }, 1312 { 1313 "class": "signal", 1314 "signal": "interfaces_added" 1315 } 1316 ], 1317 "actions": [ 1318 { 1319 "name": "set_parameter_from_group_max", 1320 "parameter_name": "dram_extmb_dvfs_increase_temp", 1321 "modifier": { 1322 "operator": "minus", 1323 "value": 10 1324 } 1325 }, 1326 { 1327 "name": "set_parameter_from_group_max", 1328 "parameter_name": "dram_extmb_dvfs_decrease_temp", 1329 "modifier": { 1330 "operator": "minus", 1331 "value": 13 1332 } 1333 } 1334 ] 1335 }, 1336 { 1337 "name": "Set external memory buffer DVFS parameter", 1338 "groups": [ 1339 { 1340 "name": "external memory buffer dvfs temp", 1341 "interface": "xyz.openbmc_project.Sensor.Value", 1342 "property": { "name": "Value" } 1343 } 1344 ], 1345 "triggers": [ 1346 { 1347 "class": "init", 1348 "method": "get_properties" 1349 }, 1350 { 1351 "class": "signal", 1352 "signal": "properties_changed" 1353 }, 1354 { 1355 "class": "signal", 1356 "signal": "interfaces_added" 1357 } 1358 ], 1359 "actions": [ 1360 { 1361 "name": "set_parameter_from_group_max", 1362 "parameter_name": "extmb_dvfs_increase_temp", 1363 "modifier": { 1364 "operator": "minus", 1365 "value": 10 1366 } 1367 }, 1368 { 1369 "name": "set_parameter_from_group_max", 1370 "parameter_name": "extmb_dvfs_decrease_temp", 1371 "modifier": { 1372 "operator": "minus", 1373 "value": 13 1374 } 1375 } 1376 ] 1377 }, 1378 { 1379 // Collect group temperatures each iteration the repeating timer expires 1380 "name": "Fan control timer loop", 1381 "groups": [ 1382 { 1383 "name": "proc0 core temps", 1384 "interface": "xyz.openbmc_project.Sensor.Value", 1385 "property": { "name": "Value" } 1386 }, 1387 { 1388 "name": "proc1 core temps", 1389 "interface": "xyz.openbmc_project.Sensor.Value", 1390 "property": { "name": "Value" } 1391 }, 1392 { 1393 "name": "proc2 core temps", 1394 "interface": "xyz.openbmc_project.Sensor.Value", 1395 "property": { "name": "Value" } 1396 }, 1397 { 1398 "name": "proc3 core temps", 1399 "interface": "xyz.openbmc_project.Sensor.Value", 1400 "property": { "name": "Value" } 1401 }, 1402 { 1403 "name": "proc4 core temps", 1404 "interface": "xyz.openbmc_project.Sensor.Value", 1405 "property": { "name": "Value" } 1406 }, 1407 { 1408 "name": "proc5 core temps", 1409 "interface": "xyz.openbmc_project.Sensor.Value", 1410 "property": { "name": "Value" } 1411 }, 1412 { 1413 "name": "proc6 core temps", 1414 "interface": "xyz.openbmc_project.Sensor.Value", 1415 "property": { "name": "Value" } 1416 }, 1417 { 1418 "name": "proc7 core temps", 1419 "interface": "xyz.openbmc_project.Sensor.Value", 1420 "property": { "name": "Value" } 1421 }, 1422 { 1423 "name": "proc0 ioring temp", 1424 "interface": "xyz.openbmc_project.Sensor.Value", 1425 "property": { "name": "Value" } 1426 }, 1427 { 1428 "name": "proc1 ioring temp", 1429 "interface": "xyz.openbmc_project.Sensor.Value", 1430 "property": { "name": "Value" } 1431 }, 1432 { 1433 "name": "proc2 ioring temp", 1434 "interface": "xyz.openbmc_project.Sensor.Value", 1435 "property": { "name": "Value" } 1436 }, 1437 { 1438 "name": "proc3 ioring temp", 1439 "interface": "xyz.openbmc_project.Sensor.Value", 1440 "property": { "name": "Value" } 1441 }, 1442 { 1443 "name": "proc4 ioring temp", 1444 "interface": "xyz.openbmc_project.Sensor.Value", 1445 "property": { "name": "Value" } 1446 }, 1447 { 1448 "name": "proc5 ioring temp", 1449 "interface": "xyz.openbmc_project.Sensor.Value", 1450 "property": { "name": "Value" } 1451 }, 1452 { 1453 "name": "proc6 ioring temp", 1454 "interface": "xyz.openbmc_project.Sensor.Value", 1455 "property": { "name": "Value" } 1456 }, 1457 { 1458 "name": "proc7 ioring temp", 1459 "interface": "xyz.openbmc_project.Sensor.Value", 1460 "property": { "name": "Value" } 1461 }, 1462 { 1463 "name": "dram temps", 1464 "interface": "xyz.openbmc_project.Sensor.Value", 1465 "property": { "name": "Value" } 1466 }, 1467 { 1468 "name": "pmic temps", 1469 "interface": "xyz.openbmc_project.Sensor.Value", 1470 "property": { "name": "Value" } 1471 }, 1472 { 1473 "name": "internal memory buffer temps", 1474 "interface": "xyz.openbmc_project.Sensor.Value", 1475 "property": { "name": "Value" } 1476 }, 1477 { 1478 "name": "dram and external memory buffer temps", 1479 "interface": "xyz.openbmc_project.Sensor.Value", 1480 "property": { "name": "Value" } 1481 }, 1482 { 1483 "name": "external memory buffer temps", 1484 "interface": "xyz.openbmc_project.Sensor.Value", 1485 "property": { "name": "Value" } 1486 }, 1487 { 1488 "name": "vdd vrm temps", 1489 "interface": "xyz.openbmc_project.Sensor.Value", 1490 "property": { "name": "Value" } 1491 }, 1492 { 1493 "name": "nvme temps", 1494 "interface": "xyz.openbmc_project.Sensor.Value", 1495 "property": { "name": "Value" } 1496 }, 1497 { 1498 "name": "planar temps", 1499 "interface": "xyz.openbmc_project.Sensor.Value", 1500 "property": { "name": "Value" } 1501 }, 1502 { 1503 "name": "pcie cable card temps", 1504 "interface": "xyz.openbmc_project.Sensor.Value", 1505 "property": { "name": "Value" } 1506 } 1507 ], 1508 "triggers": [ 1509 { 1510 "class": "timer", 1511 "type": "repeating", 1512 "interval": 2000000, 1513 "preload_groups": true 1514 } 1515 ], 1516 "actions": [ 1517 { 1518 "name": "set_net_increase_target", 1519 "groups": [ 1520 { 1521 "name": "proc0 core temps", 1522 "interface": "xyz.openbmc_project.Sensor.Value", 1523 "property": { "name": "Value" } 1524 } 1525 ], 1526 "state_parameter_name": "proc_0_core_dvfs_increase_temp", 1527 "delta": 255 1528 }, 1529 { 1530 "name": "set_net_increase_target", 1531 "groups": [ 1532 { 1533 "name": "proc1 core temps", 1534 "interface": "xyz.openbmc_project.Sensor.Value", 1535 "property": { "name": "Value" } 1536 } 1537 ], 1538 "state_parameter_name": "proc_1_core_dvfs_increase_temp", 1539 "delta": 255 1540 }, 1541 { 1542 "name": "set_net_increase_target", 1543 "groups": [ 1544 { 1545 "name": "proc2 core temps", 1546 "interface": "xyz.openbmc_project.Sensor.Value", 1547 "property": { "name": "Value" } 1548 } 1549 ], 1550 "state_parameter_name": "proc_2_core_dvfs_increase_temp", 1551 "delta": 255 1552 }, 1553 { 1554 "name": "set_net_increase_target", 1555 "groups": [ 1556 { 1557 "name": "proc3 core temps", 1558 "interface": "xyz.openbmc_project.Sensor.Value", 1559 "property": { "name": "Value" } 1560 } 1561 ], 1562 "state_parameter_name": "proc_3_core_dvfs_increase_temp", 1563 "delta": 255 1564 }, 1565 { 1566 "name": "set_net_increase_target", 1567 "groups": [ 1568 { 1569 "name": "proc4 core temps", 1570 "interface": "xyz.openbmc_project.Sensor.Value", 1571 "property": { "name": "Value" } 1572 } 1573 ], 1574 "state_parameter_name": "proc_4_core_dvfs_increase_temp", 1575 "delta": 255 1576 }, 1577 { 1578 "name": "set_net_increase_target", 1579 "groups": [ 1580 { 1581 "name": "proc5 core temps", 1582 "interface": "xyz.openbmc_project.Sensor.Value", 1583 "property": { "name": "Value" } 1584 } 1585 ], 1586 "state_parameter_name": "proc_5_core_dvfs_increase_temp", 1587 "delta": 255 1588 }, 1589 { 1590 "name": "set_net_increase_target", 1591 "groups": [ 1592 { 1593 "name": "proc6 core temps", 1594 "interface": "xyz.openbmc_project.Sensor.Value", 1595 "property": { "name": "Value" } 1596 } 1597 ], 1598 "state_parameter_name": "proc_6_core_dvfs_increase_temp", 1599 "delta": 255 1600 }, 1601 { 1602 "name": "set_net_increase_target", 1603 "groups": [ 1604 { 1605 "name": "proc7 core temps", 1606 "interface": "xyz.openbmc_project.Sensor.Value", 1607 "property": { "name": "Value" } 1608 } 1609 ], 1610 "state_parameter_name": "proc_7_core_dvfs_increase_temp", 1611 "delta": 255 1612 }, 1613 { 1614 "name": "set_net_increase_target", 1615 "groups": [ 1616 { 1617 "name": "proc0 ioring temp", 1618 "interface": "xyz.openbmc_project.Sensor.Value", 1619 "property": { "name": "Value" } 1620 } 1621 ], 1622 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp", 1623 "delta": 255 1624 }, 1625 { 1626 "name": "set_net_increase_target", 1627 "groups": [ 1628 { 1629 "name": "proc1 ioring temp", 1630 "interface": "xyz.openbmc_project.Sensor.Value", 1631 "property": { "name": "Value" } 1632 } 1633 ], 1634 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp", 1635 "delta": 255 1636 }, 1637 { 1638 "name": "set_net_increase_target", 1639 "groups": [ 1640 { 1641 "name": "proc2 ioring temp", 1642 "interface": "xyz.openbmc_project.Sensor.Value", 1643 "property": { "name": "Value" } 1644 } 1645 ], 1646 "state_parameter_name": "proc_2_ioring_dvfs_increase_temp", 1647 "delta": 255 1648 }, 1649 { 1650 "name": "set_net_increase_target", 1651 "groups": [ 1652 { 1653 "name": "proc3 ioring temp", 1654 "interface": "xyz.openbmc_project.Sensor.Value", 1655 "property": { "name": "Value" } 1656 } 1657 ], 1658 "state_parameter_name": "proc_3_ioring_dvfs_increase_temp", 1659 "delta": 255 1660 }, 1661 { 1662 "name": "set_net_increase_target", 1663 "groups": [ 1664 { 1665 "name": "proc4 ioring temp", 1666 "interface": "xyz.openbmc_project.Sensor.Value", 1667 "property": { "name": "Value" } 1668 } 1669 ], 1670 "state_parameter_name": "proc_4_ioring_dvfs_increase_temp", 1671 "delta": 255 1672 }, 1673 { 1674 "name": "set_net_increase_target", 1675 "groups": [ 1676 { 1677 "name": "proc5 ioring temp", 1678 "interface": "xyz.openbmc_project.Sensor.Value", 1679 "property": { "name": "Value" } 1680 } 1681 ], 1682 "state_parameter_name": "proc_5_ioring_dvfs_increase_temp", 1683 "delta": 255 1684 }, 1685 { 1686 "name": "set_net_increase_target", 1687 "groups": [ 1688 { 1689 "name": "proc6 ioring temp", 1690 "interface": "xyz.openbmc_project.Sensor.Value", 1691 "property": { "name": "Value" } 1692 } 1693 ], 1694 "state_parameter_name": "proc_6_ioring_dvfs_increase_temp", 1695 "delta": 255 1696 }, 1697 { 1698 "name": "set_net_increase_target", 1699 "groups": [ 1700 { 1701 "name": "proc7 ioring temp", 1702 "interface": "xyz.openbmc_project.Sensor.Value", 1703 "property": { "name": "Value" } 1704 } 1705 ], 1706 "state_parameter_name": "proc_7_ioring_dvfs_increase_temp", 1707 "delta": 255 1708 }, 1709 { 1710 "name": "set_net_increase_target", 1711 "groups": [ 1712 { 1713 "name": "dram temps", 1714 "interface": "xyz.openbmc_project.Sensor.Value", 1715 "property": { "name": "Value" } 1716 } 1717 ], 1718 "state_parameter_name": "dram_dvfs_increase_temp", 1719 "delta": 175 1720 }, 1721 { 1722 "name": "set_net_increase_target", 1723 "groups": [ 1724 { 1725 "name": "pmic temps", 1726 "interface": "xyz.openbmc_project.Sensor.Value", 1727 "property": { "name": "Value" } 1728 } 1729 ], 1730 "state_parameter_name": "pmic_dvfs_increase_temp", 1731 "delta": 200 1732 }, 1733 { 1734 "name": "set_net_increase_target", 1735 "groups": [ 1736 { 1737 "name": "internal memory buffer temps", 1738 "interface": "xyz.openbmc_project.Sensor.Value", 1739 "property": { "name": "Value" } 1740 } 1741 ], 1742 "state_parameter_name": "intmb_dvfs_increase_temp", 1743 "delta": 150 1744 }, 1745 { 1746 "name": "set_net_increase_target", 1747 "groups": [ 1748 { 1749 "name": "dram and external memory buffer temps", 1750 "interface": "xyz.openbmc_project.Sensor.Value", 1751 "property": { "name": "Value" } 1752 } 1753 ], 1754 "state_parameter_name": "dram_extmb_dvfs_increase_temp", 1755 "delta": 200 1756 }, 1757 { 1758 "name": "set_net_increase_target", 1759 "groups": [ 1760 { 1761 "name": "external memory buffer temps", 1762 "interface": "xyz.openbmc_project.Sensor.Value", 1763 "property": { "name": "Value" } 1764 } 1765 ], 1766 "state_parameter_name": "extmb_dvfs_increase_temp", 1767 "delta": 200 1768 }, 1769 { 1770 "name": "set_net_increase_target", 1771 "groups": [ 1772 { 1773 "name": "vdd vrm temps", 1774 "interface": "xyz.openbmc_project.Sensor.Value", 1775 "property": { "name": "Value" } 1776 } 1777 ], 1778 "state": 85.0, 1779 "delta": 255 1780 }, 1781 { 1782 "name": "set_net_increase_target", 1783 "groups": [ 1784 { 1785 "name": "nvme temps", 1786 "interface": "xyz.openbmc_project.Sensor.Value", 1787 "property": { "name": "Value" } 1788 } 1789 ], 1790 "state": 58.0, 1791 "delta": 200 1792 }, 1793 { 1794 "name": "set_net_increase_target", 1795 "groups": [ 1796 { 1797 "name": "planar temps", 1798 "interface": "xyz.openbmc_project.Sensor.Value", 1799 "property": { "name": "Value" } 1800 } 1801 ], 1802 "state": 50.0, 1803 "delta": 255 1804 }, 1805 { 1806 "name": "set_net_increase_target", 1807 "groups": [ 1808 { 1809 "name": "pcie cable card temps", 1810 "interface": "xyz.openbmc_project.Sensor.Value", 1811 "property": { "name": "Value" } 1812 } 1813 ], 1814 "state": 70.0, 1815 "delta": 255 1816 }, 1817 { 1818 "name": "set_net_decrease_target", 1819 "groups": [ 1820 { 1821 "name": "proc0 core temps", 1822 "interface": "xyz.openbmc_project.Sensor.Value", 1823 "property": { "name": "Value" } 1824 } 1825 ], 1826 "state_parameter_name": "proc_0_core_dvfs_decrease_temp", 1827 "delta": 50 1828 }, 1829 { 1830 "name": "set_net_decrease_target", 1831 "groups": [ 1832 { 1833 "name": "proc1 core temps", 1834 "interface": "xyz.openbmc_project.Sensor.Value", 1835 "property": { "name": "Value" } 1836 } 1837 ], 1838 "state_parameter_name": "proc_1_core_dvfs_decrease_temp", 1839 "delta": 50 1840 }, 1841 { 1842 "name": "set_net_decrease_target", 1843 "groups": [ 1844 { 1845 "name": "proc2 core temps", 1846 "interface": "xyz.openbmc_project.Sensor.Value", 1847 "property": { "name": "Value" } 1848 } 1849 ], 1850 "state_parameter_name": "proc_2_core_dvfs_decrease_temp", 1851 "delta": 50 1852 }, 1853 { 1854 "name": "set_net_decrease_target", 1855 "groups": [ 1856 { 1857 "name": "proc3 core temps", 1858 "interface": "xyz.openbmc_project.Sensor.Value", 1859 "property": { "name": "Value" } 1860 } 1861 ], 1862 "state_parameter_name": "proc_3_core_dvfs_decrease_temp", 1863 "delta": 50 1864 }, 1865 { 1866 "name": "set_net_decrease_target", 1867 "groups": [ 1868 { 1869 "name": "proc4 core temps", 1870 "interface": "xyz.openbmc_project.Sensor.Value", 1871 "property": { "name": "Value" } 1872 } 1873 ], 1874 "state_parameter_name": "proc_4_core_dvfs_decrease_temp", 1875 "delta": 50 1876 }, 1877 { 1878 "name": "set_net_decrease_target", 1879 "groups": [ 1880 { 1881 "name": "proc5 core temps", 1882 "interface": "xyz.openbmc_project.Sensor.Value", 1883 "property": { "name": "Value" } 1884 } 1885 ], 1886 "state_parameter_name": "proc_5_core_dvfs_decrease_temp", 1887 "delta": 50 1888 }, 1889 { 1890 "name": "set_net_decrease_target", 1891 "groups": [ 1892 { 1893 "name": "proc6 core temps", 1894 "interface": "xyz.openbmc_project.Sensor.Value", 1895 "property": { "name": "Value" } 1896 } 1897 ], 1898 "state_parameter_name": "proc_6_core_dvfs_decrease_temp", 1899 "delta": 50 1900 }, 1901 { 1902 "name": "set_net_decrease_target", 1903 "groups": [ 1904 { 1905 "name": "proc7 core temps", 1906 "interface": "xyz.openbmc_project.Sensor.Value", 1907 "property": { "name": "Value" } 1908 } 1909 ], 1910 "state_parameter_name": "proc_7_core_dvfs_decrease_temp", 1911 "delta": 50 1912 }, 1913 { 1914 "name": "set_net_decrease_target", 1915 "groups": [ 1916 { 1917 "name": "proc0 ioring temp", 1918 "interface": "xyz.openbmc_project.Sensor.Value", 1919 "property": { "name": "Value" } 1920 } 1921 ], 1922 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp", 1923 "delta": 50 1924 }, 1925 { 1926 "name": "set_net_decrease_target", 1927 "groups": [ 1928 { 1929 "name": "proc1 ioring temp", 1930 "interface": "xyz.openbmc_project.Sensor.Value", 1931 "property": { "name": "Value" } 1932 } 1933 ], 1934 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp", 1935 "delta": 50 1936 }, 1937 { 1938 "name": "set_net_decrease_target", 1939 "groups": [ 1940 { 1941 "name": "proc2 ioring temp", 1942 "interface": "xyz.openbmc_project.Sensor.Value", 1943 "property": { "name": "Value" } 1944 } 1945 ], 1946 "state_parameter_name": "proc_2_ioring_dvfs_decrease_temp", 1947 "delta": 50 1948 }, 1949 { 1950 "name": "set_net_decrease_target", 1951 "groups": [ 1952 { 1953 "name": "proc3 ioring temp", 1954 "interface": "xyz.openbmc_project.Sensor.Value", 1955 "property": { "name": "Value" } 1956 } 1957 ], 1958 "state_parameter_name": "proc_3_ioring_dvfs_decrease_temp", 1959 "delta": 50 1960 }, 1961 { 1962 "name": "set_net_decrease_target", 1963 "groups": [ 1964 { 1965 "name": "proc4 ioring temp", 1966 "interface": "xyz.openbmc_project.Sensor.Value", 1967 "property": { "name": "Value" } 1968 } 1969 ], 1970 "state_parameter_name": "proc_4_ioring_dvfs_decrease_temp", 1971 "delta": 50 1972 }, 1973 { 1974 "name": "set_net_decrease_target", 1975 "groups": [ 1976 { 1977 "name": "proc5 ioring temp", 1978 "interface": "xyz.openbmc_project.Sensor.Value", 1979 "property": { "name": "Value" } 1980 } 1981 ], 1982 "state_parameter_name": "proc_5_ioring_dvfs_decrease_temp", 1983 "delta": 50 1984 }, 1985 { 1986 "name": "set_net_decrease_target", 1987 "groups": [ 1988 { 1989 "name": "proc6 ioring temp", 1990 "interface": "xyz.openbmc_project.Sensor.Value", 1991 "property": { "name": "Value" } 1992 } 1993 ], 1994 "state_parameter_name": "proc_6_ioring_dvfs_decrease_temp", 1995 "delta": 50 1996 }, 1997 { 1998 "name": "set_net_decrease_target", 1999 "groups": [ 2000 { 2001 "name": "proc7 ioring temp", 2002 "interface": "xyz.openbmc_project.Sensor.Value", 2003 "property": { "name": "Value" } 2004 } 2005 ], 2006 "state_parameter_name": "proc_7_ioring_dvfs_decrease_temp", 2007 "delta": 50 2008 }, 2009 { 2010 "name": "set_net_decrease_target", 2011 "groups": [ 2012 { 2013 "name": "dram temps", 2014 "interface": "xyz.openbmc_project.Sensor.Value", 2015 "property": { "name": "Value" } 2016 } 2017 ], 2018 "state_parameter_name": "dram_dvfs_decrease_temp", 2019 "delta": 40 2020 }, 2021 { 2022 "name": "set_net_decrease_target", 2023 "groups": [ 2024 { 2025 "name": "pmic temps", 2026 "interface": "xyz.openbmc_project.Sensor.Value", 2027 "property": { "name": "Value" } 2028 } 2029 ], 2030 "state_parameter_name": "pmic_dvfs_decrease_temp", 2031 "delta": 40 2032 }, 2033 { 2034 "name": "set_net_decrease_target", 2035 "groups": [ 2036 { 2037 "name": "internal memory buffer temps", 2038 "interface": "xyz.openbmc_project.Sensor.Value", 2039 "property": { "name": "Value" } 2040 } 2041 ], 2042 "state_parameter_name": "intmb_dvfs_decrease_temp", 2043 "delta": 40 2044 }, 2045 { 2046 "name": "set_net_decrease_target", 2047 "groups": [ 2048 { 2049 "name": "dram and external memory buffer temps", 2050 "interface": "xyz.openbmc_project.Sensor.Value", 2051 "property": { "name": "Value" } 2052 } 2053 ], 2054 "state_parameter_name": "dram_extmb_dvfs_decrease_temp", 2055 "delta": 40 2056 }, 2057 { 2058 "name": "set_net_decrease_target", 2059 "groups": [ 2060 { 2061 "name": "external memory buffer temps", 2062 "interface": "xyz.openbmc_project.Sensor.Value", 2063 "property": { "name": "Value" } 2064 } 2065 ], 2066 "state_parameter_name": "extmb_dvfs_decrease_temp", 2067 "delta": 40 2068 }, 2069 { 2070 "name": "set_net_decrease_target", 2071 "groups": [ 2072 { 2073 "name": "vdd vrm temps", 2074 "interface": "xyz.openbmc_project.Sensor.Value", 2075 "property": { "name": "Value" } 2076 } 2077 ], 2078 "state": 80.0, 2079 "delta": 30 2080 }, 2081 { 2082 "name": "set_net_decrease_target", 2083 "groups": [ 2084 { 2085 "name": "nvme temps", 2086 "interface": "xyz.openbmc_project.Sensor.Value", 2087 "property": { "name": "Value" } 2088 } 2089 ], 2090 "state": 55.0, 2091 "delta": 40 2092 }, 2093 { 2094 "name": "set_net_decrease_target", 2095 "groups": [ 2096 { 2097 "name": "planar temps", 2098 "interface": "xyz.openbmc_project.Sensor.Value", 2099 "property": { "name": "Value" } 2100 } 2101 ], 2102 "state": 48.0, 2103 "delta": 80 2104 }, 2105 { 2106 "name": "set_net_decrease_target", 2107 "groups": [ 2108 { 2109 "name": "pcie cable card temps", 2110 "interface": "xyz.openbmc_project.Sensor.Value", 2111 "property": { "name": "Value" } 2112 } 2113 ], 2114 "state": 65.0, 2115 "delta": 80 2116 } 2117 ] 2118 }, 2119 { 2120 // Remove NVMe temperature objects from cache when they are removed from 2121 // dbus. There's no need to react to their removal. 2122 "name": "remove nvme objects", 2123 "groups": [ 2124 { 2125 "name": "nvme temps", 2126 "interface": "xyz.openbmc_project.Sensor.Value", 2127 "property": { "name": "Value" } 2128 }, 2129 { 2130 "name": "nvme temps", 2131 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 2132 "property": { "name": "Functional" } 2133 } 2134 ], 2135 "triggers": [ 2136 { 2137 "class": "signal", 2138 "signal": "interfaces_removed" 2139 } 2140 ] 2141 }, 2142 { 2143 "name": "set pcie floor index", 2144 "groups": [ 2145 { 2146 "name": "pcie slots", 2147 "interface": "xyz.openbmc_project.State.Decorator.PowerState", 2148 "property": { 2149 "name": "PowerState" 2150 } 2151 }, 2152 { 2153 "name": "pcie cards", 2154 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 2155 "property": { 2156 "name": "Function0DeviceId" 2157 } 2158 }, 2159 { 2160 "name": "pcie cards", 2161 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 2162 "property": { 2163 "name": "Function0VendorId" 2164 } 2165 }, 2166 { 2167 "name": "pcie cards", 2168 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 2169 "property": { 2170 "name": "Function0SubsystemId" 2171 } 2172 }, 2173 { 2174 "name": "pcie cards", 2175 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 2176 "property": { 2177 "name": "Function0SubsystemVendorId" 2178 } 2179 } 2180 ], 2181 "triggers": [ 2182 { 2183 "class": "init", 2184 "method": "get_properties" 2185 }, 2186 { 2187 "class": "signal", 2188 "signal": "properties_changed" 2189 }, 2190 { 2191 "class": "signal", 2192 "signal": "interfaces_added" 2193 } 2194 ], 2195 "actions": [ 2196 { 2197 "name": "pcie_card_floors", 2198 "use_config_specific_files": true, 2199 "settle_time": 2 2200 } 2201 ] 2202 }, 2203 { 2204 "name": "Set altitude offset parameter", 2205 "groups": [ 2206 { 2207 "name": "altitude", 2208 "interface": "xyz.openbmc_project.Sensor.Value", 2209 "property": { "name": "Value" } 2210 } 2211 ], 2212 "triggers": [ 2213 { 2214 "class": "init", 2215 "method": "get_properties" 2216 }, 2217 { 2218 "class": "signal", 2219 "signal": "interfaces_added" 2220 }, 2221 { 2222 // Refresh altitude every 24hrs 2223 "class": "timer", 2224 "type": "repeating", 2225 "interval": 86400000000, 2226 "preload_groups": true 2227 } 2228 ], 2229 "actions": [ 2230 { 2231 "name": "set_parameter_from_group_max", 2232 "parameter_name": "ambient_20_altitude_offset", 2233 "modifier": { 2234 "operator": "less_than", 2235 "default_value": 1500, 2236 "value": [ 2237 { "arg_value": 500, "parameter_value": 0 }, 2238 { "arg_value": 1000, "parameter_value": 375 }, 2239 { "arg_value": 1500, "parameter_value": 550 }, 2240 { "arg_value": 2000, "parameter_value": 775 }, 2241 { "arg_value": 2500, "parameter_value": 1000 }, 2242 { "arg_value": 3050, "parameter_value": 1275 } 2243 ] 2244 } 2245 }, 2246 { 2247 "name": "set_parameter_from_group_max", 2248 "parameter_name": "ambient_25_altitude_offset", 2249 "modifier": { 2250 "operator": "less_than", 2251 "default_value": 2000, 2252 "value": [ 2253 { "arg_value": 500, "parameter_value": 0 }, 2254 { "arg_value": 1000, "parameter_value": 450 }, 2255 { "arg_value": 1500, "parameter_value": 700 }, 2256 { "arg_value": 2000, "parameter_value": 975 }, 2257 { "arg_value": 2500, "parameter_value": 1275 }, 2258 { "arg_value": 3050, "parameter_value": 1625 } 2259 ] 2260 } 2261 }, 2262 { 2263 "name": "set_parameter_from_group_max", 2264 "parameter_name": "ambient_30_altitude_offset", 2265 "modifier": { 2266 "operator": "less_than", 2267 "default_value": 2500, 2268 "value": [ 2269 { "arg_value": 500, "parameter_value": 0 }, 2270 { "arg_value": 1000, "parameter_value": 600 }, 2271 { "arg_value": 1500, "parameter_value": 900 }, 2272 { "arg_value": 2000, "parameter_value": 1275 }, 2273 { "arg_value": 2500, "parameter_value": 1650 }, 2274 { "arg_value": 3050, "parameter_value": 2100 } 2275 ] 2276 } 2277 }, 2278 { 2279 "name": "set_parameter_from_group_max", 2280 "parameter_name": "ambient_35_altitude_offset", 2281 "modifier": { 2282 "operator": "less_than", 2283 "default_value": 3000, 2284 "value": [ 2285 { "arg_value": 500, "parameter_value": 0 }, 2286 { "arg_value": 1000, "parameter_value": 750 }, 2287 { "arg_value": 1500, "parameter_value": 1175 }, 2288 { "arg_value": 2000, "parameter_value": 1625 }, 2289 { "arg_value": 2500, "parameter_value": 2125 }, 2290 { "arg_value": 3050, "parameter_value": 2725 } 2291 ] 2292 } 2293 }, 2294 { 2295 "name": "set_parameter_from_group_max", 2296 "parameter_name": "ambient_40_altitude_offset", 2297 "modifier": { 2298 "operator": "less_than", 2299 "default_value": 3500, 2300 "value": [ 2301 { "arg_value": 500, "parameter_value": 0 }, 2302 { "arg_value": 1000, "parameter_value": 975 }, 2303 { "arg_value": 1500, "parameter_value": 1500 }, 2304 { "arg_value": 2000, "parameter_value": 2100 }, 2305 { "arg_value": 2500, "parameter_value": 2750 }, 2306 { "arg_value": 3050, "parameter_value": 3500 } 2307 ] 2308 } 2309 } 2310 ] 2311 }, 2312 { 2313 "name": "Fan floors", 2314 "groups": [ 2315 { 2316 "name": "ambient temp", 2317 "interface": "xyz.openbmc_project.Sensor.Value", 2318 "property": { "name": "Value" } 2319 } 2320 ], 2321 "triggers": [ 2322 { 2323 "class": "init", 2324 "method": "get_properties" 2325 }, 2326 { 2327 "class": "signal", 2328 "signal": "properties_changed" 2329 }, 2330 { 2331 "class": "signal", 2332 "signal": "interfaces_added" 2333 }, 2334 { 2335 "class": "parameter", 2336 "parameter": "pcie_floor_index" 2337 }, 2338 { 2339 "class": "parameter", 2340 "parameter": "ambient_20_altitude_offset" 2341 }, 2342 { 2343 "class": "parameter", 2344 "parameter": "ambient_25_altitude_offset" 2345 }, 2346 { 2347 "class": "parameter", 2348 "parameter": "ambient_30_altitude_offset" 2349 }, 2350 { 2351 "class": "parameter", 2352 "parameter": "ambient_35_altitude_offset" 2353 }, 2354 { 2355 "class": "parameter", 2356 "parameter": "ambient_40_altitude_offset" 2357 } 2358 ], 2359 "actions": [ 2360 { 2361 "name": "mapped_floor", 2362 "key_group": "ambient temp", 2363 "fan_floors": [ 2364 { 2365 // Entry valid for temps < 20 2366 "key": 20, 2367 "default_floor": 3800, 2368 "floor_offset_parameter": "ambient_20_altitude_offset", 2369 "floors": [ 2370 { 2371 "parameter": "pcie_floor_index", 2372 "floors": [ 2373 { "value": 1, "floor": 3800 }, 2374 { "value": 2, "floor": 4200 }, 2375 { "value": 3, "floor": 4600 } 2376 ] 2377 } 2378 ] 2379 }, 2380 { 2381 // Entry valid for temps < 25 2382 "key": 25, 2383 "default_floor": 4400, 2384 "floor_offset_parameter": "ambient_25_altitude_offset", 2385 "floors": [ 2386 { 2387 "parameter": "pcie_floor_index", 2388 "floors": [ 2389 { "value": 1, "floor": 4400 }, 2390 { "value": 2, "floor": 4800 }, 2391 { "value": 3, "floor": 5400 } 2392 ] 2393 } 2394 ] 2395 }, 2396 { 2397 // Entry valid for temps < 30 2398 "key": 30, 2399 "default_floor": 5000, 2400 "floor_offset_parameter": "ambient_30_altitude_offset", 2401 "floors": [ 2402 { 2403 "parameter": "pcie_floor_index", 2404 "floors": [ 2405 { "value": 1, "floor": 5000 }, 2406 { "value": 2, "floor": 5600 }, 2407 { "value": 3, "floor": 6500 } 2408 ] 2409 } 2410 ] 2411 }, 2412 { 2413 // Entry valid for temps < 35 2414 "key": 35, 2415 "default_floor": 5800, 2416 "floor_offset_parameter": "ambient_35_altitude_offset", 2417 "floors": [ 2418 { 2419 "parameter": "pcie_floor_index", 2420 "floors": [ 2421 { "value": 1, "floor": 5800 }, 2422 { "value": 2, "floor": 6700 }, 2423 { "value": 3, "floor": 7700 } 2424 ] 2425 } 2426 ] 2427 }, 2428 { 2429 // Entry valid for temps < 40 2430 "key": 40, 2431 "default_floor": 6900, 2432 "floor_offset_parameter": "ambient_40_altitude_offset", 2433 "floors": [ 2434 { 2435 "parameter": "pcie_floor_index", 2436 "floors": [ 2437 { "value": 1, "floor": 6900 }, 2438 { "value": 2, "floor": 7900 }, 2439 { "value": 3, "floor": 9200 } 2440 ] 2441 } 2442 ] 2443 } 2444 ] 2445 } 2446 ] 2447 } 2448] 2449