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