xref: /cloud-hypervisor/scripts/run_integration_tests_vfio.sh (revision eea9bcea38e0c5649f444c829f3a4f9c22aa486c)
1#!/bin/bash
2set -x
3
4source $HOME/.cargo/env
5source $(dirname "$0")/test-util.sh
6
7process_common_args "$@"
8# For now these values are default for kvm
9features=""
10
11WORKLOADS_DIR="$HOME/workloads"
12FOCAL_OS_IMAGE_NAME="focal-server-cloudimg-amd64-custom-20210609-0.raw"
13FOCAL_OS_IMAGE="$WORKLOADS_DIR/$FOCAL_OS_IMAGE_NAME"
14FW="$WORKLOADS_DIR/hypervisor-fw"
15VMLINUX_IMAGE="$WORKLOADS_DIR/vmlinux"
16
17BLK_IMAGE="$WORKLOADS_DIR/blk.img"
18MNT_DIR="mount_image"
19rm -rf $BLK_IMAGE
20pushd $WORKLOADS_DIR
21fallocate -l 16M $BLK_IMAGE
22mkfs.ext4 -j $BLK_IMAGE
23mkdir $MNT_DIR
24sudo mount -t ext4 $BLK_IMAGE $MNT_DIR
25sudo bash -c "echo bar > $MNT_DIR/foo" || exit 1
26sudo umount $BLK_IMAGE
27rm -r $MNT_DIR
28popd
29
30VFIO_DIR="$WORKLOADS_DIR/vfio"
31VFIO_DISK_IMAGE="$WORKLOADS_DIR/vfio.img"
32rm -rf $VFIO_DIR $VFIO_DISK_IMAGE
33mkdir -p $VFIO_DIR
34cp $FOCAL_OS_IMAGE $VFIO_DIR
35cp $FW $VFIO_DIR
36cp $VMLINUX_IMAGE $VFIO_DIR || exit 1
37
38BUILD_TARGET="$(uname -m)-unknown-linux-${CH_LIBC}"
39CFLAGS=""
40TARGET_CC=""
41if [[ "${BUILD_TARGET}" == "x86_64-unknown-linux-musl" ]]; then
42TARGET_CC="musl-gcc"
43CFLAGS="-I /usr/include/x86_64-linux-musl/ -idirafter /usr/include/"
44fi
45
46cargo build --all --release $features --target $BUILD_TARGET
47strip target/$BUILD_TARGET/release/cloud-hypervisor
48strip target/$BUILD_TARGET/release/ch-remote
49
50# We always copy a fresh version of our binary for our L2 guest.
51cp target/$BUILD_TARGET/release/cloud-hypervisor $VFIO_DIR
52cp target/$BUILD_TARGET/release/ch-remote $VFIO_DIR
53
54# test_vfio rely on hugepages
55echo 6144 | sudo tee /proc/sys/vm/nr_hugepages
56sudo chmod a+rwX /dev/hugepages
57
58export RUST_BACKTRACE=1
59time cargo test $features "vfio::test_vfio" -- ${test_binary_args[*]}
60RES=$?
61
62if [ $RES -eq 0 ]; then
63	time cargo test $features "vfio::test_nvidia" -- --test-threads=1 ${test_binary_args[*]}
64	RES=$?
65fi
66
67exit $RES
68