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