162306a36Sopenharmony_ci#!/bin/sh 262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0-only 362306a36Sopenharmony_ci 462306a36Sopenharmony_ci. ./eeh-functions.sh 562306a36Sopenharmony_ci 662306a36Sopenharmony_cieeh_test_prep # NB: may exit 762306a36Sopenharmony_ci 862306a36Sopenharmony_civf_list="$(eeh_enable_vfs)"; 962306a36Sopenharmony_ciif $? != 0 ; then 1062306a36Sopenharmony_ci log "No usable VFs found. Skipping EEH unaware VF test" 1162306a36Sopenharmony_ci exit $KSELFTESTS_SKIP; 1262306a36Sopenharmony_cifi 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_cilog "Enabled VFs: $vf_list" 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_citested=0 1762306a36Sopenharmony_cipassed=0 1862306a36Sopenharmony_cifor vf in $vf_list ; do 1962306a36Sopenharmony_ci log "Testing $vf" 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci if ! eeh_can_recover $vf ; then 2262306a36Sopenharmony_ci log "Driver for $vf doesn't support error recovery, skipping" 2362306a36Sopenharmony_ci continue; 2462306a36Sopenharmony_ci fi 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci tested="$((tested + 1))" 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_ci log "Breaking $vf..." 2962306a36Sopenharmony_ci if ! eeh_one_dev $vf ; then 3062306a36Sopenharmony_ci log "$vf failed to recover" 3162306a36Sopenharmony_ci continue; 3262306a36Sopenharmony_ci fi 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci passed="$((passed + 1))" 3562306a36Sopenharmony_cidone 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_cieeh_disable_vfs 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ciif [ "$tested" == 0 ] ; then 4062306a36Sopenharmony_ci echo "No VFs with EEH aware drivers found, skipping" 4162306a36Sopenharmony_ci exit $KSELFTESTS_SKIP 4262306a36Sopenharmony_cifi 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_citest "$failed" != 0 4562306a36Sopenharmony_ciexit $?; 46