| # KVM Unit Test Driver |
| |
| This directory contains the driver script for kvm-unit-tests. Tests run |
| inside QEMU that emulates the native architecture. |
| |
| ## Requirements: |
| |
| - A Linux kernel image cross-compiled for AArch64. See ANDROID-KVM_DIR/linux |
| |
| Build using default rules: |
| $ make linux |
| |
| Example of custom building: |
| $ cd ANDROID-KVM_DIR/linux |
| $ make ARCH=arm64 CROSS_COMPILE="aarch64-linux-gnu-" -j`nproc` defconfig |
| $ make ARCH=arm64 CROSS_COMPILE="aarch64-linux-gnu-" -j`nproc` |
| $ # image is now in ANDROID-KVM_DIR/linux/arch/arm64/boot/Image.gz |
| |
| |
| - KVM unit tests built as standalone. See ANDROID-KVM_DIR/kvm-unit-tests |
| |
| Build using default rules: |
| $ make kvm-unit-tests |
| |
| Example of custom building: |
| $ cd ANDROID-KVM_DIR/kvm-unit-tests |
| $ ./configure --arch=arm64 --cross-prefix="aarch64-linux-gnu-" |
| $ make -j`nproc` standalone |
| $ # test binaries are now in ANDROID-KVM_DIR/kvm-unit-tests/tests |
| |
| |
| - A root file system image to boot. |
| |
| A prebuilt image is in ANDROID-KVM_DIR/prebuilts. |
| |
| Rebuild using default rules: |
| $ make update-prebuilts |
| |
| Example of custom building: |
| $ cd ANDROID-KVM_DIR/buildroot |
| $ make qemu_aarch64_virt_kvmunittests_defconfig |
| $ make clean all |
| $ # image is now in ANDROID-KVM_DIR/buildroot/output/images/rootfs.ext4 |
| |
| |
| - QEMU with aarch64-softmmu, v5.0.0 or later |
| |
| A prebuilt binary is in ANDROID-KVM_DIR/prebuilts. |
| |
| Buildroot creates one in the buildprocess. It's available at |
| ANDROID-KVM_DIR/buildroot/output/host/bin/qemu-system-aarch64 |
| |
| ## Running the tests |
| |
| To run all tests: |
| $ make test -j`nproc` |
| |
| To list all test targets: |
| $ make test-list |
| |
| To run one test, e.g. PSCI under nVHE: |
| $ make test-kut-nvhe-psci |
| |
| To run the same test with GDB server: |
| $ make test-kut-nvhe-psci-gdb |
| |
| Alternatively, a test can be invoked using run_test.sh: |
| $ ./build/kvm-unit-tests/run_test.sh psci |
| Note that this will not rebuild dependencies but starts quicker. |