diff options
-rwxr-xr-x | tools/testing/selftests/firmware/fw_fallback.sh | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tools/testing/selftests/firmware/fw_fallback.sh b/tools/testing/selftests/firmware/fw_fallback.sh index 2e4c22d5abf7..8f511035f783 100755 --- a/tools/testing/selftests/firmware/fw_fallback.sh +++ b/tools/testing/selftests/firmware/fw_fallback.sh | |||
@@ -134,6 +134,27 @@ load_fw_custom_cancel() | |||
134 | wait | 134 | wait |
135 | } | 135 | } |
136 | 136 | ||
137 | load_fw_fallback_with_child() | ||
138 | { | ||
139 | local name="$1" | ||
140 | local file="$2" | ||
141 | |||
142 | # This is the value already set but we want to be explicit | ||
143 | echo 4 >/sys/class/firmware/timeout | ||
144 | |||
145 | sleep 1 & | ||
146 | SECONDS_BEFORE=$(date +%s) | ||
147 | echo -n "$name" >"$DIR"/trigger_request 2>/dev/null | ||
148 | SECONDS_AFTER=$(date +%s) | ||
149 | SECONDS_DELTA=$(($SECONDS_AFTER - $SECONDS_BEFORE)) | ||
150 | if [ "$SECONDS_DELTA" -lt 4 ]; then | ||
151 | RET=1 | ||
152 | else | ||
153 | RET=0 | ||
154 | fi | ||
155 | wait | ||
156 | return $RET | ||
157 | } | ||
137 | 158 | ||
138 | trap "test_finish" EXIT | 159 | trap "test_finish" EXIT |
139 | 160 | ||
@@ -221,4 +242,14 @@ else | |||
221 | echo "$0: cancelling custom fallback mechanism works" | 242 | echo "$0: cancelling custom fallback mechanism works" |
222 | fi | 243 | fi |
223 | 244 | ||
245 | set +e | ||
246 | load_fw_fallback_with_child "nope-signal-$NAME" "$FW" | ||
247 | if [ "$?" -eq 0 ]; then | ||
248 | echo "$0: SIGCHLD on sync ignored as expected" >&2 | ||
249 | else | ||
250 | echo "$0: error - sync firmware request cancelled due to SIGCHLD" >&2 | ||
251 | exit 1 | ||
252 | fi | ||
253 | set -e | ||
254 | |||
224 | exit 0 | 255 | exit 0 |