116 lines
3 KiB
Bash
116 lines
3 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
# Check for ath10k (and maybe other) bugs, package them up,
|
||
|
# and let user know what to do with them.
|
||
|
|
||
|
TMPLOC=/tmp
|
||
|
CRASHDIR=$TMPLOC/bugcheck
|
||
|
FOUND_BUG=0
|
||
|
|
||
|
# set -x
|
||
|
|
||
|
bugcheck_generic()
|
||
|
{
|
||
|
echo "LEDE crashlog report" > $CRASHDIR/info.txt
|
||
|
date >> $CRASHDIR/info.txt
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "uname" >> $CRASHDIR/info.txt
|
||
|
uname -a >> $CRASHDIR/info.txt
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "os-release" >> $CRASHDIR/info.txt
|
||
|
cat /etc/os-release >> $CRASHDIR/info.txt
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "os-release" >> $CRASHDIR/info.txt
|
||
|
cat /etc/os-release >> $CRASHDIR/info.txt
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "dmesg output" >> $CRASHDIR/info.txt
|
||
|
dmesg >> $CRASHDIR/info.txt
|
||
|
if [ -x /usr/bin/lspci ]
|
||
|
then
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "lspci" >> $CRASHDIR/info.txt
|
||
|
lspci >> $CRASHDIR/info.txt
|
||
|
fi
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "cpuinfo" >> $CRASHDIR/info.txt
|
||
|
cat /proc/cpuinfo >> $CRASHDIR/info.txt
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "meminfo" >> $CRASHDIR/info.txt
|
||
|
cat /proc/cpuinfo >> $CRASHDIR/info.txt
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "cmdline" >> $CRASHDIR/info.txt
|
||
|
cat /proc/cmdline >> $CRASHDIR/info.txt
|
||
|
echo >> $CRASHDIR/info.txt
|
||
|
echo "lsmod" >> $CRASHDIR/info.txt
|
||
|
lsmod >> $CRASHDIR/info.txt
|
||
|
}
|
||
|
|
||
|
roll_crashes()
|
||
|
{
|
||
|
# Roll any existing crashes
|
||
|
if [ -d $CRASHDIR ]
|
||
|
then
|
||
|
if [ -d $CRASHDIR.1 ]
|
||
|
then
|
||
|
rm -fr $CRASHDIR.1
|
||
|
fi
|
||
|
mv $CRASHDIR $CRASHDIR.1
|
||
|
fi
|
||
|
|
||
|
# Prepare location
|
||
|
mkdir -p $CRASHDIR
|
||
|
}
|
||
|
|
||
|
# ath10k, check debugfs entries.
|
||
|
for i in /sys/kernel/debug/ieee80211/*/ath10k/fw_crash_dump
|
||
|
do
|
||
|
#echo "Checking $i"
|
||
|
if cat $i > $TMPLOC/ath10k_crash.bin 2>&1
|
||
|
then
|
||
|
FOUND_BUG=1
|
||
|
|
||
|
#echo "Found ath10k crash data in $i"
|
||
|
roll_crashes
|
||
|
|
||
|
ADIR=${i/fw_crash_dump/}
|
||
|
|
||
|
CTFW=0
|
||
|
if grep -- -ct- $TMPLOC/ath10k_crash.bin > /dev/null 2>&1
|
||
|
then
|
||
|
CTFW=1
|
||
|
fi
|
||
|
|
||
|
echo "Send bug reports to:" > $CRASHDIR/report_to.txt
|
||
|
if [ -f $ADIR/ct_special -o $CTFW == "1" ]
|
||
|
then
|
||
|
# Looks like this is CT firmware or driver...
|
||
|
echo "greearb@candelatech.com" >> $CRASHDIR/report_to.txt
|
||
|
echo "and/or report or check for duplicates here:" >> $CRASHDIR/report_to.txt
|
||
|
echo "https://github.com/greearb/ath10k-ct/issues" >> $CRASHDIR/report_to.txt
|
||
|
else
|
||
|
# Not sure who would want these bug reports for upstream...
|
||
|
echo "https://www.lede-project.org/" >> $CRASHDIR/report_to.txt
|
||
|
fi
|
||
|
echo >> $CRASHDIR/report_to.txt
|
||
|
echo "Please attach all files in this directory to bug reports." >> $CRASHDIR/report_to.txt
|
||
|
|
||
|
mv $TMPLOC/ath10k_crash.bin $CRASHDIR
|
||
|
|
||
|
# Add any more ath10k specific stuff here.
|
||
|
|
||
|
# And call generic bug reporting logic
|
||
|
bugcheck_generic
|
||
|
fi
|
||
|
done
|
||
|
|
||
|
if [ $FOUND_BUG == "1" ]
|
||
|
then
|
||
|
# Notify LUCI somehow?
|
||
|
echo "bugcheck.sh found an issue to be reported" > /dev/kmsg
|
||
|
echo "See $CRASHDIR for details on how to report this" > /dev/kmsg
|
||
|
# Let calling code know something was wrong.
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
exit 0
|