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