blob: 896a9798cb9a5785cec75e61ebfb36713857c4e8 [file] [log] [blame]
XP Chen0e483352021-05-12 09:44:26 -05001#!/bin/bash
2
Charles Boyeraf721712022-02-09 09:17:35 -06003# Provide source directive to shellcheck.
4# shellcheck source=meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-lib.sh
5source /usr/libexec/kudo-fw/kudo-lib.sh
6
7powerState=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0xe0 b)
XP Chen0e483352021-05-12 09:44:26 -05008
9getGPISourceRegisters(){
Charles Boyeraf721712022-02-09 09:17:35 -060010 REG60=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x60 w) # GPI Data Set
11 REG61=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x61 w) # GPI DATA Set #0
12 REG62=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x62 w) # GPI DATA Set #1
13 REG63=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x63 w) # GPI DATA Set #2
14 REG64=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x64 w) # GPI DATA Set #3
XP Chen0e483352021-05-12 09:44:26 -050015 DS0Pres=$((REG60 & 0x0100))
16 DS1Pres=$((REG60 & 0x0200))
17 DS2Pres=$((REG60 & 0x0400))
18 DS3Pres=$((REG60 & 0x0800))
19}
20
21getErrorCount() {
Charles Boyeraf721712022-02-09 09:17:35 -060022 MemCE=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x90 w)
23 MemUE=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x93 w)
24 CoreCE=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x80 w)
25 CoreUE=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x83 w)
26 PCIeCE=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0xc0 w)
27 PCIeUE=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0xc2 w)
28 OtherCE=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0xd0 w)
29 OtherUE=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0xd8 w)
XP Chen0e483352021-05-12 09:44:26 -050030}
31
32getReg61Vals() {
33 REG61_0800=$((REG61 & 0x0800))
34 REG61_0800_VAL=$((REG61_0800 >> 8))
35 REG61_1000=$((REG61 & 0x1000))
36 REG61_1000_VAL=$((REG61_1000 >> 12))
37}
38
39getReg62Vals() {
40 REG62_0100=$((REG62 & 0x0100))
41 REG62_0100_VAL=$((REG62_0100 >> 8))
42 REG62_0200=$((REG62 & 0x0200))
43 REG62_0200_VAL=$((REG62_0200 >> 9))
44 REG62_0400=$((REG62 & 0x0400))
45 REG62_0400_VAL=$((REG62_0400 >> 10))
46}
47
48getReg63Vals() {
49 REG63_0100=$((REG63 & 0x0100))
50 REG63_0100_VAL=$((REG63_0100 >> 8))
51}
52
53getReg64Vals() {
54 REG64_0100=$((REG64 & 0x0100))
55 REG64_0100_VAL=$((REG64_0100 >> 8))
56 REG64_0200=$((REG64 & 0x0200))
57 REG64_0200_VAL=$((REG64_0200 >> 9))
58 REG64_0800=$((REG64 & 0x0800))
59 REG64_0800_VAL=$((REG64_0800 >> 11))
60 REG64_2000=$((REG64 & 0x2000))
61 REG64_2000_VAL=$((REG64_2000 >> 13))
62 REG64_4000=$((REG64 & 0x4000))
63 REG64_4000_VAL=$((REG64_4000 >> 14))
64 REG64_8000=$((REG64 & 0x8000))
65 REG64_8000_VAL=$((REG64_8000 >> 15))
66 REG64_0001=$((REG64 & 0x0001))
67 REG64_0001_VAL=$((REG64_0001))
68}
69
70getGPIStatusRegisters(){
Charles Boyeraf721712022-02-09 09:17:35 -060071 REG70=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x70 w) # Core, DIMM, SLC, PCIe, and Other errors
72 REG78=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x78 w) # VRD Fault/Warning Error
73 REG79=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x79 w) # VRD Hot
74 REG7A=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x7A w) # DIMM Hot Error
75 REG7B=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x7B w) # Boot #1 Error
76 REG7C=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x7C w) # Boot #2 Error
77 REG7D=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x7D w) # Watchdog/Other Status
78 REG7E=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x7E w) # RAS internal error
XP Chen0e483352021-05-12 09:44:26 -050079}
80
81getReg70Vals() {
82 REG70_0100=$((REG70 & 0x0100))
83 REG70_0100_VAL=$((REG70_0100 >> 8))
84 REG70_0200=$((REG70 & 0x0200))
85 REG70_0200_VAL=$((REG70_0200 >> 9))
86 REG70_0400=$((REG70 & 0x0400))
87 REG70_0400_VAL=$((REG70_0400 >> 10))
88 REG70_0800=$((REG70 & 0x0800))
89 REG70_0800_VAL=$((REG70_0800 >> 11))
90 REG70_4000=$((REG70 & 0x4000))
91 REG70_4000_VAL=$((REG70_4000 >> 14))
92 REG70_8000=$((REG70 & 0x8000))
93 REG70_8000_VAL=$((REG70_8000 >> 15))
94 REG70_0001=$((REG70 & 0x0001))
95 REG70_0001_VAL=$((REG70_0001))
96 REG70_0002=$((REG70 & 0x0002))
97 REG70_0002_VAL=$((REG70_0002 >> 1))
98}
99
100getReg78Vals() {
101 REG78_0100=$((REG78 & 0x0100))
102 REG78_0100_VAL=$((REG78_0100 >> 8))
103 REG78_0200=$((REG78 & 0x0200))
104 REG78_0200_VAL=$((REG78_0200 >> 9))
105 REG78_0400=$((REG78 & 0x0400))
106 REG78_0400_VAL=$((REG78_0400 >> 10))
107 REG78_0800=$((REG78 & 0x0800))
108 REG78_0800_VAL=$((REG78_0800 >> 11))
109 REG78_1000=$((REG78 & 0x1000))
110 REG78_1000_VAL=$((REG78_1000 >> 12))
111 REG78_2000=$((REG78 & 0x2000))
112 REG78_2000_VAL=$((REG78_2000 >> 13))
113 REG78_4000=$((REG78 & 0x4000))
114 REG78_4000_VAL=$((REG78_4000 >> 14))
115 REG78_8000=$((REG78 & 0x8000))
116 REG78_8000_VAL=$((REG78_8000 >> 15))
117 REG78_0001=$((REG78 & 0x0001))
118 REG78_0001_VAL=$((REG78_0001))
119 REG78_0002=$((REG78 & 0x0002))
120 REG78_0002_VAL=$((REG78_0002 >> 1))
121 REG78_0004=$((REG78 & 0x0004))
122 REG78_0004_VAL=$((REG78_0004 >> 2))
123 REG78_0008=$((REG78 & 0x0008))
124 REG78_0008_VAL=$((REG78_0008 >> 3))
125}
126
127getReg79Vals() {
128 REG79_0100=$((REG79 & 0x0100))
129 REG79_0100_VAL=$((REG79_0100 >> 8))
130 REG79_1000=$((REG79 & 0x1000))
131 REG79_1000_VAL=$((REG79_1000 >> 12))
132 REG79_2000=$((REG79 & 0x2000))
133 REG79_2000_VAL=$((REG79_2000 >> 13))
134 REG79_4000=$((REG79 & 0x4000))
135 REG79_4000_VAL=$((REG79_4000 >> 14))
136 REG79_0001=$((REG79 & 0x0001))
137 REG79_0001_VAL=$((REG79_0001))
138 REG79_0002=$((REG79 & 0x0002))
139 REG79_0002_VAL=$((REG79_0002 >> 1))
140 REG79_0004=$((REG79 & 0x0004))
141 REG79_0004_VAL=$((REG79_0004 >> 2))
142 REG79_0008=$((REG79 & 0x0008))
143 REG79_0008_VAL=$((REG79_0008 >> 3))
144}
145
146getReg7AVals() {
147 REG7A_0100=$((REG7A & 0x0100))
148 REG7A_0100_VAL=$((REG7A_0100 >> 8))
149 REG7A_0200=$((REG7A & 0x0200))
150 REG7A_0200_VAL=$((REG7A_0200 >> 9))
151 REG7A_0400=$((REG7A & 0x0400))
152 REG7A_0400_VAL=$((REG7A_0400 >> 10))
153 REG7A_0800=$((REG7A & 0x0800))
154 REG7A_0800_VAL=$((REG7A_0800 >> 11))
155 REG7A_1000=$((REG7A & 0x1000))
156 REG7A_1000_VAL=$((REG7A_1000 >> 12))
157 REG7A_2000=$((REG7A & 0x2000))
158 REG7A_2000_VAL=$((REG7A_2000 >> 13))
159 REG7A_4000=$((REG7A & 0x4000))
160 REG7A_4000_VAL=$((REG7A_4000 >> 14))
161 REG7A_8000=$((REG7A & 0x8000))
162 REG7A_8000_VAL=$((REG7A_8000 >> 15))
163}
164
165getReg7DVals() {
166 REG7D_0100=$((REG7D & 0x0100))
167 REG7D_0100_VAL=$((REG7D_0100 >> 8))
168 REG7D_0200=$((REG7D & 0x0200))
169 REG7D_0200_VAL=$((REG7D_0200 >> 9))
170 REG7D_0400=$((REG7D & 0x0400))
171 REG7D_0400_VAL=$((REG7D_0400 >> 10))
172}
173
174getReg7EVals() {
175 REG7E_0100=$((REG7E & 0x0100))
176 REG7E_0100_VAL=$((REG7E_0100 >> 8))
177 REG7E_0200=$((REG7E & 0x0200))
178 REG7E_0200_VAL=$((REG7E_0200 >> 9))
179}
180
181getGPIMaskRegisters(){
Charles Boyeraf721712022-02-09 09:17:35 -0600182 REG50=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x50 w) # GPI Control #0
183 REG51=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x51 w) # GPI Control #1
184 REG52=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x52 w) # GPI Control #2
185 REG53=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x53 w) # GPI Control #3
186 REG54=$(i2cget -f -y "${I2C_S0_SMPRO[0]}" 0x"${I2C_S0_SMPRO[1]}" 0x54 w) # GPI CE/UE Mask
XP Chen0e483352021-05-12 09:44:26 -0500187}
188
189getReg50Vals() {
190 REG50_0400=$((REG50 & 0x0400))
191 REG50_0400_VAL=$((REG50_0400 >> 10))
192 REG50_0800=$((REG50 & 0x0800))
193 REG50_0800_VAL=$((REG50_0800 >> 11))
194}
195
196getReg51Vals() {
197 REG51_0100=$((REG51 & 0x0100))
198 REG51_0100_VAL=$((REG51_0100 >> 8))
199 REG51_0200=$((REG51 & 0x0200))
200 REG51_0200_VAL=$((REG51_0200 >> 9))
201 REG51_0400=$((REG51 & 0x0400))
202 REG51_0400_VAL=$((REG51_0400 >> 10))
203}
204
205getReg52Vals() {
206 REG52_0100=$((REG52 & 0x0100))
207 REG52_0100_VAL=$((REG52_0100 >> 8))
208}
209
210getReg53Vals() {
211 REG53_0100=$((REG53 & 0x0100))
212 REG53_0100_VAL=$((REG53_0100 >> 8))
213 REG53_0200=$((REG53 & 0x0200))
214 REG53_0200_VAL=$((REG53_0200 >> 9))
215 REG53_0800=$((REG53 & 0x0800))
216 REG53_0800_VAL=$((REG53_0800 >> 11))
217 REG53_2000=$((REG53 & 0x2000))
218 REG53_2000_VAL=$((REG53_2000 >> 13))
219 REG53_4000=$((REG53 & 0x4000))
220 REG53_4000_VAL=$((REG53_4000 >> 14))
221 REG53_8000=$((REG53 & 0x8000))
222 REG53_8000_VAL=$((REG53_8000 >> 15))
223 REG53_0001=$((REG53 & 0x0001))
224 REG53_0001_VAL=$((REG53_0001))
225}
226
227getReg54Vals() {
228 REG54_0100=$((REG54 & 0x0100))
229 REG54_0100_VAL=$((REG54_0100 >> 8))
230 REG54_0200=$((REG54 & 0x0200))
231 REG54_0200_VAL=$((REG54_0200 >> 9))
232 REG54_0001=$((REG54 & 0x0001))
233 REG54_0001_VAL=$((REG54_0001))
234 REG54_0002=$((REG54 & 0x0002))
235 REG54_0002_VAL=$((REG54_0002 >> 1))
236 REG54_0004=$((REG54 & 0x0004))
237 REG54_0004_VAL=$((REG54_0004 >> 2))
238 REG54_0008=$((REG54 & 0x0008))
239 REG54_0008_VAL=$((REG54_0008 >> 3))
240 REG54_0010=$((REG54 & 0x0010))
241 REG54_0010_VAL=$((REG54_0010 >> 4))
242 REG54_0020=$((REG54 & 0x0020))
243 REG54_0020_VAL=$((REG54_0020 >> 5))
244}
245
246
247
Charles Boyer0dd80062022-03-17 14:57:50 -0500248if [ -z "${powerState}" ]
XP Chen0e483352021-05-12 09:44:26 -0500249 then
250 echo "System is currently Powered off S6"
251else
252 echo "System is currently in ${powerState} "
253
254 # Get Error Count
255 getErrorCount
256 echo " "
257 echo " Error Count: "
258 echo " Memory Errors: Correctable $((MemCE >> 8)) Uncorrectable $((MemUE >> 8)) "
259 echo " Core Errors: Correctable $((CoreCE >> 8)) Uncorrectable $((CoreUE >> 8))"
260 echo " PCIe Errors: Correctable $((PCIeCE >> 8)) Uncorrectable $((PCIeUE >> 8)) "
261 echo " Other Errors: Correctable $((OtherCE >> 8)) Uncorrectable $((OtherUE >> 8)) "
262
263 # GPI Source Registers
264 getGPISourceRegisters
265 echo " "
266 echo " GPI Source Registers: "
267 echo " GPI Data Set #0 Present: $((DS0Pres >> 8)) "
268 echo " GPI Data Set #1 Present: $((DS1Pres >> 9)) "
269 echo " GPI Data Set #2 Present: $((DS2Pres >> 10)) "
270 echo " GPI Data Set #3 Present: $((DS3Pres >> 11)) "
271
272 # REG61 Data Set#0
273 getReg61Vals
274 echo " "
275 echo " GPI Data Set#0: "
276 if [[ "$REG61_0800_VAL" != 0 ]]; then
277 echo " Platform Booting "
278 fi
279 if [[ "$REG61_1000_VAL" != 0 ]]; then
280 echo " Critical Stop "
281 fi
282
283 # REG62 Data Set#1
284 getReg62Vals
285 echo " "
286 echo " GPI Data Set#1: "
287 if [[ "$REG62_0100_VAL" != 0 ]]; then
288 echo " SoC VR HOT/Warn/Fault "
289 fi
290 if [[ "$REG62_0200_VAL" != 0 ]]; then
291 echo " Core VR HOT/Warn/Fault "
292 fi
293 if [[ "$REG62_0400_VAL" != 0 ]]; then
294 echo " DIMM HOT/Warn/Fault "
295 fi
296
297 # REG63 Data Set#2
298 getReg63Vals
299 echo " "
300 echo " GPI Data Set#2: "
301 if [[ "$REG63_0100_VAL" != 0 ]]; then
302 echo " DIMM HOT "
303 fi
304
305 # REG64 Data Set#3
306 getReg64Vals
307 echo " "
308 echo " GPI Data Set#3: "
309 if [[ "$REG64_0100_VAL" != 0 ]]; then
310 echo " Core Errors "
311 fi
312 if [[ "$REG64_0200_VAL" != 0 ]]; then
313 echo " Memory Errors "
314 fi
315 if [[ "$REG64_0800_VAL" != 0 ]]; then
316 echo " PCIe Errors "
317 fi
318 if [[ "$REG64_2000_VAL" != 0 ]]; then
319 echo " Other Errors "
320 fi
321 if [[ "$REG64_4000_VAL" != 0 ]]; then
322 echo " ACPI State Change "
323 fi
324 if [[ "$REG64_8000_VAL" != 0 ]]; then
325 echo " Boot Errors "
326 fi
327 if [[ "$REG64_0001_VAL" != 0 ]]; then
328 echo " RAS Internal Error "
329 fi
330
331 # GPI Status Regs
332 getGPIStatusRegisters
333 echo " "
334 echo " GPI Status Regs "
335
336 getReg70Vals
337 echo " "
338 echo " Core, DIMM, SLC, PCIe, and Other errors: "
339 if [[ "$REG70_0100_VAL" != 0 ]]; then
340 echo " Core CE Error "
341 fi
342 if [[ "$REG70_0200_VAL" != 0 ]]; then
343 echo " Core UE Error "
344 fi
345 if [[ "$REG70_0400_VAL" != 0 ]]; then
346 echo " DIMM CE Error "
347 fi
348 if [[ "$REG70_0800_VAL" != 0 ]]; then
349 echo " DIMM UE Error "
350 fi
351 if [[ "$REG70_4000_VAL" != 0 ]]; then
352 echo " PCIe CE Error "
353 fi
354 if [[ "$REG70_8000_VAL" != 0 ]]; then
355 echo " PCIe UE Error "
356 fi
357 if [[ "$REG70_0001_VAL" != 0 ]]; then
358 echo " Other CE Error "
359 fi
360 if [[ "$REG70_0002_VAL" != 0 ]]; then
361 echo " Other UE Error "
362 fi
363
364 getReg78Vals
365 echo " "
366 echo " VRD Fault/Warning Error: "
367 if [[ "$REG78_0100_VAL" != 0 ]]; then
368 echo " SoC VRD fault/warning "
369 fi
370 if [[ "$REG78_0200_VAL" != 0 ]]; then
371 echo " Core VRD1 fault/warning "
372 fi
373 if [[ "$REG78_0400_VAL" != 0 ]]; then
374 echo " Core VRD2 fault/warning "
375 fi
376 if [[ "$REG78_0800_VAL" != 0 ]]; then
377 echo " Core VRD3 fault/warning "
378 fi
379 if [[ "$REG78_1000_VAL" != 0 ]]; then
380 echo " DIMM VRD1 fault/warning "
381 fi
382 if [[ "$REG78_2000_VAL" != 0 ]]; then
383 echo " DIMM VRD2 fault/warning "
384 fi
385 if [[ "$REG78_4000_VAL" != 0 ]]; then
386 echo " DIMM VRD3 fault/warning "
387 fi
388 if [[ "$REG78_8000_VAL" != 0 ]]; then
389 echo " DIMM VRD3 fault/warning "
390 fi
391 if [[ "$REG78_0001_VAL" != 0 ]]; then
392 echo " DIMM fault/warning "
393 fi
394 if [[ "$REG78_0002_VAL" != 0 ]]; then
395 echo " DIMM fault/warning "
396 fi
397 if [[ "$REG78_0004_VAL" != 0 ]]; then
398 echo " DIMM fault/warning "
399 fi
400 if [[ "$REG78_0008_VAL" != 0 ]]; then
401 echo " DIMM fault/warning "
402 fi
403
404 getReg79Vals
405 echo " "
406 echo " VRD Hot: "
407 if [[ "$REG79_0100_VAL" != 0 ]]; then
408 echo " SoC VRD is HOT "
409 fi
410 if [[ "$REG79_1000_VAL" != 0 ]]; then
411 echo " Core VRD1 is HOT "
412 fi
413 if [[ "$REG79_2000_VAL" != 0 ]]; then
414 echo " Core VRD2 is HOT "
415 fi
416 if [[ "$REG79_4000_VAL" != 0 ]]; then
417 echo " Core VRD3 is HOT "
418 fi
419 if [[ "$REG79_0001_VAL" != 0 ]]; then
420 echo " DIMM VRD1 is HOT "
421 fi
422 if [[ "$REG79_0002_VAL" != 0 ]]; then
423 echo " DIMM VRD2 is HOT "
424 fi
425 if [[ "$REG79_0004_VAL" != 0 ]]; then
426 echo " DIMM VRD3 is HOT "
427 fi
428 if [[ "$REG79_0008_VAL" != 0 ]]; then
429 echo " DIMM VRD4 is HOT "
430 fi
431
432 getReg7AVals
433 echo " "
434 echo " DIMM Hot Error: "
435 if [[ "$REG7A_0100_VAL" != 0 ]]; then
436 echo " DIMM channel 0 is HOT "
437 fi
438 if [[ "$REG7A_0200_VAL" != 0 ]]; then
439 echo " DIMM channel 1 is HOT "
440 fi
441 if [[ "$REG7A_0400_VAL" != 0 ]]; then
442 echo " DIMM channel 2 is HOT "
443 fi
444 if [[ "$REG7A_0800_VAL" != 0 ]]; then
445 echo " DIMM channel 3 is HOT "
446 fi
447 if [[ "$REG7A_1000_VAL" != 0 ]]; then
448 echo " DIMM channel 4 is HOT "
449 fi
450 if [[ "$REG7A_2000_VAL" != 0 ]]; then
451 echo " DIMM channel 5 is HOT "
452 fi
453 if [[ "$REG7A_4000_VAL" != 0 ]]; then
454 echo " DIMM channel 6 is HOT "
455 fi
456 if [[ "$REG7A_8000_VAL" != 0 ]]; then
457 echo " DIMM channel 7 is HOT "
458 fi
459
460 echo " "
461 echo " Boot #1 Error: $((REG7B >> 8)) "
462 echo " Boot #2 Error: $((REG7C >> 8)) "
463
464
465 getReg7DVals
466 echo " "
467 echo " Watchdog/Other Status: "
468 if [[ "$REG7D_0100_VAL" != 0 ]]; then
469 echo " Non-secure WDT expired "
470 fi
471 if [[ "$REG7D_0200_VAL" != 0 ]]; then
472 echo " Secure WDT expired "
473 fi
474 if [[ "$REG7D_0400_VAL" != 0 ]]; then
475 echo " Firmware WDT expired "
476 fi
477
478 getReg7EVals
479 echo " "
480 echo " RAS internal error: "
481 if [[ "$REG7E_0100_VAL" != 0 ]]; then
482 echo " Error from SMpro "
483 fi
484 if [[ "$REG7E_0200_VAL" != 0 ]]; then
485 echo " Error from PMpro "
486 fi
487
488 # GPI Mask Regs
489 getGPIMaskRegisters
490 echo " "
491 echo " GPI Mask Regs "
492
493 getReg50Vals
494 echo " "
495 echo " GPI Control #0: "
496
497 if [[ "$REG50_0400_VAL" != 0 ]]; then
498 echo " Platform Booting "
499 fi
500 if [[ "$REG50_0800_VAL" != 0 ]]; then
501 echo " Critical Stop "
502 fi
503
504 getReg51Vals
505 echo " "
506 echo " GPI Control #1: "
507
508 if [[ "$REG51_0100_VAL" != 0 ]]; then
509 echo " SoC VR HOT/Warn/Fault "
510 fi
511 if [[ "$REG51_0200_VAL" != 0 ]]; then
512 echo " Core VR HOT/Warn/Fault "
513 fi
514 if [[ "$REG51_0400_VAL" != 0 ]]; then
515 echo " DIMM VRD HOT/Warn/Fault "
516 fi
517
518 getReg52Vals
519 echo " "
520 echo " GPI Control #2: "
521
522 if [[ "$REG52_0100_VAL" != 0 ]]; then
523 echo " DIMM HOT "
524 fi
525
526 getReg53Vals
527 echo " "
528 echo " GPI Control #3: "
529 if [[ "$REG53_0100_VAL" != 0 ]]; then
530 echo " Core Errors "
531 fi
532 if [[ "$REG53_0200_VAL" != 0 ]]; then
533 echo " Memory Errors "
534 fi
535 if [[ "$REG53_0800_VAL" != 0 ]]; then
536 echo " PCIe Errors "
537 fi
538 if [[ "$REG53_2000_VAL" != 0 ]]; then
539 echo " Other SoC Errors "
540 fi
541 if [[ "$REG53_4000_VAL" != 0 ]]; then
542 echo " ACPI State Change "
543 fi
544 if [[ "$REG53_8000_VAL" != 0 ]]; then
545 echo " Boot Errors "
546 fi
547 if [[ "$REG53_0001_VAL" != 0 ]]; then
548 echo " RAS Internal Error "
549 fi
550
551 getReg54Vals
552 echo " "
553 echo " GPI CE/UE Mask: "
554 if [[ "$REG54_0100_VAL" != 0 ]]; then
555 echo " Core CE "
556 fi
557 if [[ "$REG54_0200_VAL" != 0 ]]; then
558 echo " Core UE "
559 fi
560 if [[ "$REG54_0001_VAL" != 0 ]]; then
561 echo " DIMM CE "
562 fi
563 if [[ "$REG54_0002_VAL" != 0 ]]; then
564 echo " DIMM UE "
565 fi
566 if [[ "$REG54_0004_VAL" != 0 ]]; then
567 echo " PCIe CE "
568 fi
569 if [[ "$REG54_0008_VAL" != 0 ]]; then
570 echo " PCIe UE "
571 fi
572 if [[ "$REG54_0010_VAL" != 0 ]]; then
573 echo " Other CE "
574 fi
575 if [[ "$REG54_0020_VAL" != 0 ]]; then
576 echo " Other UE "
577 fi
578
579fi