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