| From afb999cdef69148f366839e74470d8f5375ba5f1 Mon Sep 17 00:00:00 2001 |
| From: "Luis R. Rodriguez" <mcgrof@kernel.org> |
| Date: Mon, 23 Jan 2017 08:11:07 -0800 |
| Subject: tools: firmware: check for distro fallback udev cancel rule |
| |
| From: Luis R. Rodriguez <mcgrof@kernel.org> |
| |
| commit afb999cdef69148f366839e74470d8f5375ba5f1 upstream. |
| |
| Some distributions (Debian, OpenSUSE) have a udev rule in place to cancel |
| all fallback mechanism uevents immediately. This would obviously |
| make it hard to test against the fallback mechanism test interface, |
| so we need to check for this. |
| |
| Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org> |
| Signed-off-by: Amit Pundir <amit.pundir@linaro.org> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| tools/testing/selftests/firmware/fw_userhelper.sh | 28 ++++++++++++++++++++-- |
| 1 file changed, 26 insertions(+), 2 deletions(-) |
| |
| --- a/tools/testing/selftests/firmware/fw_userhelper.sh |
| +++ b/tools/testing/selftests/firmware/fw_userhelper.sh |
| @@ -64,9 +64,33 @@ trap "test_finish" EXIT |
| echo "ABCD0123" >"$FW" |
| NAME=$(basename "$FW") |
| |
| +DEVPATH="$DIR"/"nope-$NAME"/loading |
| + |
| # Test failure when doing nothing (timeout works). |
| -echo 1 >/sys/class/firmware/timeout |
| -echo -n "$NAME" >"$DIR"/trigger_request |
| +echo -n 2 >/sys/class/firmware/timeout |
| +echo -n "nope-$NAME" >"$DIR"/trigger_request 2>/dev/null & |
| + |
| +# Give the kernel some time to load the loading file, must be less |
| +# than the timeout above. |
| +sleep 1 |
| +if [ ! -f $DEVPATH ]; then |
| + echo "$0: fallback mechanism immediately cancelled" |
| + echo "" |
| + echo "The file never appeared: $DEVPATH" |
| + echo "" |
| + echo "This might be a distribution udev rule setup by your distribution" |
| + echo "to immediately cancel all fallback requests, this must be" |
| + echo "removed before running these tests. To confirm look for" |
| + echo "a firmware rule like /lib/udev/rules.d/50-firmware.rules" |
| + echo "and see if you have something like this:" |
| + echo "" |
| + echo "SUBSYSTEM==\"firmware\", ACTION==\"add\", ATTR{loading}=\"-1\"" |
| + echo "" |
| + echo "If you do remove this file or comment out this line before" |
| + echo "proceeding with these tests." |
| + exit 1 |
| +fi |
| + |
| if diff -q "$FW" /dev/test_firmware >/dev/null ; then |
| echo "$0: firmware was not expected to match" >&2 |
| exit 1 |