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 "delay": 5, 536 "floor": 18000 537 } 538 ] 539 }, 540 { 541 "name": "Set Proc 0 Core DVFS parameter", 542 "groups": [ 543 { 544 "name": "proc 0 core dvfs temp", 545 "interface": "xyz.openbmc_project.Sensor.Value", 546 "property": { "name": "Value" } 547 } 548 ], 549 "triggers": [ 550 { 551 "class": "init", 552 "method": "get_properties" 553 }, 554 { 555 "class": "signal", 556 "signal": "interfaces_added" 557 }, 558 { 559 "class": "signal", 560 "signal": "properties_changed" 561 } 562 ], 563 "actions": [ 564 { 565 "name": "set_parameter_from_group_max", 566 "parameter_name": "proc_0_core_dvfs_increase_temp", 567 "modifier": { 568 "operator": "minus", 569 "value": 10 570 } 571 }, 572 { 573 "name": "set_parameter_from_group_max", 574 "parameter_name": "proc_0_core_dvfs_decrease_temp", 575 "modifier": { 576 "operator": "minus", 577 "value": 13 578 } 579 } 580 ] 581 }, 582 { 583 "name": "Set Proc 1 Core DVFS parameter", 584 "groups": [ 585 { 586 "name": "proc 1 core dvfs temp", 587 "interface": "xyz.openbmc_project.Sensor.Value", 588 "property": { "name": "Value" } 589 } 590 ], 591 "triggers": [ 592 { 593 "class": "init", 594 "method": "get_properties" 595 }, 596 { 597 "class": "signal", 598 "signal": "interfaces_added" 599 }, 600 { 601 "class": "signal", 602 "signal": "properties_changed" 603 } 604 ], 605 "actions": [ 606 { 607 "name": "set_parameter_from_group_max", 608 "parameter_name": "proc_1_core_dvfs_increase_temp", 609 "modifier": { 610 "operator": "minus", 611 "value": 10 612 } 613 }, 614 { 615 "name": "set_parameter_from_group_max", 616 "parameter_name": "proc_1_core_dvfs_decrease_temp", 617 "modifier": { 618 "operator": "minus", 619 "value": 13 620 } 621 } 622 ] 623 }, 624 { 625 "name": "Set Proc 2 Core DVFS parameter", 626 "groups": [ 627 { 628 "name": "proc 2 core dvfs temp", 629 "interface": "xyz.openbmc_project.Sensor.Value", 630 "property": { "name": "Value" } 631 } 632 ], 633 "triggers": [ 634 { 635 "class": "init", 636 "method": "get_properties" 637 }, 638 { 639 "class": "signal", 640 "signal": "interfaces_added" 641 }, 642 { 643 "class": "signal", 644 "signal": "properties_changed" 645 } 646 ], 647 "actions": [ 648 { 649 "name": "set_parameter_from_group_max", 650 "parameter_name": "proc_2_core_dvfs_increase_temp", 651 "modifier": { 652 "operator": "minus", 653 "value": 10 654 } 655 }, 656 { 657 "name": "set_parameter_from_group_max", 658 "parameter_name": "proc_2_core_dvfs_decrease_temp", 659 "modifier": { 660 "operator": "minus", 661 "value": 13 662 } 663 } 664 ] 665 }, 666 { 667 "name": "Set Proc 3 Core DVFS parameter", 668 "groups": [ 669 { 670 "name": "proc 3 core dvfs temp", 671 "interface": "xyz.openbmc_project.Sensor.Value", 672 "property": { "name": "Value" } 673 } 674 ], 675 "triggers": [ 676 { 677 "class": "init", 678 "method": "get_properties" 679 }, 680 { 681 "class": "signal", 682 "signal": "interfaces_added" 683 }, 684 { 685 "class": "signal", 686 "signal": "properties_changed" 687 } 688 ], 689 "actions": [ 690 { 691 "name": "set_parameter_from_group_max", 692 "parameter_name": "proc_3_core_dvfs_increase_temp", 693 "modifier": { 694 "operator": "minus", 695 "value": 10 696 } 697 }, 698 { 699 "name": "set_parameter_from_group_max", 700 "parameter_name": "proc_3_core_dvfs_decrease_temp", 701 "modifier": { 702 "operator": "minus", 703 "value": 13 704 } 705 } 706 ] 707 }, 708 { 709 "name": "Set Proc 0 IO Ring DVFS parameter", 710 "groups": [ 711 { 712 "name": "proc 0 ioring dvfs temp", 713 "interface": "xyz.openbmc_project.Sensor.Value", 714 "property": { "name": "Value" } 715 } 716 ], 717 "triggers": [ 718 { 719 "class": "init", 720 "method": "get_properties" 721 }, 722 { 723 "class": "signal", 724 "signal": "interfaces_added" 725 }, 726 { 727 "class": "signal", 728 "signal": "properties_changed" 729 } 730 ], 731 "actions": [ 732 { 733 "name": "set_parameter_from_group_max", 734 "parameter_name": "proc_0_ioring_dvfs_increase_temp", 735 "modifier": { 736 "operator": "minus", 737 "value": 10 738 } 739 }, 740 { 741 "name": "set_parameter_from_group_max", 742 "parameter_name": "proc_0_ioring_dvfs_decrease_temp", 743 "modifier": { 744 "operator": "minus", 745 "value": 13 746 } 747 } 748 ] 749 }, 750 { 751 "name": "Set Proc 1 IO Ring DVFS parameter", 752 "groups": [ 753 { 754 "name": "proc 1 ioring dvfs temp", 755 "interface": "xyz.openbmc_project.Sensor.Value", 756 "property": { "name": "Value" } 757 } 758 ], 759 "triggers": [ 760 { 761 "class": "init", 762 "method": "get_properties" 763 }, 764 { 765 "class": "signal", 766 "signal": "interfaces_added" 767 }, 768 { 769 "class": "signal", 770 "signal": "properties_changed" 771 } 772 ], 773 "actions": [ 774 { 775 "name": "set_parameter_from_group_max", 776 "parameter_name": "proc_1_ioring_dvfs_increase_temp", 777 "modifier": { 778 "operator": "minus", 779 "value": 10 780 } 781 }, 782 { 783 "name": "set_parameter_from_group_max", 784 "parameter_name": "proc_1_ioring_dvfs_decrease_temp", 785 "modifier": { 786 "operator": "minus", 787 "value": 13 788 } 789 } 790 ] 791 }, 792 { 793 "name": "Set Proc 2 IO Ring DVFS parameter", 794 "groups": [ 795 { 796 "name": "proc 2 ioring dvfs temp", 797 "interface": "xyz.openbmc_project.Sensor.Value", 798 "property": { "name": "Value" } 799 } 800 ], 801 "triggers": [ 802 { 803 "class": "init", 804 "method": "get_properties" 805 }, 806 { 807 "class": "signal", 808 "signal": "interfaces_added" 809 }, 810 { 811 "class": "signal", 812 "signal": "properties_changed" 813 } 814 ], 815 "actions": [ 816 { 817 "name": "set_parameter_from_group_max", 818 "parameter_name": "proc_2_ioring_dvfs_increase_temp", 819 "modifier": { 820 "operator": "minus", 821 "value": 10 822 } 823 }, 824 { 825 "name": "set_parameter_from_group_max", 826 "parameter_name": "proc_2_ioring_dvfs_decrease_temp", 827 "modifier": { 828 "operator": "minus", 829 "value": 13 830 } 831 } 832 ] 833 }, 834 { 835 "name": "Set Proc 3 IO Ring DVFS parameter", 836 "groups": [ 837 { 838 "name": "proc 3 ioring dvfs temp", 839 "interface": "xyz.openbmc_project.Sensor.Value", 840 "property": { "name": "Value" } 841 } 842 ], 843 "triggers": [ 844 { 845 "class": "init", 846 "method": "get_properties" 847 }, 848 { 849 "class": "signal", 850 "signal": "properties_changed" 851 }, 852 { 853 "class": "signal", 854 "signal": "interfaces_added" 855 } 856 ], 857 "actions": [ 858 { 859 "name": "set_parameter_from_group_max", 860 "parameter_name": "proc_3_ioring_dvfs_increase_temp", 861 "modifier": { 862 "operator": "minus", 863 "value": 10 864 } 865 }, 866 { 867 "name": "set_parameter_from_group_max", 868 "parameter_name": "proc_3_ioring_dvfs_decrease_temp", 869 "modifier": { 870 "operator": "minus", 871 "value": 13 872 } 873 } 874 ] 875 }, 876 { 877 "name": "Set DRAM DVFS parameter", 878 "groups": [ 879 { 880 "name": "dram dvfs temp", 881 "interface": "xyz.openbmc_project.Sensor.Value", 882 "property": { "name": "Value" } 883 } 884 ], 885 "triggers": [ 886 { 887 "class": "init", 888 "method": "get_properties" 889 }, 890 { 891 "class": "signal", 892 "signal": "properties_changed" 893 }, 894 { 895 "class": "signal", 896 "signal": "interfaces_added" 897 } 898 ], 899 "actions": [ 900 { 901 "name": "set_parameter_from_group_max", 902 "parameter_name": "dram_dvfs_increase_temp", 903 "modifier": { 904 "operator": "minus", 905 "value": 9 906 } 907 }, 908 { 909 "name": "set_parameter_from_group_max", 910 "parameter_name": "dram_dvfs_decrease_temp", 911 "modifier": { 912 "operator": "minus", 913 "value": 12 914 } 915 } 916 ] 917 }, 918 { 919 "name": "Set PMIC DVFS parameter", 920 "groups": [ 921 { 922 "name": "pmic dvfs temp", 923 "interface": "xyz.openbmc_project.Sensor.Value", 924 "property": { "name": "Value" } 925 } 926 ], 927 "triggers": [ 928 { 929 "class": "init", 930 "method": "get_properties" 931 }, 932 { 933 "class": "signal", 934 "signal": "properties_changed" 935 }, 936 { 937 "class": "signal", 938 "signal": "interfaces_added" 939 } 940 ], 941 "actions": [ 942 { 943 "name": "set_parameter_from_group_max", 944 "parameter_name": "pmic_dvfs_increase_temp", 945 "modifier": { 946 "operator": "minus", 947 "value": 9 948 } 949 }, 950 { 951 "name": "set_parameter_from_group_max", 952 "parameter_name": "pmic_dvfs_decrease_temp", 953 "modifier": { 954 "operator": "minus", 955 "value": 12 956 } 957 } 958 ] 959 }, 960 { 961 "name": "Set internal memory buffer DVFS parameter", 962 "groups": [ 963 { 964 "name": "internal memory buffer dvfs temp", 965 "interface": "xyz.openbmc_project.Sensor.Value", 966 "property": { "name": "Value" } 967 } 968 ], 969 "triggers": [ 970 { 971 "class": "init", 972 "method": "get_properties" 973 }, 974 { 975 "class": "signal", 976 "signal": "properties_changed" 977 }, 978 { 979 "class": "signal", 980 "signal": "interfaces_added" 981 } 982 ], 983 "actions": [ 984 { 985 "name": "set_parameter_from_group_max", 986 "parameter_name": "intmb_dvfs_increase_temp", 987 "modifier": { 988 "operator": "minus", 989 "value": 10 990 } 991 }, 992 { 993 "name": "set_parameter_from_group_max", 994 "parameter_name": "intmb_dvfs_decrease_temp", 995 "modifier": { 996 "operator": "minus", 997 "value": 13 998 } 999 } 1000 ] 1001 }, 1002 { 1003 "name": "Set DRAM and external memory buffer DVFS parameter", 1004 "groups": [ 1005 { 1006 "name": "dram and external memory buffer dvfs temp", 1007 "interface": "xyz.openbmc_project.Sensor.Value", 1008 "property": { "name": "Value" } 1009 } 1010 ], 1011 "triggers": [ 1012 { 1013 "class": "init", 1014 "method": "get_properties" 1015 }, 1016 { 1017 "class": "signal", 1018 "signal": "properties_changed" 1019 }, 1020 { 1021 "class": "signal", 1022 "signal": "interfaces_added" 1023 } 1024 ], 1025 "actions": [ 1026 { 1027 "name": "set_parameter_from_group_max", 1028 "parameter_name": "dram_extmb_dvfs_increase_temp", 1029 "modifier": { 1030 "operator": "minus", 1031 "value": 10 1032 } 1033 }, 1034 { 1035 "name": "set_parameter_from_group_max", 1036 "parameter_name": "dram_extmb_dvfs_decrease_temp", 1037 "modifier": { 1038 "operator": "minus", 1039 "value": 13 1040 } 1041 } 1042 ] 1043 }, 1044 { 1045 "name": "Set external memory buffer DVFS parameter", 1046 "groups": [ 1047 { 1048 "name": "external memory buffer dvfs temp", 1049 "interface": "xyz.openbmc_project.Sensor.Value", 1050 "property": { "name": "Value" } 1051 } 1052 ], 1053 "triggers": [ 1054 { 1055 "class": "init", 1056 "method": "get_properties" 1057 }, 1058 { 1059 "class": "signal", 1060 "signal": "properties_changed" 1061 }, 1062 { 1063 "class": "signal", 1064 "signal": "interfaces_added" 1065 } 1066 ], 1067 "actions": [ 1068 { 1069 "name": "set_parameter_from_group_max", 1070 "parameter_name": "extmb_dvfs_increase_temp", 1071 "modifier": { 1072 "operator": "minus", 1073 "value": 10 1074 } 1075 }, 1076 { 1077 "name": "set_parameter_from_group_max", 1078 "parameter_name": "extmb_dvfs_decrease_temp", 1079 "modifier": { 1080 "operator": "minus", 1081 "value": 13 1082 } 1083 } 1084 ] 1085 }, 1086 { 1087 // Collect group temperatures each iteration the repeating timer expires 1088 "name": "Fan control timer loop", 1089 "groups": [ 1090 { 1091 "name": "proc0 core temps", 1092 "interface": "xyz.openbmc_project.Sensor.Value", 1093 "property": { "name": "Value" } 1094 }, 1095 { 1096 "name": "proc1 core temps", 1097 "interface": "xyz.openbmc_project.Sensor.Value", 1098 "property": { "name": "Value" } 1099 }, 1100 { 1101 "name": "proc2 core temps", 1102 "interface": "xyz.openbmc_project.Sensor.Value", 1103 "property": { "name": "Value" } 1104 }, 1105 { 1106 "name": "proc3 core temps", 1107 "interface": "xyz.openbmc_project.Sensor.Value", 1108 "property": { "name": "Value" } 1109 }, 1110 { 1111 "name": "proc0 ioring temp", 1112 "interface": "xyz.openbmc_project.Sensor.Value", 1113 "property": { "name": "Value" } 1114 }, 1115 { 1116 "name": "proc1 ioring temp", 1117 "interface": "xyz.openbmc_project.Sensor.Value", 1118 "property": { "name": "Value" } 1119 }, 1120 { 1121 "name": "proc2 ioring temp", 1122 "interface": "xyz.openbmc_project.Sensor.Value", 1123 "property": { "name": "Value" } 1124 }, 1125 { 1126 "name": "proc3 ioring temp", 1127 "interface": "xyz.openbmc_project.Sensor.Value", 1128 "property": { "name": "Value" } 1129 }, 1130 { 1131 "name": "dram temps", 1132 "interface": "xyz.openbmc_project.Sensor.Value", 1133 "property": { "name": "Value" } 1134 }, 1135 { 1136 "name": "pmic temps", 1137 "interface": "xyz.openbmc_project.Sensor.Value", 1138 "property": { "name": "Value" } 1139 }, 1140 { 1141 "name": "internal memory buffer temps", 1142 "interface": "xyz.openbmc_project.Sensor.Value", 1143 "property": { "name": "Value" } 1144 }, 1145 { 1146 "name": "dram and external memory buffer temps", 1147 "interface": "xyz.openbmc_project.Sensor.Value", 1148 "property": { "name": "Value" } 1149 }, 1150 { 1151 "name": "external memory buffer temps", 1152 "interface": "xyz.openbmc_project.Sensor.Value", 1153 "property": { "name": "Value" } 1154 }, 1155 { 1156 "name": "vdd vrm temps", 1157 "interface": "xyz.openbmc_project.Sensor.Value", 1158 "property": { "name": "Value" } 1159 }, 1160 { 1161 "name": "nvme temps", 1162 "interface": "xyz.openbmc_project.Sensor.Value", 1163 "property": { "name": "Value" } 1164 }, 1165 { 1166 "name": "planar temps", 1167 "interface": "xyz.openbmc_project.Sensor.Value", 1168 "property": { "name": "Value" } 1169 }, 1170 { 1171 "name": "flett temps", 1172 "interface": "xyz.openbmc_project.Sensor.Value", 1173 "property": { "name": "Value" } 1174 }, 1175 { 1176 "name": "pcie cable card temps", 1177 "interface": "xyz.openbmc_project.Sensor.Value", 1178 "property": { "name": "Value" } 1179 } 1180 ], 1181 "triggers": [ 1182 { 1183 "class": "timer", 1184 "type": "repeating", 1185 "interval": 2000000, 1186 "preload_groups": true 1187 } 1188 ], 1189 "actions": [ 1190 { 1191 "name": "set_net_increase_target", 1192 "groups": [ 1193 { 1194 "name": "proc0 core temps", 1195 "interface": "xyz.openbmc_project.Sensor.Value", 1196 "property": { "name": "Value" } 1197 } 1198 ], 1199 "state_parameter_name": "proc_0_core_dvfs_increase_temp", 1200 "delta": 300 1201 }, 1202 { 1203 "name": "set_net_increase_target", 1204 "groups": [ 1205 { 1206 "name": "proc1 core temps", 1207 "interface": "xyz.openbmc_project.Sensor.Value", 1208 "property": { "name": "Value" } 1209 } 1210 ], 1211 "state_parameter_name": "proc_1_core_dvfs_increase_temp", 1212 "delta": 300 1213 }, 1214 { 1215 "name": "set_net_increase_target", 1216 "groups": [ 1217 { 1218 "name": "proc2 core temps", 1219 "interface": "xyz.openbmc_project.Sensor.Value", 1220 "property": { "name": "Value" } 1221 } 1222 ], 1223 "state_parameter_name": "proc_2_core_dvfs_increase_temp", 1224 "delta": 300 1225 }, 1226 { 1227 "name": "set_net_increase_target", 1228 "groups": [ 1229 { 1230 "name": "proc3 core temps", 1231 "interface": "xyz.openbmc_project.Sensor.Value", 1232 "property": { "name": "Value" } 1233 } 1234 ], 1235 "state_parameter_name": "proc_3_core_dvfs_increase_temp", 1236 "delta": 300 1237 }, 1238 { 1239 "name": "set_net_increase_target", 1240 "groups": [ 1241 { 1242 "name": "proc0 ioring temp", 1243 "interface": "xyz.openbmc_project.Sensor.Value", 1244 "property": { "name": "Value" } 1245 } 1246 ], 1247 "state_parameter_name": "proc_0_ioring_dvfs_increase_temp", 1248 "delta": 300 1249 }, 1250 { 1251 "name": "set_net_increase_target", 1252 "groups": [ 1253 { 1254 "name": "proc1 ioring temp", 1255 "interface": "xyz.openbmc_project.Sensor.Value", 1256 "property": { "name": "Value" } 1257 } 1258 ], 1259 "state_parameter_name": "proc_1_ioring_dvfs_increase_temp", 1260 "delta": 300 1261 }, 1262 { 1263 "name": "set_net_increase_target", 1264 "groups": [ 1265 { 1266 "name": "proc2 ioring temp", 1267 "interface": "xyz.openbmc_project.Sensor.Value", 1268 "property": { "name": "Value" } 1269 } 1270 ], 1271 "state_parameter_name": "proc_2_ioring_dvfs_increase_temp", 1272 "delta": 300 1273 }, 1274 { 1275 "name": "set_net_increase_target", 1276 "groups": [ 1277 { 1278 "name": "proc3 ioring temp", 1279 "interface": "xyz.openbmc_project.Sensor.Value", 1280 "property": { "name": "Value" } 1281 } 1282 ], 1283 "state_parameter_name": "proc_3_ioring_dvfs_increase_temp", 1284 "delta": 300 1285 }, 1286 { 1287 "name": "set_net_increase_target", 1288 "groups": [ 1289 { 1290 "name": "dram temps", 1291 "interface": "xyz.openbmc_project.Sensor.Value", 1292 "property": { "name": "Value" } 1293 } 1294 ], 1295 "state_parameter_name": "dram_dvfs_increase_temp", 1296 "delta": 100 1297 }, 1298 { 1299 "name": "set_net_increase_target", 1300 "groups": [ 1301 { 1302 "name": "pmic temps", 1303 "interface": "xyz.openbmc_project.Sensor.Value", 1304 "property": { "name": "Value" } 1305 } 1306 ], 1307 "state_parameter_name": "pmic_dvfs_increase_temp", 1308 "delta": 100 1309 }, 1310 { 1311 "name": "set_net_increase_target", 1312 "groups": [ 1313 { 1314 "name": "internal memory buffer temps", 1315 "interface": "xyz.openbmc_project.Sensor.Value", 1316 "property": { "name": "Value" } 1317 } 1318 ], 1319 "state_parameter_name": "intmb_dvfs_increase_temp", 1320 "delta": 100 1321 }, 1322 { 1323 "name": "set_net_increase_target", 1324 "groups": [ 1325 { 1326 "name": "dram and external memory buffer temps", 1327 "interface": "xyz.openbmc_project.Sensor.Value", 1328 "property": { "name": "Value" } 1329 } 1330 ], 1331 "state_parameter_name": "dram_extmb_dvfs_increase_temp", 1332 "delta": 200 1333 }, 1334 { 1335 "name": "set_net_increase_target", 1336 "groups": [ 1337 { 1338 "name": "external memory buffer temps", 1339 "interface": "xyz.openbmc_project.Sensor.Value", 1340 "property": { "name": "Value" } 1341 } 1342 ], 1343 "state_parameter_name": "extmb_dvfs_increase_temp", 1344 "delta": 200 1345 }, 1346 { 1347 "name": "set_net_increase_target", 1348 "groups": [ 1349 { 1350 "name": "vdd vrm temps", 1351 "interface": "xyz.openbmc_project.Sensor.Value", 1352 "property": { "name": "Value" } 1353 } 1354 ], 1355 "state": 82.0, 1356 "delta": 300 1357 }, 1358 { 1359 "name": "set_net_increase_target", 1360 "groups": [ 1361 { 1362 "name": "nvme temps", 1363 "interface": "xyz.openbmc_project.Sensor.Value", 1364 "property": { "name": "Value" } 1365 } 1366 ], 1367 "state": 58.0, 1368 "delta": 200 1369 }, 1370 { 1371 "name": "set_net_increase_target", 1372 "groups": [ 1373 { 1374 "name": "planar temps", 1375 "interface": "xyz.openbmc_project.Sensor.Value", 1376 "property": { "name": "Value" } 1377 } 1378 ], 1379 "state": 65.0, 1380 "delta": 255 1381 }, 1382 { 1383 "name": "set_net_increase_target", 1384 "groups": [ 1385 { 1386 "name": "flett temps", 1387 "interface": "xyz.openbmc_project.Sensor.Value", 1388 "property": { "name": "Value" } 1389 } 1390 ], 1391 "state": 80.0, 1392 "delta": 200 1393 }, 1394 { 1395 "name": "set_net_increase_target", 1396 "groups": [ 1397 { 1398 "name": "pcie cable card temps", 1399 "interface": "xyz.openbmc_project.Sensor.Value", 1400 "property": { "name": "Value" } 1401 } 1402 ], 1403 "state": 70.0, 1404 "delta": 255 1405 }, 1406 { 1407 "name": "set_net_decrease_target", 1408 "groups": [ 1409 { 1410 "name": "proc0 core temps", 1411 "interface": "xyz.openbmc_project.Sensor.Value", 1412 "property": { "name": "Value" } 1413 } 1414 ], 1415 "state_parameter_name": "proc_0_core_dvfs_decrease_temp", 1416 "delta": 50 1417 }, 1418 { 1419 "name": "set_net_decrease_target", 1420 "groups": [ 1421 { 1422 "name": "proc1 core temps", 1423 "interface": "xyz.openbmc_project.Sensor.Value", 1424 "property": { "name": "Value" } 1425 } 1426 ], 1427 "state_parameter_name": "proc_1_core_dvfs_decrease_temp", 1428 "delta": 50 1429 }, 1430 { 1431 "name": "set_net_decrease_target", 1432 "groups": [ 1433 { 1434 "name": "proc2 core temps", 1435 "interface": "xyz.openbmc_project.Sensor.Value", 1436 "property": { "name": "Value" } 1437 } 1438 ], 1439 "state_parameter_name": "proc_2_core_dvfs_decrease_temp", 1440 "delta": 50 1441 }, 1442 { 1443 "name": "set_net_decrease_target", 1444 "groups": [ 1445 { 1446 "name": "proc3 core temps", 1447 "interface": "xyz.openbmc_project.Sensor.Value", 1448 "property": { "name": "Value" } 1449 } 1450 ], 1451 "state_parameter_name": "proc_3_core_dvfs_decrease_temp", 1452 "delta": 50 1453 }, 1454 { 1455 "name": "set_net_decrease_target", 1456 "groups": [ 1457 { 1458 "name": "proc0 ioring temp", 1459 "interface": "xyz.openbmc_project.Sensor.Value", 1460 "property": { "name": "Value" } 1461 } 1462 ], 1463 "state_parameter_name": "proc_0_ioring_dvfs_decrease_temp", 1464 "delta": 50 1465 }, 1466 { 1467 "name": "set_net_decrease_target", 1468 "groups": [ 1469 { 1470 "name": "proc1 ioring temp", 1471 "interface": "xyz.openbmc_project.Sensor.Value", 1472 "property": { "name": "Value" } 1473 } 1474 ], 1475 "state_parameter_name": "proc_1_ioring_dvfs_decrease_temp", 1476 "delta": 50 1477 }, 1478 { 1479 "name": "set_net_decrease_target", 1480 "groups": [ 1481 { 1482 "name": "proc2 ioring temp", 1483 "interface": "xyz.openbmc_project.Sensor.Value", 1484 "property": { "name": "Value" } 1485 } 1486 ], 1487 "state_parameter_name": "proc_2_ioring_dvfs_decrease_temp", 1488 "delta": 50 1489 }, 1490 { 1491 "name": "set_net_decrease_target", 1492 "groups": [ 1493 { 1494 "name": "proc3 ioring temp", 1495 "interface": "xyz.openbmc_project.Sensor.Value", 1496 "property": { "name": "Value" } 1497 } 1498 ], 1499 "state_parameter_name": "proc_3_ioring_dvfs_decrease_temp", 1500 "delta": 50 1501 }, 1502 { 1503 "name": "set_net_decrease_target", 1504 "groups": [ 1505 { 1506 "name": "dram temps", 1507 "interface": "xyz.openbmc_project.Sensor.Value", 1508 "property": { "name": "Value" } 1509 } 1510 ], 1511 "state_parameter_name": "dram_dvfs_decrease_temp", 1512 "delta": 40 1513 }, 1514 { 1515 "name": "set_net_decrease_target", 1516 "groups": [ 1517 { 1518 "name": "pmic temps", 1519 "interface": "xyz.openbmc_project.Sensor.Value", 1520 "property": { "name": "Value" } 1521 } 1522 ], 1523 "state_parameter_name": "pmic_dvfs_decrease_temp", 1524 "delta": 40 1525 }, 1526 { 1527 "name": "set_net_decrease_target", 1528 "groups": [ 1529 { 1530 "name": "internal memory buffer temps", 1531 "interface": "xyz.openbmc_project.Sensor.Value", 1532 "property": { "name": "Value" } 1533 } 1534 ], 1535 "state_parameter_name": "intmb_dvfs_decrease_temp", 1536 "delta": 40 1537 }, 1538 { 1539 "name": "set_net_decrease_target", 1540 "groups": [ 1541 { 1542 "name": "dram and external memory buffer temps", 1543 "interface": "xyz.openbmc_project.Sensor.Value", 1544 "property": { "name": "Value" } 1545 } 1546 ], 1547 "state_parameter_name": "dram_extmb_dvfs_decrease_temp", 1548 "delta": 40 1549 }, 1550 { 1551 "name": "set_net_decrease_target", 1552 "groups": [ 1553 { 1554 "name": "external memory buffer temps", 1555 "interface": "xyz.openbmc_project.Sensor.Value", 1556 "property": { "name": "Value" } 1557 } 1558 ], 1559 "state_parameter_name": "extmb_dvfs_decrease_temp", 1560 "delta": 40 1561 }, 1562 { 1563 "name": "set_net_decrease_target", 1564 "groups": [ 1565 { 1566 "name": "vdd vrm temps", 1567 "interface": "xyz.openbmc_project.Sensor.Value", 1568 "property": { "name": "Value" } 1569 } 1570 ], 1571 "state": 79.0, 1572 "delta": 30 1573 }, 1574 { 1575 "name": "set_net_decrease_target", 1576 "groups": [ 1577 { 1578 "name": "nvme temps", 1579 "interface": "xyz.openbmc_project.Sensor.Value", 1580 "property": { "name": "Value" } 1581 } 1582 ], 1583 "state": 55.0, 1584 "delta": 40 1585 }, 1586 { 1587 "name": "set_net_decrease_target", 1588 "groups": [ 1589 { 1590 "name": "planar temps", 1591 "interface": "xyz.openbmc_project.Sensor.Value", 1592 "property": { "name": "Value" } 1593 } 1594 ], 1595 "state": 60.0, 1596 "delta": 80 1597 }, 1598 { 1599 "name": "set_net_decrease_target", 1600 "groups": [ 1601 { 1602 "name": "flett temps", 1603 "interface": "xyz.openbmc_project.Sensor.Value", 1604 "property": { "name": "Value" } 1605 } 1606 ], 1607 "state": 75.0, 1608 "delta": 80 1609 }, 1610 { 1611 "name": "set_net_decrease_target", 1612 "groups": [ 1613 { 1614 "name": "pcie cable card temps", 1615 "interface": "xyz.openbmc_project.Sensor.Value", 1616 "property": { "name": "Value" } 1617 } 1618 ], 1619 "state": 65.0, 1620 "delta": 80 1621 } 1622 ] 1623 }, 1624 { 1625 // Remove NVMe temperature objects from cache when they are removed from 1626 // dbus. There's no need to react to their removal. 1627 "name": "remove nvme objects", 1628 "groups": [ 1629 { 1630 "name": "nvme temps", 1631 "interface": "xyz.openbmc_project.Sensor.Value", 1632 "property": { "name": "Value" } 1633 }, 1634 { 1635 "name": "nvme temps", 1636 "interface": "xyz.openbmc_project.State.Decorator.OperationalStatus", 1637 "property": { "name": "Functional" } 1638 } 1639 ], 1640 "triggers": [ 1641 { 1642 "class": "signal", 1643 "signal": "interfaces_removed" 1644 } 1645 ] 1646 }, 1647 { 1648 "name": "set pcie floor index", 1649 "groups": [ 1650 { 1651 "name": "pcie slots", 1652 "interface": "xyz.openbmc_project.State.Decorator.PowerState", 1653 "property": { 1654 "name": "PowerState" 1655 } 1656 }, 1657 { 1658 "name": "pcie cards", 1659 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 1660 "property": { 1661 "name": "Function0DeviceId" 1662 } 1663 }, 1664 { 1665 "name": "pcie cards", 1666 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 1667 "property": { 1668 "name": "Function0VendorId" 1669 } 1670 }, 1671 { 1672 "name": "pcie cards", 1673 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 1674 "property": { 1675 "name": "Function0SubsystemId" 1676 } 1677 }, 1678 { 1679 "name": "pcie cards", 1680 "interface": "xyz.openbmc_project.Inventory.Item.PCIeDevice", 1681 "property": { 1682 "name": "Function0SubsystemVendorId" 1683 } 1684 } 1685 ], 1686 "triggers": [ 1687 { 1688 "class": "init", 1689 "method": "get_properties" 1690 }, 1691 { 1692 "class": "signal", 1693 "signal": "properties_changed" 1694 }, 1695 { 1696 "class": "signal", 1697 "signal": "interfaces_added" 1698 } 1699 ], 1700 "actions": [ 1701 { 1702 "name": "pcie_card_floors", 1703 "use_config_specific_files": true, 1704 "settle_time": 2 1705 } 1706 ] 1707 }, 1708 { 1709 "name": "Set altitude offset parameter", 1710 "groups": [ 1711 { 1712 "name": "altitude", 1713 "interface": "xyz.openbmc_project.Sensor.Value", 1714 "property": { "name": "Value" } 1715 } 1716 ], 1717 "triggers": [ 1718 { 1719 "class": "init", 1720 "method": "get_properties" 1721 }, 1722 { 1723 "class": "signal", 1724 "signal": "interfaces_added" 1725 }, 1726 { 1727 // Refresh altitude every 24hrs 1728 "class": "timer", 1729 "type": "repeating", 1730 "interval": 86400000000, 1731 "preload_groups": true 1732 } 1733 ], 1734 "actions": [ 1735 { 1736 "name": "set_parameter_from_group_max", 1737 "parameter_name": "ambient_20_altitude_offset", 1738 "modifier": { 1739 "operator": "less_than", 1740 "default_value": 10000, 1741 "value": [ 1742 { "arg_value": 500, "parameter_value": 0 }, 1743 { "arg_value": 1000, "parameter_value": 700 }, 1744 { "arg_value": 1500, "parameter_value": 1600 }, 1745 { "arg_value": 2000, "parameter_value": 2300 }, 1746 { "arg_value": 2500, "parameter_value": 3200 }, 1747 { "arg_value": 3300, "parameter_value": 4000 } 1748 ] 1749 } 1750 }, 1751 { 1752 "name": "set_parameter_from_group_max", 1753 "parameter_name": "ambient_25_altitude_offset", 1754 "modifier": { 1755 "operator": "less_than", 1756 "default_value": 10000, 1757 "value": [ 1758 { "arg_value": 500, "parameter_value": 0 }, 1759 { "arg_value": 1000, "parameter_value": 1000 }, 1760 { "arg_value": 1500, "parameter_value": 2100 }, 1761 { "arg_value": 2000, "parameter_value": 3100 }, 1762 { "arg_value": 2500, "parameter_value": 4100 }, 1763 { "arg_value": 3300, "parameter_value": 4900 } 1764 ] 1765 } 1766 }, 1767 { 1768 "name": "set_parameter_from_group_max", 1769 "parameter_name": "ambient_30_altitude_offset", 1770 "modifier": { 1771 "operator": "less_than", 1772 "default_value": 10000, 1773 "value": [ 1774 { "arg_value": 500, "parameter_value": 0 }, 1775 { "arg_value": 1000, "parameter_value": 1000 }, 1776 { "arg_value": 1500, "parameter_value": 2100 }, 1777 { "arg_value": 2000, "parameter_value": 3200 }, 1778 { "arg_value": 2500, "parameter_value": 4000 }, 1779 { "arg_value": 3300, "parameter_value": 4800 } 1780 ] 1781 } 1782 }, 1783 { 1784 "name": "set_parameter_from_group_max", 1785 "parameter_name": "ambient_35_altitude_offset", 1786 "modifier": { 1787 "operator": "less_than", 1788 "default_value": 10000, 1789 "value": [ 1790 { "arg_value": 500, "parameter_value": 0 }, 1791 { "arg_value": 1000, "parameter_value": 900 }, 1792 { "arg_value": 1500, "parameter_value": 1700 }, 1793 { "arg_value": 2000, "parameter_value": 2500 }, 1794 { "arg_value": 2500, "parameter_value": 3400 }, 1795 { "arg_value": 3300, "parameter_value": 4200 } 1796 ] 1797 } 1798 }, 1799 { 1800 "name": "set_parameter_from_group_max", 1801 "parameter_name": "ambient_40_altitude_offset", 1802 "modifier": { 1803 "operator": "less_than", 1804 "default_value": 10000, 1805 "value": [ 1806 { "arg_value": 500, "parameter_value": 0 }, 1807 { "arg_value": 1000, "parameter_value": 1000 }, 1808 { "arg_value": 1500, "parameter_value": 1900 }, 1809 { "arg_value": 2000, "parameter_value": 2800 }, 1810 { "arg_value": 2500, "parameter_value": 3700 }, 1811 { "arg_value": 3300, "parameter_value": 4500 } 1812 ] 1813 } 1814 } 1815 ] 1816 }, 1817 { 1818 "name": "Fan floors", 1819 "groups": [ 1820 { 1821 "name": "ambient temp", 1822 "interface": "xyz.openbmc_project.Sensor.Value", 1823 "property": { "name": "Value" } 1824 } 1825 ], 1826 "triggers": [ 1827 { 1828 "class": "init", 1829 "method": "get_properties" 1830 }, 1831 { 1832 "class": "signal", 1833 "signal": "properties_changed" 1834 }, 1835 { 1836 "class": "signal", 1837 "signal": "interfaces_added" 1838 }, 1839 { 1840 "class": "parameter", 1841 "parameter": "pcie_floor_index" 1842 }, 1843 { 1844 "class": "parameter", 1845 "parameter": "ambient_20_altitude_offset" 1846 }, 1847 { 1848 "class": "parameter", 1849 "parameter": "ambient_25_altitude_offset" 1850 }, 1851 { 1852 "class": "parameter", 1853 "parameter": "ambient_30_altitude_offset" 1854 }, 1855 { 1856 "class": "parameter", 1857 "parameter": "ambient_35_altitude_offset" 1858 }, 1859 { 1860 "class": "parameter", 1861 "parameter": "ambient_40_altitude_offset" 1862 } 1863 ], 1864 "actions": [ 1865 { 1866 "name": "mapped_floor", 1867 "key_group": "ambient temp", 1868 "fan_floors": [ 1869 { 1870 // Entry valid for temps < 20 1871 "key": 20, 1872 "default_floor": 5400, 1873 "floor_offset_parameter": "ambient_20_altitude_offset", 1874 "floors": [ 1875 { 1876 "parameter": "pcie_floor_index", 1877 "floors": [ 1878 { "value": 1, "floor": 5600 }, 1879 { "value": 2, "floor": 9000 }, 1880 { "value": 3, "floor": 9000 }, 1881 { "value": 4, "floor": 9200 }, 1882 { "value": 5, "floor": 10600 } 1883 ] 1884 } 1885 ] 1886 }, 1887 { 1888 // Entry valid for temps < 25 1889 "key": 25, 1890 "default_floor": 7300, 1891 "floor_offset_parameter": "ambient_25_altitude_offset", 1892 "floors": [ 1893 { 1894 "parameter": "pcie_floor_index", 1895 "floors": [ 1896 { "value": 1, "floor": 7800 }, 1897 { "value": 2, "floor": 10700 }, 1898 { "value": 3, "floor": 11300 }, 1899 { "value": 4, "floor": 12700 }, 1900 { "value": 5, "floor": 13900 } 1901 ] 1902 } 1903 ] 1904 }, 1905 { 1906 // Entry valid for temps < 30 1907 "key": 30, 1908 "default_floor": 9100, 1909 "floor_offset_parameter": "ambient_30_altitude_offset", 1910 "floors": [ 1911 { 1912 "parameter": "pcie_floor_index", 1913 "floors": [ 1914 { "value": 1, "floor": 10300 }, 1915 { "value": 2, "floor": 12100 }, 1916 { "value": 3, "floor": 14400 }, 1917 { "value": 4, "floor": 16300 }, 1918 { "value": 5, "floor": 17200 } 1919 ] 1920 } 1921 ] 1922 }, 1923 { 1924 // Entry valid for temps < 35 1925 "key": 35, 1926 "default_floor": 10800, 1927 "floor_offset_parameter": "ambient_35_altitude_offset", 1928 "floors": [ 1929 { 1930 "parameter": "pcie_floor_index", 1931 "floors": [ 1932 { "value": 1, "floor": 12700 }, 1933 { "value": 2, "floor": 13500 }, 1934 { "value": 3, "floor": 17400 }, 1935 { "value": 4, "floor": 18000 }, 1936 { "value": 5, "floor": 18000 } 1937 ] 1938 } 1939 ] 1940 }, 1941 { 1942 // Entry valid for temps < 40 1943 "key": 40, 1944 "default_floor": 12600, 1945 "floor_offset_parameter": "ambient_40_altitude_offset", 1946 "floors": [ 1947 { 1948 "parameter": "pcie_floor_index", 1949 "floors": [ 1950 { "value": 1, "floor": 15000 }, 1951 { "value": 2, "floor": 15500 }, 1952 { "value": 3, "floor": 18000 }, 1953 { "value": 4, "floor": 18000 }, 1954 { "value": 5, "floor": 18000 } 1955 ] 1956 } 1957 ] 1958 } 1959 ] 1960 } 1961 ] 1962 } 1963] 1964