1#!/bin/bash 2 3# 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) 8 9getGPISourceRegisters(){ 10 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 15 DS0Pres=$((REG60 & 0x0100)) 16 DS1Pres=$((REG60 & 0x0200)) 17 DS2Pres=$((REG60 & 0x0400)) 18 DS3Pres=$((REG60 & 0x0800)) 19} 20 21getErrorCount() { 22 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) 30} 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(){ 71 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 79} 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(){ 182 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 187} 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 248if [ -z "${powerState}" ] 249 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 580