aboutsummaryrefslogtreecommitdiffstats
path: root/roms/skiboot/external/read_esel.sh
diff options
context:
space:
mode:
Diffstat (limited to 'roms/skiboot/external/read_esel.sh')
-rw-r--r--roms/skiboot/external/read_esel.sh44
1 files changed, 44 insertions, 0 deletions
diff --git a/roms/skiboot/external/read_esel.sh b/roms/skiboot/external/read_esel.sh
new file mode 100644
index 000000000..ee4c66ed4
--- /dev/null
+++ b/roms/skiboot/external/read_esel.sh
@@ -0,0 +1,44 @@
+#!/bin/bash
+# SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+# Copyright 2013-2014 IBM Corp.
+
+set -e
+
+BMC_HOST=$1
+RECORD_ID=$2
+
+BMC_USER=admin
+BMC_PASS=admin
+
+if [ -z "$BMC_HOST" -o -z "$RECORD_ID" ]; then
+ echo "Usage: $0 <bmc hostname> <record id>"
+ echo "Example: $0 bmc 0xa > pel.bin"
+ echo ''
+ echo 'Record ids can be found using ipmitool with the "sel list" command. Records with'
+ echo 'a description of "OEM record df" contain extended SEL information (in PEL'
+ echo 'format) which can be extracted with this tool.'
+ exit -1
+fi
+
+# Convert a number into 2 hex-bytes in little-endian order
+function conv_le {
+ echo $(for i in $(printf %04x $1 | grep -o .. | tac); do echo -n "0x$i "; done)
+}
+
+function conv_native {
+ echo -n "0x${2}${1}"
+}
+
+record=$(conv_le $2)
+offset=0
+progress=0
+
+while [ $progress = 0 ]; do
+ result=$(ipmitool -H ${BMC_HOST} -I lan -U ${BMC_USER} -P ${BMC_PASS} raw 0x32 0xf1 ${record} $(conv_le ${offset}))
+ len=$(conv_native $(echo ${result} | cut -d " " -f 1-2))
+ progress=$(($(echo ${result} | cut -d " " -f 3)))
+ data="$data "$(echo -n ${result} | cut -d " " -f 6-)
+ offset=$(($offset + ${#data}/3))
+done
+
+echo -n ${data} | cut -d " " -f 1-$(($len)) | xxd -r -p