| # AArch64 KVM Unit Test Driver |
| |
| This directory contains the driver script for the AArch64 unit tests. These |
| scripts run the kvm-unit-tests inside an AArch64 emulator (qemu-system-aarch64). |
| This to enable testing KVM with virtual machines that are running natively on |
| the underlying system, as opposed to emulated VMs. We need this to be able to |
| test Protected KVM, which would be running VMs on the same architecture as the |
| host/hypervisor (i.e., AAarch64). |
| |
| |
| ## Requirements: |
| |
| - A Linux kernel image cross-compiled for AArch64. See ANDROID-KVM_DIR/linux |
| |
| An example on how to build one, in the linux source: |
| 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` |
| |
| The image will be built at: |
| ANDROID-KVM_DIR/linux/arch/arm64/boot/Image |
| |
| |
| - KVM unit tests built as standalone. See ANDROID-KVM_DIR/kvm-unit-tests |
| |
| To build these standalone tests, in the kvm-unit-tests source directory: |
| |
| cd ANDROID-KVM_DIR/kvm-unit-tests |
| ./configure --arch=arm64 --cross-prefix="aarch64-linux-gnu-" |
| make -j`nproc` standalone |
| |
| The standalone tests will be built at: |
| ANDROID-KVM_DIR/kvm-unit-tests/tests |
| |
| |
| - A root file system image to boot. An image will be uploaded to |
| ANDROID-KVM_DIR/prebuilts. In the meantime, you can generate such an image |
| using Buildroot. See ANDROID-KVM_DIR/buildroot. |
| |
| cd ANDROID-KVM_DIR/buildroot |
| make qemu_aarch64_virt_kvmunittests_defconfig |
| make clean all |
| |
| The generated image will be at: |
| ANDROID-KVM_DIR/buildroot/output/images/rootfs.ext4 |
| |
| |
| - QEMU with aarch64-softmmu, v5.0.0 or later |
| |
| Buildroot creates one in the buildprocess. It's available at |
| ANDROID-KVM_DIR/buildroot/output/host/bin/qemu-system-aarch64 |
| |
| ## Running the tests |
| |
| Assuming you are using the binaries, tests, and images from above, you can run |
| the tests as follows: |
| |
| ./run_tests.sh -j `nproc` -t ANDROID-KVM_DIR/kvm-unit-tests/tests -l ANDROID-KVM_DIR/linux/arch/arm64/boot/Image -r ANDROID-KVM_DIR/buildroot/output/images/rootfs.ext4 -e ANDROID-KVM_DIR/buildroot/output/host/bin/qemu-system-aarch64 |