cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

eeh-basic.sh (1176B)


      1#!/bin/sh
      2# SPDX-License-Identifier: GPL-2.0-only
      3
      4. ./eeh-functions.sh
      5
      6eeh_test_prep # NB: may exit
      7
      8pre_lspci=`mktemp`
      9lspci > $pre_lspci
     10
     11# record the devices that we break in here. Assuming everything
     12# goes to plan we should get them back once the recover process
     13# is finished.
     14devices=""
     15
     16# Build up a list of candidate devices.
     17for dev in `ls -1 /sys/bus/pci/devices/ | grep '\.0$'` ; do
     18	if ! eeh_can_break $dev ; then
     19		continue;
     20	fi
     21
     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" ] ; then
     24		echo "$dev, Skipped: virtfn"
     25		continue;
     26	fi
     27
     28	echo "$dev, Added"
     29
     30	# Add to this list of device to check
     31	devices="$devices $dev"
     32done
     33
     34dev_count="$(echo $devices | wc -w)"
     35echo "Found ${dev_count} breakable devices..."
     36
     37failed=0
     38for 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
     50done
     51
     52echo "$failed devices failed to recover ($dev_count tested)"
     53lspci | diff -u $pre_lspci -
     54rm -f $pre_lspci
     55
     56test "$failed" -eq 0
     57exit $?