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": 10400 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 "name": "fan4 rotor inventory", 57 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 58 "property": { "name": "Functional" } 59 }, 60 { 61 "name": "fan5 rotor inventory", 62 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 63 "property": { "name": "Functional" } 64 } 65 ], 66 "triggers": [ 67 { 68 "class": "init", 69 "method": "get_properties" 70 }, 71 { 72 "class": "signal", 73 "signal": "properties_changed" 74 } 75 ], 76 "actions": [ 77 { 78 "name": "count_state_before_target", 79 "count": 1, 80 "state": false, 81 "target": 10400 82 } 83 ] 84 }, 85 { 86 // Hold fans at the given target when any critical service 87 // is not running for 5 seconds. 88 "name": "service(s) missing", 89 "groups": [ 90 { 91 "name": "fan inventory", 92 "interface": "xyz.openbmc_project.Inventory.Item", 93 "property": { "name": "Present" } 94 }, 95 { 96 "name": "occ objects", 97 "interface": "org.open_power.OCC.Status", 98 "property": { "name": "OccActive" } 99 }, 100 { 101 "name": "nvme temps", 102 "interface": "xyz.openbmc_project.Sensor.Value", 103 "property": { "name": "Value" } 104 }, 105 { 106 "name": "planar temps", 107 "interface": "xyz.openbmc_project.Sensor.Value", 108 "property": { "name": "Value" } 109 }, 110 { 111 "name": "flett temps", 112 "interface": "xyz.openbmc_project.Sensor.Value", 113 "property": { "name": "Value" } 114 }, 115 { 116 "name": "pcie cable card temps", 117 "interface": "xyz.openbmc_project.Sensor.Value", 118 "property": { "name": "Value" } 119 }, 120 { 121 "name": "ambient temp", 122 "interface": "xyz.openbmc_project.Sensor.Value", 123 "property": { "name": "Value" } 124 } 125 ], 126 "triggers": [ 127 { 128 "class": "init", 129 "method": "name_has_owner" 130 }, 131 { 132 "class": "signal", 133 "signal": "name_owner_changed" 134 } 135 ], 136 "actions": [ 137 { 138 "name": "call_actions_based_on_timer", 139 "timer": { 140 "interval": 5000000, 141 "type": "oneshot" 142 }, 143 "actions": [ 144 { 145 "name": "set_target_on_missing_owner", 146 "groups": [ 147 { 148 "name": "fan inventory", 149 "interface": "xyz.openbmc_project.Inventory.Item", 150 "property": { "name": "Present" } 151 }, 152 { 153 "name": "occ objects", 154 "interface": "org.open_power.OCC.Status", 155 "property": { "name": "OccActive" } 156 }, 157 { 158 "name": "nvme temps", 159 "interface": "xyz.openbmc_project.Sensor.Value", 160 "property": { "name": "Value" } 161 }, 162 { 163 "name": "planar temps", 164 "interface": "xyz.openbmc_project.Sensor.Value", 165 "property": { "name": "Value" } 166 }, 167 { 168 "name": "flett temps", 169 "interface": "xyz.openbmc_project.Sensor.Value", 170 "property": { "name": "Value" } 171 }, 172 { 173 "name": "pcie cable card temps", 174 "interface": "xyz.openbmc_project.Sensor.Value", 175 "property": { "name": "Value" } 176 }, 177 { 178 "name": "ambient temp", 179 "interface": "xyz.openbmc_project.Sensor.Value", 180 "property": { "name": "Value" } 181 } 182 ], 183 "target": 10400 184 } 185 ] 186 } 187 ] 188 }, 189 { 190 // Set a fan floor if an OCC isn't active 191 "name": "Non-active OCCs", 192 "groups": [ 193 { 194 "name": "occ objects", 195 "interface": "org.open_power.OCC.Status", 196 "property": { 197 "name": "OccActive" 198 } 199 } 200 ], 201 "triggers": [ 202 { 203 "class": "signal", 204 "signal": "properties_changed" 205 }, 206 { 207 "class": "signal", 208 "signal": "interfaces_added" 209 }, 210 { 211 "class": "init", 212 "method": "get_properties" 213 } 214 ], 215 "actions": [ 216 { 217 "name": "count_state_floor", 218 "count": 1, 219 "state": false, 220 "floor": 10400 221 } 222 ] 223 }, 224 { 225 // Set a raised fan floor when any temperature sensor is nonfunctional 226 "name": "Nonfunctional temperature sensors", 227 "groups": [ 228 { 229 "name": "proc0 core temps", 230 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 231 "property": { "name": "Functional" } 232 }, 233 { 234 "name": "proc1 core temps", 235 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 236 "property": { "name": "Functional" } 237 }, 238 { 239 "name": "proc2 core temps", 240 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 241 "property": { "name": "Functional" } 242 }, 243 { 244 "name": "proc3 core temps", 245 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 246 "property": { "name": "Functional" } 247 }, 248 { 249 "name": "proc0 ioring temp", 250 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 251 "property": { "name": "Functional" } 252 }, 253 { 254 "name": "proc1 ioring temp", 255 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 256 "property": { "name": "Functional" } 257 }, 258 { 259 "name": "proc2 ioring temp", 260 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 261 "property": { "name": "Functional" } 262 }, 263 { 264 "name": "proc3 ioring temp", 265 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 266 "property": { "name": "Functional" } 267 }, 268 { 269 "name": "dram temps", 270 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 271 "property": { "name": "Functional" } 272 }, 273 { 274 "name": "pmic temps", 275 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 276 "property": { "name": "Functional" } 277 }, 278 { 279 "name": "internal memory buffer temps", 280 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 281 "property": { "name": "Functional" } 282 }, 283 { 284 "name": "dram and external memory buffer temps", 285 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 286 "property": { "name": "Functional" } 287 }, 288 { 289 "name": "external memory buffer temps", 290 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 291 "property": { "name": "Functional" } 292 }, 293 { 294 "name": "vdd vrm temps", 295 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 296 "property": { "name": "Functional" } 297 }, 298 { 299 "name": "nvme temps", 300 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 301 "property": { "name": "Functional" } 302 }, 303 { 304 "name": "planar temps", 305 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 306 "property": { "name": "Functional" } 307 }, 308 { 309 "name": "flett temps", 310 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 311 "property": { "name": "Functional" } 312 }, 313 { 314 "name": "pcie cable card temps", 315 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 316 "property": { "name": "Functional" } 317 }, 318 { 319 "name": "ambient temp", 320 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 321 "property": { "name": "Functional" } 322 } 323 ], 324 "triggers": [ 325 { 326 "class": "signal", 327 "signal": "properties_changed" 328 }, 329 { 330 "class": "signal", 331 "signal": "interfaces_added" 332 }, 333 { 334 "class": "signal", 335 "signal": "interfaces_removed" 336 }, 337 { 338 "class": "init", 339 "method": "get_properties" 340 } 341 ], 342 "actions": [ 343 { 344 "name": "count_state_floor", 345 "count": 1, 346 "state": false, 347 "delay": 5, 348 "floor": 10400 349 } 350 ] 351 }, 352 { 353 "name": "Set Proc 0 Core DVFS parameter", 354 "groups": [ 355 { 356 "name": "proc 0 core dvfs temp", 357 "interface": "xyz.openbmc_project.Sensor.Value", 358 "property": { "name": "Value" } 359 } 360 ], 361 "triggers": [ 362 { 363 "class": "init", 364 "method": "get_properties" 365 }, 366 { 367 "class": "signal", 368 "signal": "interfaces_added" 369 }, 370 { 371 "class": "signal", 372 "signal": "properties_changed" 373 } 374 ], 375 "actions": [ 376 { 377 "name": "set_parameter_from_group_max", 378 "parameter_name": "proc_0_core_dvfs_increase_temp", 379 "modifier": { 380 "operator": "minus", 381 "value": 10 382 } 383 }, 384 { 385 "name": "set_parameter_from_group_max", 386 "parameter_name": "proc_0_core_dvfs_decrease_temp", 387 "modifier": { 388 "operator": "minus", 389 "value": 13 390 } 391 } 392 ] 393 }, 394 { 395 "name": "Set Proc 1 Core DVFS parameter", 396 "groups": [ 397 { 398 "name": "proc 1 core dvfs temp", 399 "interface": "xyz.openbmc_project.Sensor.Value", 400 "property": { "name": "Value" } 401 } 402 ], 403 "triggers": [ 404 { 405 "class": "init", 406 "method": "get_properties" 407 }, 408 { 409 "class": "signal", 410 "signal": "interfaces_added" 411 }, 412 { 413 "class": "signal", 414 "signal": "properties_changed" 415 } 416 ], 417 "actions": [ 418 { 419 "name": "set_parameter_from_group_max", 420 "parameter_name": "proc_1_core_dvfs_increase_temp", 421 "modifier": { 422 "operator": "minus", 423 "value": 10 424 } 425 }, 426 { 427 "name": "set_parameter_from_group_max", 428 "parameter_name": "proc_1_core_dvfs_decrease_temp", 429 "modifier": { 430 "operator": "minus", 431 "value": 13 432 } 433 } 434 ] 435 }, 436 { 437 "name": "Set Proc 2 Core DVFS parameter", 438 "groups": [ 439 { 440 "name": "proc 2 core dvfs temp", 441 "interface": "xyz.openbmc_project.Sensor.Value", 442 "property": { "name": "Value" } 443 } 444 ], 445 "triggers": [ 446 { 447 "class": "init", 448 "method": "get_properties" 449 }, 450 { 451 "class": "signal", 452 "signal": "interfaces_added" 453 }, 454 { 455 "class": "signal", 456 "signal": "properties_changed" 457 } 458 ], 459 "actions": [ 460 { 461 "name": "set_parameter_from_group_max", 462 "parameter_name": "proc_2_core_dvfs_increase_temp", 463 "modifier": { 464 "operator": "minus", 465 "value": 10 466 } 467 }, 468 { 469 "name": "set_parameter_from_group_max", 470 "parameter_name": "proc_2_core_dvfs_decrease_temp", 471 "modifier": { 472 "operator": "minus", 473 "value": 13 474 } 475 } 476 ] 477 }, 478 { 479 "name": "Set Proc 3 Core DVFS parameter", 480 "groups": [ 481 { 482 "name": "proc 3 core dvfs temp", 483 "interface": "xyz.openbmc_project.Sensor.Value", 484 "property": { "name": "Value" } 485 } 486 ], 487 "triggers": [ 488 { 489 "class": "init", 490 "method": "get_properties" 491 }, 492 { 493 "class": "signal", 494 "signal": "interfaces_added" 495 }, 496 { 497 "class": "signal", 498 "signal": "properties_changed" 499 } 500 ], 501 "actions": [ 502 { 503 "name": "set_parameter_from_group_max", 504 "parameter_name": "proc_3_core_dvfs_increase_temp", 505 "modifier": { 506 "operator": "minus", 507 "value": 10 508 } 509 }, 510 { 511 "name": "set_parameter_from_group_max", 512 "parameter_name": "proc_3_core_dvfs_decrease_temp", 513 "modifier": { 514 "operator": "minus", 515 "value": 13 516 } 517 } 518 ] 519 }, 520 { 521 "name": "Set Proc 0 IO Ring DVFS parameter", 522 "groups": [ 523 { 524 "name": "proc 0 ioring dvfs temp", 525 "interface": "xyz.openbmc_project.Sensor.Value", 526 "property": { "name": "Value" } 527 } 528 ], 529 "triggers": [ 530 { 531 "class": "init", 532 "method": "get_properties" 533 }, 534 { 535 "class": "signal", 536 "signal": "interfaces_added" 537 }, 538 { 539 "class": "signal", 540 "signal": "properties_changed" 541 } 542 ], 543 "actions": [ 544 { 545 "name": "set_parameter_from_group_max", 546 "parameter_name": "proc_0_ioring_dvfs_increase_temp", 547 "modifier": { 548 "operator": "minus", 549 "value": 10 550 } 551 }, 552 { 553 "name": "set_parameter_from_group_max", 554 "parameter_name": "proc_0_ioring_dvfs_decrease_temp", 555 "modifier": { 556 "operator": "minus", 557 "value": 13 558 } 559 } 560 ] 561 }, 562 563 { 564 "name": "Set Proc 1 IO Ring DVFS parameter", 565 "groups": [ 566 { 567 "name": "proc 1 ioring dvfs temp", 568 "interface": "xyz.openbmc_project.Sensor.Value", 569 "property": { "name": "Value" } 570 } 571 ], 572 "triggers": [ 573 { 574 "class": "init", 575 "method": "get_properties" 576 }, 577 { 578 "class": "signal", 579 "signal": "interfaces_added" 580 }, 581 { 582 "class": "signal", 583 "signal": "properties_changed" 584 } 585 ], 586 "actions": [ 587 { 588 "name": "set_parameter_from_group_max", 589 "parameter_name": "proc_1_ioring_dvfs_increase_temp", 590 "modifier": { 591 "operator": "minus", 592 "value": 10 593 } 594 }, 595 { 596 "name": "set_parameter_from_group_max", 597 "parameter_name": "proc_1_ioring_dvfs_decrease_temp", 598 "modifier": { 599 "operator": "minus", 600 "value": 13 601 } 602 } 603 ] 604 }, 605 { 606 "name": "Set Proc 2 IO Ring DVFS parameter", 607 "groups": [ 608 { 609 "name": "proc 2 ioring dvfs temp", 610 "interface": "xyz.openbmc_project.Sensor.Value", 611 "property": { "name": "Value" } 612 } 613 ], 614 "triggers": [ 615 { 616 "class": "init", 617 "method": "get_properties" 618 }, 619 { 620 "class": "signal", 621 "signal": "interfaces_added" 622 }, 623 { 624 "class": "signal", 625 "signal": "properties_changed" 626 } 627 ], 628 "actions": [ 629 { 630 "name": "set_parameter_from_group_max", 631 "parameter_name": "proc_2_ioring_dvfs_increase_temp", 632 "modifier": { 633 "operator": "minus", 634 "value": 10 635 } 636 }, 637 { 638 "name": "set_parameter_from_group_max", 639 "parameter_name": "proc_2_ioring_dvfs_decrease_temp", 640 "modifier": { 641 "operator": "minus", 642 "value": 13 643 } 644 } 645 ] 646 }, 647 { 648 "name": "Set Proc 3 IO Ring DVFS parameter", 649 "groups": [ 650 { 651 "name": "proc 3 ioring dvfs temp", 652 "interface": "xyz.openbmc_project.Sensor.Value", 653 "property": { "name": "Value" } 654 } 655 ], 656 "triggers": [ 657 { 658 "class": "init", 659 "method": "get_properties" 660 }, 661 { 662 "class": "signal", 663 "signal": "interfaces_added" 664 }, 665 { 666 "class": "signal", 667 "signal": "properties_changed" 668 } 669 ], 670 "actions": [ 671 { 672 "name": "set_parameter_from_group_max", 673 "parameter_name": "proc_3_ioring_dvfs_increase_temp", 674 "modifier": { 675 "operator": "minus", 676 "value": 10 677 } 678 }, 679 { 680 "name": "set_parameter_from_group_max", 681 "parameter_name": "proc_3_ioring_dvfs_decrease_temp", 682 "modifier": { 683 "operator": "minus", 684 "value": 13 685 } 686 } 687 ] 688 }, 689 { 690 "name": "Set DRAM DVFS parameter", 691 "groups": [ 692 { 693 "name": "dram dvfs temp", 694 "interface": "xyz.openbmc_project.Sensor.Value", 695 "property": { "name": "Value" } 696 } 697 ], 698 "triggers": [ 699 { 700 "class": "init", 701 "method": "get_properties" 702 }, 703 { 704 "class": "signal", 705 "signal": "properties_changed" 706 }, 707 { 708 "class": "signal", 709 "signal": "interfaces_added" 710 } 711 ], 712 "actions": [ 713 { 714 "name": "set_parameter_from_group_max", 715 "parameter_name": "dram_dvfs_increase_temp", 716 "modifier": { 717 "operator": "minus", 718 "value": 10 719 } 720 }, 721 { 722 "name": "set_parameter_from_group_max", 723 "parameter_name": "dram_dvfs_decrease_temp", 724 "modifier": { 725 "operator": "minus", 726 "value": 13 727 } 728 } 729 ] 730 }, 731 { 732 "name": "Set PMIC DVFS parameter", 733 "groups": [ 734 { 735 "name": "pmic dvfs temp", 736 "interface": "xyz.openbmc_project.Sensor.Value", 737 "property": { "name": "Value" } 738 } 739 ], 740 "triggers": [ 741 { 742 "class": "init", 743 "method": "get_properties" 744 }, 745 { 746 "class": "signal", 747 "signal": "properties_changed" 748 }, 749 { 750 "class": "signal", 751 "signal": "interfaces_added" 752 } 753 ], 754 "actions": [ 755 { 756 "name": "set_parameter_from_group_max", 757 "parameter_name": "pmic_dvfs_increase_temp", 758 "modifier": { 759 "operator": "minus", 760 "value": 10 761 } 762 }, 763 { 764 "name": "set_parameter_from_group_max", 765 "parameter_name": "pmic_dvfs_decrease_temp", 766 "modifier": { 767 "operator": "minus", 768 "value": 13 769 } 770 } 771 ] 772 }, 773 { 774 "name": "Set internal memory buffer DVFS parameter", 775 "groups": [ 776 { 777 "name": "internal memory buffer dvfs temp", 778 "interface": "xyz.openbmc_project.Sensor.Value", 779 "property": { "name": "Value" } 780 } 781 ], 782 "triggers": [ 783 { 784 "class": "init", 785 "method": "get_properties" 786 }, 787 { 788 "class": "signal", 789 "signal": "properties_changed" 790 }, 791 { 792 "class": "signal", 793 "signal": "interfaces_added" 794 } 795 ], 796 "actions": [ 797 { 798 "name": "set_parameter_from_group_max", 799 "parameter_name": "intmb_dvfs_increase_temp", 800 "modifier": { 801 "operator": "minus", 802 "value": 10 803 } 804 }, 805 { 806 "name": "set_parameter_from_group_max", 807 "parameter_name": "intmb_dvfs_decrease_temp", 808 "modifier": { 809 "operator": "minus", 810 "value": 13 811 } 812 } 813 ] 814 }, 815 { 816 "name": "Set DRAM and external memory buffer DVFS parameter", 817 "groups": [ 818 { 819 "name": "dram and external memory buffer dvfs temp", 820 "interface": "xyz.openbmc_project.Sensor.Value", 821 "property": { "name": "Value" } 822 } 823 ], 824 "triggers": [ 825 { 826 "class": "init", 827 "method": "get_properties" 828 }, 829 { 830 "class": "signal", 831 "signal": "properties_changed" 832 }, 833 { 834 "class": "signal", 835 "signal": "interfaces_added" 836 } 837 ], 838 "actions": [ 839 { 840 "name": "set_parameter_from_group_max", 841 "parameter_name": "dram_extmb_dvfs_increase_temp", 842 "modifier": { 843 "operator": "minus", 844 "value": 10 845 } 846 }, 847 { 848 "name": "set_parameter_from_group_max", 849 "parameter_name": "dram_extmb_dvfs_decrease_temp", 850 "modifier": { 851 "operator": "minus", 852 "value": 13 853 } 854 } 855 ] 856 }, 857 { 858 "name": "Set external memory buffer DVFS parameter", 859 "groups": [ 860 { 861 "name": "external memory buffer dvfs temp", 862 "interface": "xyz.openbmc_project.Sensor.Value", 863 "property": { "name": "Value" } 864 } 865 ], 866 "triggers": [ 867 { 868 "class": "init", 869 "method": "get_properties" 870 }, 871 { 872 "class": "signal", 873 "signal": "properties_changed" 874 }, 875 { 876 "class": "signal", 877 "signal": "interfaces_added" 878 } 879 ], 880 "actions": [ 881 { 882 "name": "set_parameter_from_group_max", 883 "parameter_name": "extmb_dvfs_increase_temp", 884 "modifier": { 885 "operator": "minus", 886 "value": 7 887 } 888 }, 889 { 890 "name": "set_parameter_from_group_max", 891 "parameter_name": "extmb_dvfs_decrease_temp", 892 "modifier": { 893 "operator": "minus", 894 "value": 10 895 } 896 } 897 ] 898 }, 899 { 900 // Collect group temperatures each iteration the repeating timer expires 901 "name": "Fan control timer loop", 902 "groups": [ 903 { 904 "name": "proc0 core temps", 905 "interface": "xyz.openbmc_project.Sensor.Value", 906 "property": { "name": "Value" } 907 }, 908 { 909 "name": "proc1 core temps", 910 "interface": "xyz.openbmc_project.Sensor.Value", 911 "property": { "name": "Value" } 912 }, 913 { 914 "name": "proc2 core temps", 915 "interface": "xyz.openbmc_project.Sensor.Value", 916 "property": { "name": "Value" } 917 }, 918 { 919 "name": "proc3 core temps", 920 "interface": "xyz.openbmc_project.Sensor.Value", 921 "property": { "name": "Value" } 922 }, 923 { 924 "name": "proc0 ioring temp", 925 "interface": "xyz.openbmc_project.Sensor.Value", 926 "property": { "name": "Value" } 927 }, 928 { 929 "name": "proc1 ioring temp", 930 "interface": "xyz.openbmc_project.Sensor.Value", 931 "property": { "name": "Value" } 932 }, 933 { 934 "name": "proc2 ioring temp", 935 "interface": "xyz.openbmc_project.Sensor.Value", 936 "property": { "name": "Value" } 937 }, 938 { 939 "name": "proc3 ioring temp", 940 "interface": "xyz.openbmc_project.Sensor.Value", 941 "property": { "name": "Value" } 942 }, 943 { 944 "name": "dram temps", 945 "interface": "xyz.openbmc_project.Sensor.Value", 946 "property": { "name": "Value" } 947 }, 948 { 949 "name": "pmic temps", 950 "interface": "xyz.openbmc_project.Sensor.Value", 951 "property": { "name": "Value" } 952 }, 953 { 954 "name": "internal memory buffer temps", 955 "interface": "xyz.openbmc_project.Sensor.Value", 956 "property": { "name": "Value" } 957 }, 958 { 959 "name": "dram and external memory buffer temps", 960 "interface": "xyz.openbmc_project.Sensor.Value", 961 "property": { "name": "Value" } 962 }, 963 { 964 "name": "external memory buffer temps", 965 "interface": "xyz.openbmc_project.Sensor.Value", 966 "property": { "name": "Value" } 967 }, 968 { 969 "name": "vdd vrm temps", 970 "interface": "xyz.openbmc_project.Sensor.Value", 971 "property": { "name": "Value" } 972 }, 973 { 974 "name": "nvme temps", 975 "interface": "xyz.openbmc_project.Sensor.Value", 976 "property": { "name": "Value" } 977 }, 978 { 979 "name": "planar temps", 980 "interface": "xyz.openbmc_project.Sensor.Value", 981 "property": { "name": "Value" } 982 }, 983 { 984 "name": "flett temps", 985 "interface": "xyz.openbmc_project.Sensor.Value", 986 "property": { "name": "Value" } 987 }, 988 { 989 "name": "pcie cable card temps", 990 "interface": "xyz.openbmc_project.Sensor.Value", 991 "property": { "name": "Value" } 992 } 993 ], 994 "triggers": [ 995 { 996 "class": "timer", 997 "type": "repeating", 998 "interval": 2000000, 999 "preload_groups": true 1000 } 1001 ], 1002 "actions": [ 1003 { 1004 "name": "set_net_increase_target", 1005 "groups": [ 1006 { 1007 "name": "proc0 core temps", 1008 "interface": "xyz.openbmc_project.Sensor.Value", 1009 "property": { "name": "Value" } 1010 } 1011 ], 1012 "state_parameter_name": "proc_0_core_dvfs_increase_temp", 1013 "delta": 300 1014 }, 1015 { 1016 "name": "set_net_increase_target", 1017 "groups": [ 1018 { 1019 "name": "proc1 core temps", 1020 "interface": "xyz.openbmc_project.Sensor.Value", 1021 "property": { "name": "Value" } 1022 } 1023 ], 1024 "state_parameter_name": "proc_1_core_dvfs_increase_temp", 1025 "delta": 300 1026 }, 1027 { 1028 "name": "set_net_increase_target", 1029 "groups": [ 1030 { 1031 "name": "proc2 core temps", 1032 "interface": "xyz.openbmc_project.Sensor.Value", 1033 "property": { "name": "Value" } 1034 } 1035 ], 1036 "state_parameter_name": "proc_2_core_dvfs_increase_temp", 1037 "delta": 300 1038 }, 1039 { 1040 "name": "set_net_increase_target", 1041 "groups": [ 1042 { 1043 "name": "proc3 core temps", 1044 "interface": "xyz.openbmc_project.Sensor.Value", 1045 "property": { "name": "Value" } 1046 } 1047 ], 1048 "state_parameter_name": "proc_3_core_dvfs_increase_temp", 1049 "delta": 300 1050 }, 1051 { 1052 "name": "set_net_increase_target", 1053 "groups": [ 1054 { 1055 "name": "proc0 ioring temp", 1056 "interface": "xyz.openbmc_project.Sensor.Value", 1057 "property": { "name": "Value" } 1058 } 1059 ], 1060 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp", 1061 "delta": 300 1062 }, 1063 { 1064 "name": "set_net_increase_target", 1065 "groups": [ 1066 { 1067 "name": "proc1 ioring temp", 1068 "interface": "xyz.openbmc_project.Sensor.Value", 1069 "property": { "name": "Value" } 1070 } 1071 ], 1072 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp", 1073 "delta": 300 1074 }, 1075 { 1076 "name": "set_net_increase_target", 1077 "groups": [ 1078 { 1079 "name": "proc2 ioring temp", 1080 "interface": "xyz.openbmc_project.Sensor.Value", 1081 "property": { "name": "Value" } 1082 } 1083 ], 1084 "state_parameter_name": "proc_2_ioring_dvfs_increase_temp", 1085 "delta": 300 1086 }, 1087 { 1088 "name": "set_net_increase_target", 1089 "groups": [ 1090 { 1091 "name": "proc3 ioring temp", 1092 "interface": "xyz.openbmc_project.Sensor.Value", 1093 "property": { "name": "Value" } 1094 } 1095 ], 1096 "state_parameter_name": "proc_3_ioring_dvfs_increase_temp", 1097 "delta": 300 1098 }, 1099 { 1100 "name": "set_net_increase_target", 1101 "groups": [ 1102 { 1103 "name": "dram temps", 1104 "interface": "xyz.openbmc_project.Sensor.Value", 1105 "property": { "name": "Value" } 1106 } 1107 ], 1108 "state_parameter_name": "dram_dvfs_increase_temp", 1109 "delta": 200 1110 }, 1111 { 1112 "name": "set_net_increase_target", 1113 "groups": [ 1114 { 1115 "name": "pmic temps", 1116 "interface": "xyz.openbmc_project.Sensor.Value", 1117 "property": { "name": "Value" } 1118 } 1119 ], 1120 "state_parameter_name": "pmic_dvfs_increase_temp", 1121 "delta": 200 1122 }, 1123 { 1124 "name": "set_net_increase_target", 1125 "groups": [ 1126 { 1127 "name": "internal memory buffer temps", 1128 "interface": "xyz.openbmc_project.Sensor.Value", 1129 "property": { "name": "Value" } 1130 } 1131 ], 1132 "state_parameter_name": "intmb_dvfs_increase_temp", 1133 "delta": 100 1134 }, 1135 { 1136 "name": "set_net_increase_target", 1137 "groups": [ 1138 { 1139 "name": "dram and external memory buffer temps", 1140 "interface": "xyz.openbmc_project.Sensor.Value", 1141 "property": { "name": "Value" } 1142 } 1143 ], 1144 "state_parameter_name": "dram_extmb_dvfs_increase_temp", 1145 "delta": 200 1146 }, 1147 { 1148 "name": "set_net_increase_target", 1149 "groups": [ 1150 { 1151 "name": "external memory buffer temps", 1152 "interface": "xyz.openbmc_project.Sensor.Value", 1153 "property": { "name": "Value" } 1154 } 1155 ], 1156 "state_parameter_name": "extmb_dvfs_increase_temp", 1157 "delta": 200 1158 }, 1159 { 1160 "name": "set_net_increase_target", 1161 "groups": [ 1162 { 1163 "name": "vdd vrm temps", 1164 "interface": "xyz.openbmc_project.Sensor.Value", 1165 "property": { "name": "Value" } 1166 } 1167 ], 1168 "state": 82.0, 1169 "delta": 300 1170 }, 1171 { 1172 "name": "set_net_increase_target", 1173 "groups": [ 1174 { 1175 "name": "nvme temps", 1176 "interface": "xyz.openbmc_project.Sensor.Value", 1177 "property": { "name": "Value" } 1178 } 1179 ], 1180 "state": 58.0, 1181 "delta": 200 1182 }, 1183 { 1184 "name": "set_net_increase_target", 1185 "groups": [ 1186 { 1187 "name": "planar temps", 1188 "interface": "xyz.openbmc_project.Sensor.Value", 1189 "property": { "name": "Value" } 1190 } 1191 ], 1192 "state": 65.0, 1193 "delta": 255 1194 }, 1195 { 1196 "name": "set_net_increase_target", 1197 "groups": [ 1198 { 1199 "name": "flett temps", 1200 "interface": "xyz.openbmc_project.Sensor.Value", 1201 "property": { "name": "Value" } 1202 } 1203 ], 1204 "state": 80.0, 1205 "delta": 200 1206 }, 1207 { 1208 "name": "set_net_increase_target", 1209 "groups": [ 1210 { 1211 "name": "pcie cable card temps", 1212 "interface": "xyz.openbmc_project.Sensor.Value", 1213 "property": { "name": "Value" } 1214 } 1215 ], 1216 "state": 70.0, 1217 "delta": 255 1218 }, 1219 { 1220 "name": "set_net_decrease_target", 1221 "groups": [ 1222 { 1223 "name": "proc0 core temps", 1224 "interface": "xyz.openbmc_project.Sensor.Value", 1225 "property": { "name": "Value" } 1226 } 1227 ], 1228 "state_parameter_name": "proc_0_core_dvfs_decrease_temp", 1229 "delta": 50 1230 }, 1231 { 1232 "name": "set_net_decrease_target", 1233 "groups": [ 1234 { 1235 "name": "proc1 core temps", 1236 "interface": "xyz.openbmc_project.Sensor.Value", 1237 "property": { "name": "Value" } 1238 } 1239 ], 1240 "state_parameter_name": "proc_1_core_dvfs_decrease_temp", 1241 "delta": 50 1242 }, 1243 { 1244 "name": "set_net_decrease_target", 1245 "groups": [ 1246 { 1247 "name": "proc2 core temps", 1248 "interface": "xyz.openbmc_project.Sensor.Value", 1249 "property": { "name": "Value" } 1250 } 1251 ], 1252 "state_parameter_name": "proc_2_core_dvfs_decrease_temp", 1253 "delta": 50 1254 }, 1255 { 1256 "name": "set_net_decrease_target", 1257 "groups": [ 1258 { 1259 "name": "proc3 core temps", 1260 "interface": "xyz.openbmc_project.Sensor.Value", 1261 "property": { "name": "Value" } 1262 } 1263 ], 1264 "state_parameter_name": "proc_3_core_dvfs_decrease_temp", 1265 "delta": 50 1266 }, 1267 { 1268 "name": "set_net_decrease_target", 1269 "groups": [ 1270 { 1271 "name": "proc0 ioring temp", 1272 "interface": "xyz.openbmc_project.Sensor.Value", 1273 "property": { "name": "Value" } 1274 } 1275 ], 1276 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp", 1277 "delta": 50 1278 }, 1279 { 1280 "name": "set_net_decrease_target", 1281 "groups": [ 1282 { 1283 "name": "proc1 ioring temp", 1284 "interface": "xyz.openbmc_project.Sensor.Value", 1285 "property": { "name": "Value" } 1286 } 1287 ], 1288 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp", 1289 "delta": 50 1290 }, 1291 { 1292 "name": "set_net_decrease_target", 1293 "groups": [ 1294 { 1295 "name": "proc2 ioring temp", 1296 "interface": "xyz.openbmc_project.Sensor.Value", 1297 "property": { "name": "Value" } 1298 } 1299 ], 1300 "state_parameter_name": "proc_2_ioring_dvfs_decrease_temp", 1301 "delta": 50 1302 }, 1303 { 1304 "name": "set_net_decrease_target", 1305 "groups": [ 1306 { 1307 "name": "proc3 ioring temp", 1308 "interface": "xyz.openbmc_project.Sensor.Value", 1309 "property": { "name": "Value" } 1310 } 1311 ], 1312 "state_parameter_name": "proc_3_ioring_dvfs_decrease_temp", 1313 "delta": 50 1314 }, 1315 { 1316 "name": "set_net_decrease_target", 1317 "groups": [ 1318 { 1319 "name": "dram temps", 1320 "interface": "xyz.openbmc_project.Sensor.Value", 1321 "property": { "name": "Value" } 1322 } 1323 ], 1324 "state_parameter_name": "dram_dvfs_decrease_temp", 1325 "delta": 50 1326 }, 1327 { 1328 "name": "set_net_decrease_target", 1329 "groups": [ 1330 { 1331 "name": "pmic temps", 1332 "interface": "xyz.openbmc_project.Sensor.Value", 1333 "property": { "name": "Value" } 1334 } 1335 ], 1336 "state_parameter_name": "pmic_dvfs_decrease_temp", 1337 "delta": 50 1338 }, 1339 { 1340 "name": "set_net_decrease_target", 1341 "groups": [ 1342 { 1343 "name": "internal memory buffer temps", 1344 "interface": "xyz.openbmc_project.Sensor.Value", 1345 "property": { "name": "Value" } 1346 } 1347 ], 1348 "state_parameter_name": "intmb_dvfs_decrease_temp", 1349 "delta": 50 1350 }, 1351 { 1352 "name": "set_net_decrease_target", 1353 "groups": [ 1354 { 1355 "name": "dram and external memory buffer temps", 1356 "interface": "xyz.openbmc_project.Sensor.Value", 1357 "property": { "name": "Value" } 1358 } 1359 ], 1360 "state_parameter_name": "dram_extmb_dvfs_decrease_temp", 1361 "delta": 50 1362 }, 1363 { 1364 "name": "set_net_decrease_target", 1365 "groups": [ 1366 { 1367 "name": "external memory buffer temps", 1368 "interface": "xyz.openbmc_project.Sensor.Value", 1369 "property": { "name": "Value" } 1370 } 1371 ], 1372 "state_parameter_name": "extmb_dvfs_decrease_temp", 1373 "delta": 50 1374 }, 1375 { 1376 "name": "set_net_decrease_target", 1377 "groups": [ 1378 { 1379 "name": "vdd vrm temps", 1380 "interface": "xyz.openbmc_project.Sensor.Value", 1381 "property": { "name": "Value" } 1382 } 1383 ], 1384 "state": 79.0, 1385 "delta": 50 1386 }, 1387 { 1388 "name": "set_net_decrease_target", 1389 "groups": [ 1390 { 1391 "name": "nvme temps", 1392 "interface": "xyz.openbmc_project.Sensor.Value", 1393 "property": { "name": "Value" } 1394 } 1395 ], 1396 "state": 55.0, 1397 "delta": 50 1398 }, 1399 { 1400 "name": "set_net_decrease_target", 1401 "groups": [ 1402 { 1403 "name": "planar temps", 1404 "interface": "xyz.openbmc_project.Sensor.Value", 1405 "property": { "name": "Value" } 1406 } 1407 ], 1408 "state": 60.0, 1409 "delta": 50 1410 }, 1411 { 1412 "name": "set_net_decrease_target", 1413 "groups": [ 1414 { 1415 "name": "flett temps", 1416 "interface": "xyz.openbmc_project.Sensor.Value", 1417 "property": { "name": "Value" } 1418 } 1419 ], 1420 "state": 75.0, 1421 "delta": 40 1422 }, 1423 { 1424 "name": "set_net_decrease_target", 1425 "groups": [ 1426 { 1427 "name": "pcie cable card temps", 1428 "interface": "xyz.openbmc_project.Sensor.Value", 1429 "property": { "name": "Value" } 1430 } 1431 ], 1432 "state": 65.0, 1433 "delta": 50 1434 } 1435 ] 1436 }, 1437 { 1438 // Remove NVMe temperature objects from cache when they are removed from 1439 // dbus. There's no need to react to their removal. 1440 "name": "remove nvme objects", 1441 "groups": [ 1442 { 1443 "name": "nvme temps", 1444 "interface": "xyz.openbmc_project.Sensor.Value", 1445 "property": { "name": "Value" } 1446 }, 1447 { 1448 "name": "nvme temps", 1449 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 1450 "property": { "name": "Functional" } 1451 } 1452 ], 1453 "triggers": [ 1454 { 1455 "class": "signal", 1456 "signal": "interfaces_removed" 1457 } 1458 ] 1459 }, 1460 { 1461 "name": "set pcie floor index", 1462 "groups": [ 1463 { 1464 "name": "pcie slots", 1465 "interface": "xyz.openbmc_project.State.Decorator.PowerState", 1466 "property": { 1467 "name": "PowerState" 1468 } 1469 }, 1470 { 1471 "name": "pcie cards", 1472 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 1473 "property": { 1474 "name": "Function0DeviceId" 1475 } 1476 }, 1477 { 1478 "name": "pcie cards", 1479 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 1480 "property": { 1481 "name": "Function0VendorId" 1482 } 1483 }, 1484 { 1485 "name": "pcie cards", 1486 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 1487 "property": { 1488 "name": "Function0SubsystemId" 1489 } 1490 }, 1491 { 1492 "name": "pcie cards", 1493 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 1494 "property": { 1495 "name": "Function0SubsystemVendorId" 1496 } 1497 } 1498 ], 1499 "triggers": [ 1500 { 1501 "class": "init", 1502 "method": "get_properties" 1503 }, 1504 { 1505 "class": "signal", 1506 "signal": "properties_changed" 1507 }, 1508 { 1509 "class": "signal", 1510 "signal": "interfaces_added" 1511 } 1512 ], 1513 "actions": [ 1514 { 1515 "name": "pcie_card_floors", 1516 "use_config_specific_files": true, 1517 "settle_time": 2 1518 } 1519 ] 1520 }, 1521 { 1522 "name": "Set altitude offset parameter", 1523 "groups": [ 1524 { 1525 "name": "altitude", 1526 "interface": "xyz.openbmc_project.Sensor.Value", 1527 "property": { "name": "Value" } 1528 } 1529 ], 1530 "triggers": [ 1531 { 1532 "class": "init", 1533 "method": "get_properties" 1534 }, 1535 { 1536 "class": "signal", 1537 "signal": "interfaces_added" 1538 }, 1539 { 1540 // Refresh altitude every 24hrs 1541 "class": "timer", 1542 "type": "repeating", 1543 "interval": 86400000000, 1544 "preload_groups": true 1545 } 1546 ], 1547 "actions": [ 1548 { 1549 "name": "set_parameter_from_group_max", 1550 "parameter_name": "altitude_offset", 1551 "modifier": { 1552 "operator": "less_than", 1553 "default_value": 3000, 1554 "value": [ 1555 { "arg_value": 1000, "parameter_value": 0 }, 1556 { "arg_value": 1900, "parameter_value": 1000 }, 1557 { "arg_value": 2800, "parameter_value": 2000 } 1558 ] 1559 } 1560 } 1561 ] 1562 }, 1563 { 1564 "name": "Fan floors", 1565 "groups": [ 1566 { 1567 "name": "ambient temp", 1568 "interface": "xyz.openbmc_project.Sensor.Value", 1569 "property": { "name": "Value" } 1570 }, 1571 { 1572 "name": "power mode", 1573 "interface": "xyz.openbmc_project.Control.Power.Mode", 1574 "property": { "name": "PowerMode" } 1575 } 1576 ], 1577 "triggers": [ 1578 { 1579 "class": "init", 1580 "method": "get_properties" 1581 }, 1582 { 1583 "class": "signal", 1584 "signal": "properties_changed" 1585 }, 1586 { 1587 "class": "signal", 1588 "signal": "interfaces_added" 1589 }, 1590 { 1591 "class": "parameter", 1592 "parameter": "pcie_floor_index" 1593 }, 1594 { 1595 "class": "parameter", 1596 "parameter": "altitude_offset" 1597 } 1598 ], 1599 "actions": [ 1600 { 1601 "name": "mapped_floor", 1602 "key_group": "ambient temp", 1603 "fan_floors": [ 1604 { 1605 // Entry valid for ambient temp < 27 1606 "key": 27, 1607 "default_floor": 5000, 1608 "floor_offset_parameter": "altitude_offset", 1609 "floors": [ 1610 { 1611 "parameter": "pcie_floor_index", 1612 "floors": [ 1613 { "value": 1, "floor": 7000 }, 1614 { "value": 2, "floor": 8000 }, 1615 { "value": 3, "floor": 9000 } 1616 ] 1617 } 1618 ] 1619 }, 1620 { 1621 // Entry valid for ambient temp < 32 1622 "key": 32, 1623 "default_floor": 6000, 1624 "floor_offset_parameter": "altitude_offset", 1625 "floors": [ 1626 { 1627 "parameter": "pcie_floor_index", 1628 "floors": [ 1629 { "value": 1, "floor": 8000 }, 1630 { "value": 2, "floor": 9000 }, 1631 { "value": 3, "floor": 9500 } 1632 ] 1633 } 1634 ] 1635 }, 1636 { 1637 // Entry valid for ambient temp < 37 1638 "key": 37, 1639 "default_floor": 7000, 1640 "floor_offset_parameter": "altitude_offset", 1641 "floors": [ 1642 { 1643 "parameter": "pcie_floor_index", 1644 "floors": [ 1645 { "value": 1, "floor": 9000 }, 1646 { "value": 2, "floor": 9500 }, 1647 { "value": 3, "floor": 10400 } 1648 ] 1649 } 1650 ] 1651 }, 1652 { 1653 // Entry valid for ambient temp < 42 1654 "key": 42, 1655 "default_floor": 8000, 1656 "floor_offset_parameter": "altitude_offset", 1657 "floors": [ 1658 { 1659 "parameter": "pcie_floor_index", 1660 "floors": [ 1661 { "value": 1, "floor": 9500 }, 1662 { "value": 2, "floor": 10400 }, 1663 { "value": 3, "floor": 10400 } 1664 ] 1665 } 1666 ] 1667 } 1668 ] 1669 } 1670 ] 1671 } 1672] 1673