diff options
Diffstat (limited to 'meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh')
-rw-r--r-- | meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh | 575 |
1 files changed, 575 insertions, 0 deletions
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh new file mode 100644 index 000000000..af1b0a4e7 --- /dev/null +++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-cmd/kudo-ras.sh @@ -0,0 +1,575 @@ +#!/bin/bash + +powerState=$(i2cget -f -y 0x2 0x4f 0xe0 b) + +getGPISourceRegisters(){ + REG60=$(i2cget -f -y 0x2 0x4f 0x60 w) # GPI Data Set + REG61=$(i2cget -f -y 0x2 0x4f 0x61 w) # GPI DATA Set #0 + REG62=$(i2cget -f -y 0x2 0x4f 0x62 w) # GPI DATA Set #1 + REG63=$(i2cget -f -y 0x2 0x4f 0x63 w) # GPI DATA Set #2 + REG64=$(i2cget -f -y 0x2 0x4f 0x64 w) # GPI DATA Set #3 + DS0Pres=$((REG60 & 0x0100)) + DS1Pres=$((REG60 & 0x0200)) + DS2Pres=$((REG60 & 0x0400)) + DS3Pres=$((REG60 & 0x0800)) +} + +getErrorCount() { + MemCE=$(i2cget -f -y 0x2 0x4f 0x90 w) + MemUE=$(i2cget -f -y 0x2 0x4f 0x93 w) + CoreCE=$(i2cget -f -y 0x2 0x4f 0x80 w) + CoreUE=$(i2cget -f -y 0x2 0x4f 0x83 w) + PCIeCE=$(i2cget -f -y 0x2 0x4f 0xc0 w) + PCIeUE=$(i2cget -f -y 0x2 0x4f 0xc2 w) + OtherCE=$(i2cget -f -y 0x2 0x4f 0xd0 w) + OtherUE=$(i2cget -f -y 0x2 0x4f 0xd8 w) +} + +getReg61Vals() { + REG61_0800=$((REG61 & 0x0800)) + REG61_0800_VAL=$((REG61_0800 >> 8)) + REG61_1000=$((REG61 & 0x1000)) + REG61_1000_VAL=$((REG61_1000 >> 12)) +} + +getReg62Vals() { + REG62_0100=$((REG62 & 0x0100)) + REG62_0100_VAL=$((REG62_0100 >> 8)) + REG62_0200=$((REG62 & 0x0200)) + REG62_0200_VAL=$((REG62_0200 >> 9)) + REG62_0400=$((REG62 & 0x0400)) + REG62_0400_VAL=$((REG62_0400 >> 10)) +} + +getReg63Vals() { + REG63_0100=$((REG63 & 0x0100)) + REG63_0100_VAL=$((REG63_0100 >> 8)) +} + +getReg64Vals() { + REG64_0100=$((REG64 & 0x0100)) + REG64_0100_VAL=$((REG64_0100 >> 8)) + REG64_0200=$((REG64 & 0x0200)) + REG64_0200_VAL=$((REG64_0200 >> 9)) + REG64_0800=$((REG64 & 0x0800)) + REG64_0800_VAL=$((REG64_0800 >> 11)) + REG64_2000=$((REG64 & 0x2000)) + REG64_2000_VAL=$((REG64_2000 >> 13)) + REG64_4000=$((REG64 & 0x4000)) + REG64_4000_VAL=$((REG64_4000 >> 14)) + REG64_8000=$((REG64 & 0x8000)) + REG64_8000_VAL=$((REG64_8000 >> 15)) + REG64_0001=$((REG64 & 0x0001)) + REG64_0001_VAL=$((REG64_0001)) +} + +getGPIStatusRegisters(){ + REG70=$(i2cget -f -y 0x2 0x4f 0x70 w) # Core, DIMM, SLC, PCIe, and Other errors + REG78=$(i2cget -f -y 0x2 0x4f 0x78 w) # VRD Fault/Warning Error + REG79=$(i2cget -f -y 0x2 0x4f 0x79 w) # VRD Hot + REG7A=$(i2cget -f -y 0x2 0x4f 0x7A w) # DIMM Hot Error + REG7B=$(i2cget -f -y 0x2 0x4f 0x7B w) # Boot #1 Error + REG7C=$(i2cget -f -y 0x2 0x4f 0x7C w) # Boot #2 Error + REG7D=$(i2cget -f -y 0x2 0x4f 0x7D w) # Watchdog/Other Status + REG7E=$(i2cget -f -y 0x2 0x4f 0x7E w) # RAS internal error +} + +getReg70Vals() { + REG70_0100=$((REG70 & 0x0100)) + REG70_0100_VAL=$((REG70_0100 >> 8)) + REG70_0200=$((REG70 & 0x0200)) + REG70_0200_VAL=$((REG70_0200 >> 9)) + REG70_0400=$((REG70 & 0x0400)) + REG70_0400_VAL=$((REG70_0400 >> 10)) + REG70_0800=$((REG70 & 0x0800)) + REG70_0800_VAL=$((REG70_0800 >> 11)) + REG70_4000=$((REG70 & 0x4000)) + REG70_4000_VAL=$((REG70_4000 >> 14)) + REG70_8000=$((REG70 & 0x8000)) + REG70_8000_VAL=$((REG70_8000 >> 15)) + REG70_0001=$((REG70 & 0x0001)) + REG70_0001_VAL=$((REG70_0001)) + REG70_0002=$((REG70 & 0x0002)) + REG70_0002_VAL=$((REG70_0002 >> 1)) +} + +getReg78Vals() { + REG78_0100=$((REG78 & 0x0100)) + REG78_0100_VAL=$((REG78_0100 >> 8)) + REG78_0200=$((REG78 & 0x0200)) + REG78_0200_VAL=$((REG78_0200 >> 9)) + REG78_0400=$((REG78 & 0x0400)) + REG78_0400_VAL=$((REG78_0400 >> 10)) + REG78_0800=$((REG78 & 0x0800)) + REG78_0800_VAL=$((REG78_0800 >> 11)) + REG78_1000=$((REG78 & 0x1000)) + REG78_1000_VAL=$((REG78_1000 >> 12)) + REG78_2000=$((REG78 & 0x2000)) + REG78_2000_VAL=$((REG78_2000 >> 13)) + REG78_4000=$((REG78 & 0x4000)) + REG78_4000_VAL=$((REG78_4000 >> 14)) + REG78_8000=$((REG78 & 0x8000)) + REG78_8000_VAL=$((REG78_8000 >> 15)) + REG78_0001=$((REG78 & 0x0001)) + REG78_0001_VAL=$((REG78_0001)) + REG78_0002=$((REG78 & 0x0002)) + REG78_0002_VAL=$((REG78_0002 >> 1)) + REG78_0004=$((REG78 & 0x0004)) + REG78_0004_VAL=$((REG78_0004 >> 2)) + REG78_0008=$((REG78 & 0x0008)) + REG78_0008_VAL=$((REG78_0008 >> 3)) +} + +getReg79Vals() { + REG79_0100=$((REG79 & 0x0100)) + REG79_0100_VAL=$((REG79_0100 >> 8)) + REG79_1000=$((REG79 & 0x1000)) + REG79_1000_VAL=$((REG79_1000 >> 12)) + REG79_2000=$((REG79 & 0x2000)) + REG79_2000_VAL=$((REG79_2000 >> 13)) + REG79_4000=$((REG79 & 0x4000)) + REG79_4000_VAL=$((REG79_4000 >> 14)) + REG79_0001=$((REG79 & 0x0001)) + REG79_0001_VAL=$((REG79_0001)) + REG79_0002=$((REG79 & 0x0002)) + REG79_0002_VAL=$((REG79_0002 >> 1)) + REG79_0004=$((REG79 & 0x0004)) + REG79_0004_VAL=$((REG79_0004 >> 2)) + REG79_0008=$((REG79 & 0x0008)) + REG79_0008_VAL=$((REG79_0008 >> 3)) +} + +getReg7AVals() { + REG7A_0100=$((REG7A & 0x0100)) + REG7A_0100_VAL=$((REG7A_0100 >> 8)) + REG7A_0200=$((REG7A & 0x0200)) + REG7A_0200_VAL=$((REG7A_0200 >> 9)) + REG7A_0400=$((REG7A & 0x0400)) + REG7A_0400_VAL=$((REG7A_0400 >> 10)) + REG7A_0800=$((REG7A & 0x0800)) + REG7A_0800_VAL=$((REG7A_0800 >> 11)) + REG7A_1000=$((REG7A & 0x1000)) + REG7A_1000_VAL=$((REG7A_1000 >> 12)) + REG7A_2000=$((REG7A & 0x2000)) + REG7A_2000_VAL=$((REG7A_2000 >> 13)) + REG7A_4000=$((REG7A & 0x4000)) + REG7A_4000_VAL=$((REG7A_4000 >> 14)) + REG7A_8000=$((REG7A & 0x8000)) + REG7A_8000_VAL=$((REG7A_8000 >> 15)) +} + +getReg7DVals() { + REG7D_0100=$((REG7D & 0x0100)) + REG7D_0100_VAL=$((REG7D_0100 >> 8)) + REG7D_0200=$((REG7D & 0x0200)) + REG7D_0200_VAL=$((REG7D_0200 >> 9)) + REG7D_0400=$((REG7D & 0x0400)) + REG7D_0400_VAL=$((REG7D_0400 >> 10)) +} + +getReg7EVals() { + REG7E_0100=$((REG7E & 0x0100)) + REG7E_0100_VAL=$((REG7E_0100 >> 8)) + REG7E_0200=$((REG7E & 0x0200)) + REG7E_0200_VAL=$((REG7E_0200 >> 9)) +} + +getGPIMaskRegisters(){ + REG50=$(i2cget -f -y 0x2 0x4f 0x50 w) # GPI Control #0 + REG51=$(i2cget -f -y 0x2 0x4f 0x51 w) # GPI Control #1 + REG52=$(i2cget -f -y 0x2 0x4f 0x52 w) # GPI Control #2 + REG53=$(i2cget -f -y 0x2 0x4f 0x53 w) # GPI Control #3 + REG54=$(i2cget -f -y 0x2 0x4f 0x54 w) # GPI CE/UE Mask +} + +getReg50Vals() { + REG50_0400=$((REG50 & 0x0400)) + REG50_0400_VAL=$((REG50_0400 >> 10)) + REG50_0800=$((REG50 & 0x0800)) + REG50_0800_VAL=$((REG50_0800 >> 11)) +} + +getReg51Vals() { + REG51_0100=$((REG51 & 0x0100)) + REG51_0100_VAL=$((REG51_0100 >> 8)) + REG51_0200=$((REG51 & 0x0200)) + REG51_0200_VAL=$((REG51_0200 >> 9)) + REG51_0400=$((REG51 & 0x0400)) + REG51_0400_VAL=$((REG51_0400 >> 10)) +} + +getReg52Vals() { + REG52_0100=$((REG52 & 0x0100)) + REG52_0100_VAL=$((REG52_0100 >> 8)) +} + +getReg53Vals() { + REG53_0100=$((REG53 & 0x0100)) + REG53_0100_VAL=$((REG53_0100 >> 8)) + REG53_0200=$((REG53 & 0x0200)) + REG53_0200_VAL=$((REG53_0200 >> 9)) + REG53_0800=$((REG53 & 0x0800)) + REG53_0800_VAL=$((REG53_0800 >> 11)) + REG53_2000=$((REG53 & 0x2000)) + REG53_2000_VAL=$((REG53_2000 >> 13)) + REG53_4000=$((REG53 & 0x4000)) + REG53_4000_VAL=$((REG53_4000 >> 14)) + REG53_8000=$((REG53 & 0x8000)) + REG53_8000_VAL=$((REG53_8000 >> 15)) + REG53_0001=$((REG53 & 0x0001)) + REG53_0001_VAL=$((REG53_0001)) +} + +getReg54Vals() { + REG54_0100=$((REG54 & 0x0100)) + REG54_0100_VAL=$((REG54_0100 >> 8)) + REG54_0200=$((REG54 & 0x0200)) + REG54_0200_VAL=$((REG54_0200 >> 9)) + REG54_0001=$((REG54 & 0x0001)) + REG54_0001_VAL=$((REG54_0001)) + REG54_0002=$((REG54 & 0x0002)) + REG54_0002_VAL=$((REG54_0002 >> 1)) + REG54_0004=$((REG54 & 0x0004)) + REG54_0004_VAL=$((REG54_0004 >> 2)) + REG54_0008=$((REG54 & 0x0008)) + REG54_0008_VAL=$((REG54_0008 >> 3)) + REG54_0010=$((REG54 & 0x0010)) + REG54_0010_VAL=$((REG54_0010 >> 4)) + REG54_0020=$((REG54 & 0x0020)) + REG54_0020_VAL=$((REG54_0020 >> 5)) +} + + + +if [ -z $powerState ] + then + echo "System is currently Powered off S6" +else + echo "System is currently in ${powerState} " + + # Get Error Count + getErrorCount + echo " " + echo " Error Count: " + echo " Memory Errors: Correctable $((MemCE >> 8)) Uncorrectable $((MemUE >> 8)) " + echo " Core Errors: Correctable $((CoreCE >> 8)) Uncorrectable $((CoreUE >> 8))" + echo " PCIe Errors: Correctable $((PCIeCE >> 8)) Uncorrectable $((PCIeUE >> 8)) " + echo " Other Errors: Correctable $((OtherCE >> 8)) Uncorrectable $((OtherUE >> 8)) " + + # GPI Source Registers + getGPISourceRegisters + echo " " + echo " GPI Source Registers: " + echo " GPI Data Set #0 Present: $((DS0Pres >> 8)) " + echo " GPI Data Set #1 Present: $((DS1Pres >> 9)) " + echo " GPI Data Set #2 Present: $((DS2Pres >> 10)) " + echo " GPI Data Set #3 Present: $((DS3Pres >> 11)) " + + # REG61 Data Set#0 + getReg61Vals + echo " " + echo " GPI Data Set#0: " + if [[ "$REG61_0800_VAL" != 0 ]]; then + echo " Platform Booting " + fi + if [[ "$REG61_1000_VAL" != 0 ]]; then + echo " Critical Stop " + fi + + # REG62 Data Set#1 + getReg62Vals + echo " " + echo " GPI Data Set#1: " + if [[ "$REG62_0100_VAL" != 0 ]]; then + echo " SoC VR HOT/Warn/Fault " + fi + if [[ "$REG62_0200_VAL" != 0 ]]; then + echo " Core VR HOT/Warn/Fault " + fi + if [[ "$REG62_0400_VAL" != 0 ]]; then + echo " DIMM HOT/Warn/Fault " + fi + + # REG63 Data Set#2 + getReg63Vals + echo " " + echo " GPI Data Set#2: " + if [[ "$REG63_0100_VAL" != 0 ]]; then + echo " DIMM HOT " + fi + + # REG64 Data Set#3 + getReg64Vals + echo " " + echo " GPI Data Set#3: " + if [[ "$REG64_0100_VAL" != 0 ]]; then + echo " Core Errors " + fi + if [[ "$REG64_0200_VAL" != 0 ]]; then + echo " Memory Errors " + fi + if [[ "$REG64_0800_VAL" != 0 ]]; then + echo " PCIe Errors " + fi + if [[ "$REG64_2000_VAL" != 0 ]]; then + echo " Other Errors " + fi + if [[ "$REG64_4000_VAL" != 0 ]]; then + echo " ACPI State Change " + fi + if [[ "$REG64_8000_VAL" != 0 ]]; then + echo " Boot Errors " + fi + if [[ "$REG64_0001_VAL" != 0 ]]; then + echo " RAS Internal Error " + fi + + # GPI Status Regs + getGPIStatusRegisters + echo " " + echo " GPI Status Regs " + + getReg70Vals + echo " " + echo " Core, DIMM, SLC, PCIe, and Other errors: " + if [[ "$REG70_0100_VAL" != 0 ]]; then + echo " Core CE Error " + fi + if [[ "$REG70_0200_VAL" != 0 ]]; then + echo " Core UE Error " + fi + if [[ "$REG70_0400_VAL" != 0 ]]; then + echo " DIMM CE Error " + fi + if [[ "$REG70_0800_VAL" != 0 ]]; then + echo " DIMM UE Error " + fi + if [[ "$REG70_4000_VAL" != 0 ]]; then + echo " PCIe CE Error " + fi + if [[ "$REG70_8000_VAL" != 0 ]]; then + echo " PCIe UE Error " + fi + if [[ "$REG70_0001_VAL" != 0 ]]; then + echo " Other CE Error " + fi + if [[ "$REG70_0002_VAL" != 0 ]]; then + echo " Other UE Error " + fi + + getReg78Vals + echo " " + echo " VRD Fault/Warning Error: " + if [[ "$REG78_0100_VAL" != 0 ]]; then + echo " SoC VRD fault/warning " + fi + if [[ "$REG78_0200_VAL" != 0 ]]; then + echo " Core VRD1 fault/warning " + fi + if [[ "$REG78_0400_VAL" != 0 ]]; then + echo " Core VRD2 fault/warning " + fi + if [[ "$REG78_0800_VAL" != 0 ]]; then + echo " Core VRD3 fault/warning " + fi + if [[ "$REG78_1000_VAL" != 0 ]]; then + echo " DIMM VRD1 fault/warning " + fi + if [[ "$REG78_2000_VAL" != 0 ]]; then + echo " DIMM VRD2 fault/warning " + fi + if [[ "$REG78_4000_VAL" != 0 ]]; then + echo " DIMM VRD3 fault/warning " + fi + if [[ "$REG78_8000_VAL" != 0 ]]; then + echo " DIMM VRD3 fault/warning " + fi + if [[ "$REG78_0001_VAL" != 0 ]]; then + echo " DIMM fault/warning " + fi + if [[ "$REG78_0002_VAL" != 0 ]]; then + echo " DIMM fault/warning " + fi + if [[ "$REG78_0004_VAL" != 0 ]]; then + echo " DIMM fault/warning " + fi + if [[ "$REG78_0008_VAL" != 0 ]]; then + echo " DIMM fault/warning " + fi + + getReg79Vals + echo " " + echo " VRD Hot: " + if [[ "$REG79_0100_VAL" != 0 ]]; then + echo " SoC VRD is HOT " + fi + if [[ "$REG79_1000_VAL" != 0 ]]; then + echo " Core VRD1 is HOT " + fi + if [[ "$REG79_2000_VAL" != 0 ]]; then + echo " Core VRD2 is HOT " + fi + if [[ "$REG79_4000_VAL" != 0 ]]; then + echo " Core VRD3 is HOT " + fi + if [[ "$REG79_0001_VAL" != 0 ]]; then + echo " DIMM VRD1 is HOT " + fi + if [[ "$REG79_0002_VAL" != 0 ]]; then + echo " DIMM VRD2 is HOT " + fi + if [[ "$REG79_0004_VAL" != 0 ]]; then + echo " DIMM VRD3 is HOT " + fi + if [[ "$REG79_0008_VAL" != 0 ]]; then + echo " DIMM VRD4 is HOT " + fi + + getReg7AVals + echo " " + echo " DIMM Hot Error: " + if [[ "$REG7A_0100_VAL" != 0 ]]; then + echo " DIMM channel 0 is HOT " + fi + if [[ "$REG7A_0200_VAL" != 0 ]]; then + echo " DIMM channel 1 is HOT " + fi + if [[ "$REG7A_0400_VAL" != 0 ]]; then + echo " DIMM channel 2 is HOT " + fi + if [[ "$REG7A_0800_VAL" != 0 ]]; then + echo " DIMM channel 3 is HOT " + fi + if [[ "$REG7A_1000_VAL" != 0 ]]; then + echo " DIMM channel 4 is HOT " + fi + if [[ "$REG7A_2000_VAL" != 0 ]]; then + echo " DIMM channel 5 is HOT " + fi + if [[ "$REG7A_4000_VAL" != 0 ]]; then + echo " DIMM channel 6 is HOT " + fi + if [[ "$REG7A_8000_VAL" != 0 ]]; then + echo " DIMM channel 7 is HOT " + fi + + echo " " + echo " Boot #1 Error: $((REG7B >> 8)) " + echo " Boot #2 Error: $((REG7C >> 8)) " + + + getReg7DVals + echo " " + echo " Watchdog/Other Status: " + if [[ "$REG7D_0100_VAL" != 0 ]]; then + echo " Non-secure WDT expired " + fi + if [[ "$REG7D_0200_VAL" != 0 ]]; then + echo " Secure WDT expired " + fi + if [[ "$REG7D_0400_VAL" != 0 ]]; then + echo " Firmware WDT expired " + fi + + getReg7EVals + echo " " + echo " RAS internal error: " + if [[ "$REG7E_0100_VAL" != 0 ]]; then + echo " Error from SMpro " + fi + if [[ "$REG7E_0200_VAL" != 0 ]]; then + echo " Error from PMpro " + fi + + # GPI Mask Regs + getGPIMaskRegisters + echo " " + echo " GPI Mask Regs " + + getReg50Vals + echo " " + echo " GPI Control #0: " + + if [[ "$REG50_0400_VAL" != 0 ]]; then + echo " Platform Booting " + fi + if [[ "$REG50_0800_VAL" != 0 ]]; then + echo " Critical Stop " + fi + + getReg51Vals + echo " " + echo " GPI Control #1: " + + if [[ "$REG51_0100_VAL" != 0 ]]; then + echo " SoC VR HOT/Warn/Fault " + fi + if [[ "$REG51_0200_VAL" != 0 ]]; then + echo " Core VR HOT/Warn/Fault " + fi + if [[ "$REG51_0400_VAL" != 0 ]]; then + echo " DIMM VRD HOT/Warn/Fault " + fi + + getReg52Vals + echo " " + echo " GPI Control #2: " + + if [[ "$REG52_0100_VAL" != 0 ]]; then + echo " DIMM HOT " + fi + + getReg53Vals + echo " " + echo " GPI Control #3: " + if [[ "$REG53_0100_VAL" != 0 ]]; then + echo " Core Errors " + fi + if [[ "$REG53_0200_VAL" != 0 ]]; then + echo " Memory Errors " + fi + if [[ "$REG53_0800_VAL" != 0 ]]; then + echo " PCIe Errors " + fi + if [[ "$REG53_2000_VAL" != 0 ]]; then + echo " Other SoC Errors " + fi + if [[ "$REG53_4000_VAL" != 0 ]]; then + echo " ACPI State Change " + fi + if [[ "$REG53_8000_VAL" != 0 ]]; then + echo " Boot Errors " + fi + if [[ "$REG53_0001_VAL" != 0 ]]; then + echo " RAS Internal Error " + fi + + getReg54Vals + echo " " + echo " GPI CE/UE Mask: " + if [[ "$REG54_0100_VAL" != 0 ]]; then + echo " Core CE " + fi + if [[ "$REG54_0200_VAL" != 0 ]]; then + echo " Core UE " + fi + if [[ "$REG54_0001_VAL" != 0 ]]; then + echo " DIMM CE " + fi + if [[ "$REG54_0002_VAL" != 0 ]]; then + echo " DIMM UE " + fi + if [[ "$REG54_0004_VAL" != 0 ]]; then + echo " PCIe CE " + fi + if [[ "$REG54_0008_VAL" != 0 ]]; then + echo " PCIe UE " + fi + if [[ "$REG54_0010_VAL" != 0 ]]; then + echo " Other CE " + fi + if [[ "$REG54_0020_VAL" != 0 ]]; then + echo " Other UE " + fi + +fi |