1*43829ea9SMatthew Barth{ 2*43829ea9SMatthew Barth "comments": "List of fans with the attributes used to monitor them.", 3*43829ea9SMatthew Barth "fans": [ 4*43829ea9SMatthew Barth { 5*43829ea9SMatthew Barth "comments": [ 6*43829ea9SMatthew Barth "The first fan in the system that has two sensor(dual rotor) feedbacks", 7*43829ea9SMatthew Barth "that are allowed to deviate from any given target by 15% for up-to 30", 8*43829ea9SMatthew Barth "seconds before being marked nonfunctional in inventory. The first", 9*43829ea9SMatthew Barth "sensor object contains the target property and the second sensor", 10*43829ea9SMatthew Barth "object's feedback speed is adjusted by a factor of 1.45 and offset", 11*43829ea9SMatthew Barth "by -909 to accomodate how its hardware reacts to any given target. It", 12*43829ea9SMatthew Barth "takes 1 sensor to mark this fan nonfunctional and once marked", 13*43829ea9SMatthew Barth "nonfunctional, the nonfunctional sensor(s) must be within 15% of the", 14*43829ea9SMatthew Barth "target for 5 seconds before being updated to functional again.", 15*43829ea9SMatthew Barth "Each sensor has an error logged after 0 seconds being marked", 16*43829ea9SMatthew Barth "nonfunctional and the fan has an error logged if its been not", 17*43829ea9SMatthew Barth "present for 20 seconds.", 18*43829ea9SMatthew Barth "In addition, this fan is not monitored for the first 30 seconds after", 19*43829ea9SMatthew Barth "a poweron to allow the fan to spin-up." 20*43829ea9SMatthew Barth ], 21*43829ea9SMatthew Barth "inventory": "/system/chassis/motherboard/fan0", 22*43829ea9SMatthew Barth "functional_delay": 5, 23*43829ea9SMatthew Barth "allowed_out_of_range_time": 30, 24*43829ea9SMatthew Barth "deviation": 15, 25*43829ea9SMatthew Barth "num_sensors_nonfunc_for_fan_nonfunc": 1, 26*43829ea9SMatthew Barth "monitor_start_delay": 30, 27*43829ea9SMatthew Barth "fan_missing_error_delay": 20, 28*43829ea9SMatthew Barth "nonfunc_rotor_error_delay": 0, 29*43829ea9SMatthew Barth "sensors": [ 30*43829ea9SMatthew Barth { 31*43829ea9SMatthew Barth "name": "fan0_0", 32*43829ea9SMatthew Barth "has_target": true 33*43829ea9SMatthew Barth }, 34*43829ea9SMatthew Barth { 35*43829ea9SMatthew Barth "name": "fan0_1", 36*43829ea9SMatthew Barth "has_target": false, 37*43829ea9SMatthew Barth "factor": 1.45, 38*43829ea9SMatthew Barth "offset": -909 39*43829ea9SMatthew Barth } 40*43829ea9SMatthew Barth ] 41*43829ea9SMatthew Barth }, 42*43829ea9SMatthew Barth { 43*43829ea9SMatthew Barth "comments": [ 44*43829ea9SMatthew Barth "The second fan in the system has one sensor(single rotor) feedback", 45*43829ea9SMatthew Barth "that is only monitored with the `WaterCooled` property is false. The", 46*43829ea9SMatthew Barth "sensor is monitored using a 'count' method where a counter is", 47*43829ea9SMatthew Barth "incremented each tick the fan deviates 15% from a target and", 48*43829ea9SMatthew Barth "decrements back to zero each tick the fan is within spec. When the", 49*43829ea9SMatthew Barth "sensor reaches the threshold of 25 ticks, the fan is marked", 50*43829ea9SMatthew Barth "nonfunctional and only returns to being functional when the counter", 51*43829ea9SMatthew Barth "is decremented back to 0. This differs from the default 'timebased'", 52*43829ea9SMatthew Barth "method where the fan must deviate contiguously for a set amount of", 53*43829ea9SMatthew Barth "time to be marked nonfunctional. It takes 1 sensor to mark this fan", 54*43829ea9SMatthew Barth "nonfunctional.", 55*43829ea9SMatthew Barth "Each sensor has an error logged after 0 seconds being marked", 56*43829ea9SMatthew Barth "nonfunctional and the fan has an error logged if its been not present", 57*43829ea9SMatthew Barth "for 20 seconds.", 58*43829ea9SMatthew Barth "In addition, this fan is not monitored for the first 30 seconds after", 59*43829ea9SMatthew Barth "a poweron to allow the fan to spin-up." 60*43829ea9SMatthew Barth ], 61*43829ea9SMatthew Barth "inventory": "/system/chassis/motherboard/fan1", 62*43829ea9SMatthew Barth "method": "count", 63*43829ea9SMatthew Barth "deviation": 15, 64*43829ea9SMatthew Barth "num_sensors_nonfunc_for_fan_nonfunc": 1, 65*43829ea9SMatthew Barth "monitor_start_delay": 30, 66*43829ea9SMatthew Barth "fan_missing_error_delay": 20, 67*43829ea9SMatthew Barth "nonfunc_rotor_error_delay": 0, 68*43829ea9SMatthew Barth "sensors": [ 69*43829ea9SMatthew Barth { 70*43829ea9SMatthew Barth "name": "fan1_0", 71*43829ea9SMatthew Barth "has_target": true, 72*43829ea9SMatthew Barth "threshold": 25 73*43829ea9SMatthew Barth } 74*43829ea9SMatthew Barth ], 75*43829ea9SMatthew Barth "condition": { 76*43829ea9SMatthew Barth "name": "propertiesMatch", 77*43829ea9SMatthew Barth "properties": [ 78*43829ea9SMatthew Barth { 79*43829ea9SMatthew Barth "object": "/xyz/openbmc_project/inventory/system/chassis", 80*43829ea9SMatthew Barth "interface": "xyz.openbmc_project.Inventory.Decorator.CoolingType", 81*43829ea9SMatthew Barth "property": { 82*43829ea9SMatthew Barth "name": "WaterCooled", 83*43829ea9SMatthew Barth "type": "bool", 84*43829ea9SMatthew Barth "value": false 85*43829ea9SMatthew Barth } 86*43829ea9SMatthew Barth } 87*43829ea9SMatthew Barth ] 88*43829ea9SMatthew Barth } 89*43829ea9SMatthew Barth }, 90*43829ea9SMatthew Barth { 91*43829ea9SMatthew Barth "comments": [ 92*43829ea9SMatthew Barth "The third fan in the system that has one sensor(single rotor)", 93*43829ea9SMatthew Barth "feedback using the default 'timebased' method that allows it to", 94*43829ea9SMatthew Barth "deviate from any given target by 15% for up-to 30 seconds before", 95*43829ea9SMatthew Barth "being marked nonfunctional in inventory. Instead of using the default", 96*43829ea9SMatthew Barth "'xyz.openbmc_project.Control.FanSpeed' target interface, the sensor", 97*43829ea9SMatthew Barth "uses the 'xyz.openbmc_project.Control.FanPwm' target interface and", 98*43829ea9SMatthew Barth "applies a factor of 21 and offset of 1600 to accomodate the", 99*43829ea9SMatthew Barth "difference in target PWM versus the RPM feedback of the sensor to", 100*43829ea9SMatthew Barth "determine if the fan sensor is nonfunctional or not. It takes 1", 101*43829ea9SMatthew Barth "sensor to mark this fan nonfunctional and when marked nonfunctional,", 102*43829ea9SMatthew Barth "it is immediately marked functional again once within 15% of the", 103*43829ea9SMatthew Barth "target.", 104*43829ea9SMatthew Barth "Each sensor has an error logged after 0 seconds being marked", 105*43829ea9SMatthew Barth "nonfunctional and the fan has an error logged if its been not present", 106*43829ea9SMatthew Barth "for 20 seconds.", 107*43829ea9SMatthew Barth "In addition, this fan is not monitored for the first 30 seconds after", 108*43829ea9SMatthew Barth "a poweron to allow the fan to spin-up. " 109*43829ea9SMatthew Barth ], 110*43829ea9SMatthew Barth "inventory": "/system/chassis/motherboard/fan2", 111*43829ea9SMatthew Barth "method": "timebased", 112*43829ea9SMatthew Barth "allowed_out_of_range_time": 30, 113*43829ea9SMatthew Barth "deviation": 15, 114*43829ea9SMatthew Barth "num_sensors_nonfunc_for_fan_nonfunc": 1, 115*43829ea9SMatthew Barth "monitor_start_delay": 30, 116*43829ea9SMatthew Barth "fan_missing_error_delay": 20, 117*43829ea9SMatthew Barth "nonfunc_rotor_error_delay": 0, 118*43829ea9SMatthew Barth "sensors": [ 119*43829ea9SMatthew Barth { 120*43829ea9SMatthew Barth "name": "fan2_0", 121*43829ea9SMatthew Barth "target_interface": "xyz.openbmc_project.Control.FanPwm", 122*43829ea9SMatthew Barth "has_target": true, 123*43829ea9SMatthew Barth "factor": 21, 124*43829ea9SMatthew Barth "offset": 1600 125*43829ea9SMatthew Barth } 126*43829ea9SMatthew Barth ] 127*43829ea9SMatthew Barth } 128*43829ea9SMatthew Barth ], 129*43829ea9SMatthew Barth "sensor_trust_groups": [ 130*43829ea9SMatthew Barth { 131*43829ea9SMatthew Barth "comments": [ 132*43829ea9SMatthew Barth "OPTIONAL - A section to create `trust groups` consisting of fan tach", 133*43829ea9SMatthew Barth "sensors that can be used to trust the tach feedback reading or", 134*43829ea9SMatthew Barth "disregard it when determining if the fan is functional or not. Here,", 135*43829ea9SMatthew Barth "the fan sensor feedbacks within the group are only trusted when any", 136*43829ea9SMatthew Barth "one of them shows a non-zero feedback speed. At any time all fan", 137*43829ea9SMatthew Barth "sensor feedbacks report a speed of 0, the monitoring of each sensor", 138*43829ea9SMatthew Barth "in the group is cancelled, only to resume being monitored when any", 139*43829ea9SMatthew Barth "one of them reports a non-zero feedback speed." 140*43829ea9SMatthew Barth ], 141*43829ea9SMatthew Barth "class": "NonzeroSpeed", 142*43829ea9SMatthew Barth "group": [ 143*43829ea9SMatthew Barth { 144*43829ea9SMatthew Barth "name": "fan0_0" 145*43829ea9SMatthew Barth }, 146*43829ea9SMatthew Barth { 147*43829ea9SMatthew Barth "name": "fan1_0" 148*43829ea9SMatthew Barth }, 149*43829ea9SMatthew Barth { 150*43829ea9SMatthew Barth "name": "fan2_0" 151*43829ea9SMatthew Barth } 152*43829ea9SMatthew Barth ] 153*43829ea9SMatthew Barth } 154*43829ea9SMatthew Barth ], 155*43829ea9SMatthew Barth "fault_handling": { 156*43829ea9SMatthew Barth "comments": [ 157*43829ea9SMatthew Barth "OPTIONAL - A section to handle faults caused by missing or", 158*43829ea9SMatthew Barth "nonfunctional fans. An error is logged when 1 rotor is nonfunctional", 159*43829ea9SMatthew Barth "across all the fans being monitored. The system is immediately hard", 160*43829ea9SMatthew Barth "powered off after a poweron is started when 1 fan has been missing for", 161*43829ea9SMatthew Barth "25 seconds.", 162*43829ea9SMatthew Barth "An EPOW shutdown is issued when 2 or more nonfunctional fan sensors", 163*43829ea9SMatthew Barth "exist, which (specific to EPOW) has a service mode delay of 300 seconds", 164*43829ea9SMatthew Barth "and then a meltdown delay of 300 seconds." 165*43829ea9SMatthew Barth ], 166*43829ea9SMatthew Barth "num_nonfunc_rotors_before_error": 1, 167*43829ea9SMatthew Barth "power_off_config": [ 168*43829ea9SMatthew Barth { 169*43829ea9SMatthew Barth "type": "hard", 170*43829ea9SMatthew Barth "cause": "missing_fan_frus", 171*43829ea9SMatthew Barth "count": 1, 172*43829ea9SMatthew Barth "delay": 25, 173*43829ea9SMatthew Barth "state": "at_pgood" 174*43829ea9SMatthew Barth }, 175*43829ea9SMatthew Barth { 176*43829ea9SMatthew Barth "type": "epow", 177*43829ea9SMatthew Barth "cause": "nonfunc_fan_rotors", 178*43829ea9SMatthew Barth "count": 2, 179*43829ea9SMatthew Barth "service_mode_delay": 300, 180*43829ea9SMatthew Barth "meltdown_delay": 300 181*43829ea9SMatthew Barth } 182*43829ea9SMatthew Barth ] 183*43829ea9SMatthew Barth } 184*43829ea9SMatthew Barth} 185