| 1 | |
| 2 | |
| 3 |
|
| 4 | . ./eeh-functions.sh
|
| 5 |
|
| 6 | eeh_test_prep |
| 7 |
|
| 8 | pre_lspci=`mktemp`
|
| 9 | lspci > $pre_lspci
|
| 10 |
|
| 11 | |
| 12 | |
| 13 | |
| 14 | devices=""
|
| 15 |
|
| 16 | |
| 17 | for dev in `ls -1 /sys/bus/pci/devices/ | grep '\.0$'` ; do
|
| 18 | if ! eeh_can_break $dev ; then
|
| 19 | continue;
|
| 20 | fi
|
| 21 |
|
| 22 | |
| 23 | if [ -e "/sys/bus/pci/devices/$dev/physfn" ] ; then
|
| 24 | echo "$dev, Skipped: virtfn"
|
| 25 | continue;
|
| 26 | fi
|
| 27 |
|
| 28 | echo "$dev, Added"
|
| 29 |
|
| 30 | |
| 31 | devices="$devices $dev"
|
| 32 | done
|
| 33 |
|
| 34 | dev_count="$(echo $devices | wc -w)"
|
| 35 | echo "Found ${dev_count} breakable devices..."
|
| 36 |
|
| 37 | failed=0
|
| 38 | for dev in $devices ; do
|
| 39 | echo "Breaking $dev..."
|
| 40 |
|
| 41 | if ! pe_ok $dev ; then
|
| 42 | echo "Skipping $dev, Initial PE state is not ok"
|
| 43 | failed="$((failed + 1))"
|
| 44 | continue;
|
| 45 | fi
|
| 46 |
|
| 47 | if ! eeh_one_dev $dev ; then
|
| 48 | failed="$((failed + 1))"
|
| 49 | fi
|
| 50 | done
|
| 51 |
|
| 52 | echo "$failed devices failed to recover ($dev_count tested)"
|
| 53 | lspci | diff -u $pre_lspci -
|
| 54 | rm -f $pre_lspci
|
| 55 |
|
| 56 | test "$failed" -eq 0
|
| 57 | exit $?
|