brintos

brintos / linux-shallow public Read only

0
0
Text · 1.1 KiB · 442b666 Raw
58 lines · bash
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.0-only3 4. ./eeh-functions.sh5 6eeh_test_prep # NB: may exit7 8pre_lspci=`mktemp`9lspci > $pre_lspci10 11# record the devices that we break in here. Assuming everything12# goes to plan we should get them back once the recover process13# is finished.14devices=""15 16# Build up a list of candidate devices.17for dev in `ls -1 /sys/bus/pci/devices/ | grep '\.0$'` ; do18	if ! eeh_can_break $dev ; then19		continue;20	fi21 22	# Skip VFs for now since we don't have a reliable way to break them.23	if [ -e "/sys/bus/pci/devices/$dev/physfn" ] ; then24		echo "$dev, Skipped: virtfn"25		continue;26	fi27 28	echo "$dev, Added"29 30	# Add to this list of device to check31	devices="$devices $dev"32done33 34dev_count="$(echo $devices | wc -w)"35echo "Found ${dev_count} breakable devices..."36 37failed=038for dev in $devices ; do39	echo "Breaking $dev..."40 41	if ! pe_ok $dev ; then42		echo "Skipping $dev, Initial PE state is not ok"43		failed="$((failed + 1))"44		continue;45	fi46 47	if ! eeh_one_dev $dev ; then48		failed="$((failed + 1))"49	fi50done51 52echo "$failed devices failed to recover ($dev_count tested)"53lspci | diff -u $pre_lspci -54rm -f $pre_lspci55 56test "$failed" -eq 057exit $?58