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