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