ibm-openbmc / dev

Product Development Project Mgmt and Tracking
16 stars 2 forks source link

Tools - Tool to apply/remove override config to support original fan tach feedback wiring #2725

Closed msbarth closed 3 years ago

msbarth commented 4 years ago

The original fan tach feedback wiring used the outlet rotor to determine when a requested target speed had been reached. The updated fan hardware will use the inlet rotor in determining this, so an override config needs to be applied to those systems using the originally wired fan hardware so the system can continue to be used and the BMC image updated.

The updated fan hardware will use the following fan monitoring config:

{
   "fans": [
      {
         "inventory": "/system/chassis/motherboard/fan0",
         "functional_delay": 5,
         "allowed_out_of_range_time": 30,
         "deviation": 15,
         "num_sensors_nonfunc_for_fan_nonfunc": 1,
         "monitor_start_delay": 30,
         "fan_missing_error_delay": 20,
         "nonfunc_rotor_error_delay": 0,
         "sensors": [
            {
               "name": "fan0_0",
               "has_target": true,
               "factor": 0.627,
               "offset": 750
            },
            {
               "name": "fan0_1",
               "has_target": false
            }
         ]
      },
      {
         "inventory": "/system/chassis/motherboard/fan1",
         "functional_delay": 5,
         "allowed_out_of_range_time": 30,
         "deviation": 15,
         "num_sensors_nonfunc_for_fan_nonfunc": 1,
         "monitor_start_delay": 30,
         "fan_missing_error_delay": 20,
         "nonfunc_rotor_error_delay": 0,
         "sensors": [
            {
               "name": "fan1_0",
               "has_target": true,
               "factor": 0.627,
               "offset": 750
            },
            {
               "name": "fan1_1",
               "has_target": false
            }
         ]
      },
      {
         "inventory": "/system/chassis/motherboard/fan2",
         "functional_delay": 5,
         "allowed_out_of_range_time": 30,
         "deviation": 15,
         "num_sensors_nonfunc_for_fan_nonfunc": 1,
         "monitor_start_delay": 30,
         "fan_missing_error_delay": 20,
         "nonfunc_rotor_error_delay": 0,
         "sensors": [
            {
               "name": "fan2_0",
               "has_target": true,
               "factor": 0.627,
               "offset": 750
            },
            {
               "name": "fan2_1",
               "has_target": false
            }
         ]
      },
      {
         "inventory": "/system/chassis/motherboard/fan3",
         "functional_delay": 5,
         "allowed_out_of_range_time": 30,
         "deviation": 15,
         "num_sensors_nonfunc_for_fan_nonfunc": 1,
         "monitor_start_delay": 30,
         "fan_missing_error_delay": 20,
         "nonfunc_rotor_error_delay": 0,
         "sensors": [
            {
               "name": "fan3_0",
               "has_target": true,
               "factor": 0.627,
               "offset": 750
            },
            {
               "name": "fan3_1",
               "has_target": false
            }
         ]
      },
      {
         "inventory": "/system/chassis/motherboard/fan4",
         "functional_delay": 5,
         "allowed_out_of_range_time": 30,
         "deviation": 15,
         "num_sensors_nonfunc_for_fan_nonfunc": 1,
         "monitor_start_delay": 30,
         "fan_missing_error_delay": 20,
         "nonfunc_rotor_error_delay": 0,
         "sensors": [
            {
               "name": "fan4_0",
               "has_target": true,
               "factor": 0.627,
               "offset": 750
            },
            {
               "name": "fan4_1",
               "has_target": false
            }
         ]
      },
      {
         "inventory": "/system/chassis/motherboard/fan5",
         "functional_delay": 5,
         "allowed_out_of_range_time": 30,
         "deviation": 15,
         "num_sensors_nonfunc_for_fan_nonfunc": 1,
         "monitor_start_delay": 30,
         "fan_missing_error_delay": 20,
         "nonfunc_rotor_error_delay": 0,
         "sensors": [
            {
               "name": "fan5_0",
               "has_target": true,
               "factor": 0.627,
               "offset": 750
            },
            {
               "name": "fan5_1",
               "has_target": false
            }
         ]
      }
   ],
   "sensor_trust_groups": [
      {
         "class": "NonzeroSpeed",
         "group": [
            {
               "name": "fan0_1"
            },
            {
               "name": "fan1_1"
            },
            {
               "name": "fan2_1"
            },
            {
               "name": "fan3_1"
            },
            {
               "name": "fan4_1"
            },
            {
               "name": "fan5_1"
            }
         ]
      }
   ],
   "fault_handling":
   {
       "num_nonfunc_rotors_before_error": 1,

       "power_off_config":
       [
           {
                "type": "hard",
                "cause": "missing_fan_frus",
                "count": 1,
                "delay": 25,
                "state": "at_pgood"
            },
            {
                "type": "epow",
                "cause": "nonfunc_fan_rotors",
                "count": 3,
                "service_mode_delay": 300,
                "meltdown_delay": 300
            }
       ]
   }
}

The override config needed for the originally wired fan hardware is yet to be determined.

msbarth commented 4 years ago

The factor & offset is on the _0 feedbacks for revAs and is on the _1 feedbacks for the revBs, so final version wanted would be tach lines swapped on revBs.

msbarth commented 3 years ago
msbarth commented 3 years ago

The tool is ready for use, working to coordinate the change in fan monitoring config getting merged and the necessary updates to sim.

msbarth commented 3 years ago

Change to fan monitoring config for new fan hardware -> https://gerrit.openbmc-project.xyz/c/openbmc/openbmc/+/43089