test_firmware: wrap sysfs timeout test into helper

This cannot run on all kernel builds. This will help us later
skip this test on kernel configs where non-applicable.

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Luis R. Rodriguez 2017-11-20 10:23:59 -08:00 committed by Greg Kroah-Hartman
parent 3f72271233
commit 881c23de02

View File

@ -175,39 +175,44 @@ trap "test_finish" EXIT
echo "ABCD0123" >"$FW" echo "ABCD0123" >"$FW"
NAME=$(basename "$FW") NAME=$(basename "$FW")
DEVPATH="$DIR"/"nope-$NAME"/loading test_syfs_timeout()
{
DEVPATH="$DIR"/"nope-$NAME"/loading
# Test failure when doing nothing (timeout works). # Test failure when doing nothing (timeout works).
echo -n 2 >/sys/class/firmware/timeout echo -n 2 >/sys/class/firmware/timeout
echo -n "nope-$NAME" >"$DIR"/trigger_request 2>/dev/null & echo -n "nope-$NAME" >"$DIR"/trigger_request 2>/dev/null &
# Give the kernel some time to load the loading file, must be less # Give the kernel some time to load the loading file, must be less
# than the timeout above. # than the timeout above.
sleep 1 sleep 1
if [ ! -f $DEVPATH ]; then if [ ! -f $DEVPATH ]; then
echo "$0: fallback mechanism immediately cancelled" echo "$0: fallback mechanism immediately cancelled"
echo "" echo ""
echo "The file never appeared: $DEVPATH" echo "The file never appeared: $DEVPATH"
echo "" echo ""
echo "This might be a distribution udev rule setup by your distribution" echo "This might be a distribution udev rule setup by your distribution"
echo "to immediately cancel all fallback requests, this must be" echo "to immediately cancel all fallback requests, this must be"
echo "removed before running these tests. To confirm look for" echo "removed before running these tests. To confirm look for"
echo "a firmware rule like /lib/udev/rules.d/50-firmware.rules" echo "a firmware rule like /lib/udev/rules.d/50-firmware.rules"
echo "and see if you have something like this:" echo "and see if you have something like this:"
echo "" echo ""
echo "SUBSYSTEM==\"firmware\", ACTION==\"add\", ATTR{loading}=\"-1\"" echo "SUBSYSTEM==\"firmware\", ACTION==\"add\", ATTR{loading}=\"-1\""
echo "" echo ""
echo "If you do remove this file or comment out this line before" echo "If you do remove this file or comment out this line before"
echo "proceeding with these tests." echo "proceeding with these tests."
exit 1 exit 1
fi fi
if diff -q "$FW" /dev/test_firmware >/dev/null ; then if diff -q "$FW" /dev/test_firmware >/dev/null ; then
echo "$0: firmware was not expected to match" >&2 echo "$0: firmware was not expected to match" >&2
exit 1 exit 1
else else
echo "$0: timeout works" echo "$0: timeout works"
fi fi
}
test_syfs_timeout
# Put timeout high enough for us to do work but not so long that failures # Put timeout high enough for us to do work but not so long that failures
# slow down this test too much. # slow down this test too much.