2021-02-04 14:14:26 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
2021-12-02 13:13:10 +00:00
|
|
|
set -ex
|
2021-02-04 14:14:26 +00:00
|
|
|
|
2022-01-14 21:43:08 +00:00
|
|
|
# This script can be called concurrently, pass arguments and env in a
|
|
|
|
# per-instance tmp dir
|
|
|
|
DEQP_TEMP_DIR=$(mktemp -d /tmp.XXXXXXXXXX)
|
|
|
|
export DEQP_TEMP_DIR
|
2021-02-04 14:14:26 +00:00
|
|
|
|
2021-09-08 06:52:58 +01:00
|
|
|
# The dEQP binary needs to run from the directory it's in
|
2022-01-04 21:15:19 +00:00
|
|
|
if [ -n "${1##*.sh}" ] && [ -z "${1##*"deqp"*}" ]; then
|
2022-01-14 21:43:08 +00:00
|
|
|
DEQP_BIN_DIR=$(dirname "$1")
|
|
|
|
export DEQP_BIN_DIR
|
2021-09-08 06:52:58 +01:00
|
|
|
fi
|
2021-02-04 14:14:26 +00:00
|
|
|
|
2022-01-14 21:43:08 +00:00
|
|
|
# Securely pass the current variables to the crosvm environment
|
|
|
|
CI_COMMON="$CI_PROJECT_DIR"/install/common
|
|
|
|
echo "Variables passed through:"
|
|
|
|
"${CI_COMMON}"/generate-env.sh | tee ${DEQP_TEMP_DIR}/crosvm-env.sh
|
2021-02-04 14:14:26 +00:00
|
|
|
|
2022-01-04 16:56:46 +00:00
|
|
|
CROSVM_KERNEL_ARGS="quiet console=null root=my_root rw rootfstype=virtiofs init=$CI_PROJECT_DIR/install/crosvm-init.sh ip=192.168.30.2::192.168.30.1:255.255.255.0:crosvm:eth0 -- $DEQP_TEMP_DIR"
|
2021-02-04 14:14:26 +00:00
|
|
|
|
2022-01-14 21:43:08 +00:00
|
|
|
# Set the crosvm-script as the arguments of the current script.
|
|
|
|
echo "$@" > $DEQP_TEMP_DIR/crosvm-script.sh
|
2021-02-04 14:14:26 +00:00
|
|
|
|
|
|
|
unset DISPLAY
|
|
|
|
unset XDG_RUNTIME_DIR
|
|
|
|
|
2021-10-29 10:00:32 +01:00
|
|
|
/usr/sbin/iptables-legacy -w -t nat -A POSTROUTING -o eth0 -j MASQUERADE
|
2021-02-04 14:14:26 +00:00
|
|
|
echo 1 > /proc/sys/net/ipv4/ip_forward
|
|
|
|
|
2021-09-08 06:52:58 +01:00
|
|
|
# Send output from guest to host
|
|
|
|
touch $DEQP_TEMP_DIR/stderr $DEQP_TEMP_DIR/stdout
|
2022-01-14 21:43:08 +00:00
|
|
|
tail -f $DEQP_TEMP_DIR/stderr >> /dev/stderr &
|
2021-09-08 06:52:58 +01:00
|
|
|
ERR_TAIL_PID=$!
|
2022-01-14 21:43:08 +00:00
|
|
|
tail -f $DEQP_TEMP_DIR/stdout >> /dev/stdout &
|
2021-09-08 06:52:58 +01:00
|
|
|
OUT_TAIL_PID=$!
|
|
|
|
|
|
|
|
trap "exit \$exit_code" INT TERM
|
2022-01-04 16:56:46 +00:00
|
|
|
trap "exit_code=\$?; kill $ERR_TAIL_PID $OUT_TAIL_PID; rm -rf $DEQP_TEMP_DIR" EXIT
|
2021-08-06 11:05:45 +01:00
|
|
|
|
2021-09-08 06:52:58 +01:00
|
|
|
# We aren't testing LLVMPipe here, so we don't need to validate NIR on the host
|
2022-01-04 16:56:46 +00:00
|
|
|
NIR_DEBUG="novalidate" LIBGL_ALWAYS_SOFTWARE="true" GALLIUM_DRIVER="$CROSVM_GALLIUM_DRIVER" crosvm run \
|
2021-06-03 15:32:54 +01:00
|
|
|
--gpu "$CROSVM_GPU_ARGS" \
|
2021-02-04 14:14:26 +00:00
|
|
|
-m 4096 \
|
2021-09-08 06:52:58 +01:00
|
|
|
-c 2 \
|
2021-02-04 14:14:26 +00:00
|
|
|
--disable-sandbox \
|
|
|
|
--shared-dir /:my_root:type=fs:writeback=true:timeout=60:cache=always \
|
|
|
|
--host_ip=192.168.30.1 --netmask=255.255.255.0 --mac "AA:BB:CC:00:00:12" \
|
|
|
|
-p "$CROSVM_KERNEL_ARGS" \
|
2022-01-04 16:56:46 +00:00
|
|
|
/lava-files/bzImage > $DEQP_TEMP_DIR/crosvm 2>&1
|
|
|
|
|
|
|
|
RET=$(cat $DEQP_TEMP_DIR/exit_code || true)
|
|
|
|
|
|
|
|
# Got no exit code from the script, show crosvm output to help with debugging
|
|
|
|
[ -n "$RET" ] || cat $DEQP_TEMP_DIR/crosvm || true
|
2021-02-04 14:14:26 +00:00
|
|
|
|
2022-01-04 10:39:14 +00:00
|
|
|
exit ${RET:-1}
|