From 49f2dc181dd6f19f7a2e8e3487423bd806a2b10f Mon Sep 17 00:00:00 2001 From: Riku Voipio Date: Mon, 23 Jun 2014 14:38:58 +0300 Subject: kvm: add armv8 support Wide range of changes needed to allow kvm tests to run on both ARMv7 and ARMv8 targets. Currently includes some ugly hacks to faciliate booting mustang from nfs (can't use tun). Change-Id: I92ab87b6439b464db14fdef0cbac41efd64ef9a8 Signed-off-by: Riku Voipio --- common/scripts/kvm/test-kvm.sh | 66 +++++++++++++++++++++++++++++++++++------- 1 file changed, 55 insertions(+), 11 deletions(-) (limited to 'common') diff --git a/common/scripts/kvm/test-kvm.sh b/common/scripts/kvm/test-kvm.sh index 91eb2d9..872bf51 100755 --- a/common/scripts/kvm/test-kvm.sh +++ b/common/scripts/kvm/test-kvm.sh @@ -11,6 +11,8 @@ if [ "x$1" = "xbenchmark" ]; then KVM_BOOT="$KVM_BOOT 0 none" fi +ARCH=`uname -m` + dmesg|grep 'Hyp mode initialized successfully' && echo "$KVM_INIT 0 pc pass" || \ { echo "$KVM_INIT 0 pc fail" @@ -28,21 +30,40 @@ else DOWNLOAD_FILE="wget --progress=dot -e dotbytes=2M --no-check-certificate" fi -BUILD_NUMBER=`$(echo $EXTRACT_BUILD_NUMBER) https://ci.linaro.org/jenkins/job/linux-vexpress-kvm/lastSuccessfulBuild/buildNumber` - -$DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm/$BUILD_NUMBER/kvm.qcow2.gz -$DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm/$BUILD_NUMBER/zImage -$DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm/$BUILD_NUMBER/vexpress-v2p-ca15-tc1.dtb - -gunzip kvm.qcow2.gz -if [ $? -ne 0 ]; then +BUILD_NUMBER_GUEST=`$(echo $EXTRACT_BUILD_NUMBER) https://ci.linaro.org/jenkins/job/kvm-guest-image/lastSuccessfulBuild/buildNumber` +BUILD_NUMBER_HOST=`$(echo $EXTRACT_BUILD_NUMBER) https://ci.linaro.org/jenkins/job/linux-kvm/lastSuccessfulBuild/buildNumber` + +case ${ARCH} in + armv7l) + $DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm-guest/$BUILD_NUMBER_GUEST/kvm-arm32.qcow2.gz + $DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm-guest/$BUILD_NUMBER_GUEST/zImage-vexpress + $DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm-guest/$BUILD_NUMBER_GUEST/vexpress-v2p-ca15-tc1.dtb + gunzip kvm-arm32.qcow2.gz + mv kvm-arm32.qcow2 kvm.qcow2 + modprobe nbd max_part=16 + ;; + aarch64) + $DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm-guest/$BUILD_NUMBER_GUEST/kvm-arm64.qcow2.gz + $DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm/$BUILD_NUMBER_HOST/Image-mustang + $DOWNLOAD_FILE http://snapshots.linaro.org/ubuntu/images/kvm/$BUILD_NUMBER_HOST/nbd.ko.gz + gunzip kvm-arm64.qcow2.gz + gunzip nbd.ko.gz + mv kvm-arm64.qcow2 kvm.qcow2 + insmod nbd.ko max_part=16 + ;; + *) + echo unknown arch ${ARCH} + exit 1 + ;; +esac + +if [ ! -r kvm.qcow2 ]; then echo "$KVM_HOST_NET 0 pc skip" echo "$KVM_BOOT 0 pc skip" echo "$KVM_GUEST_NET 0 pc skip" exit 0 fi -modprobe nbd max_part=16 qemu-nbd -c /dev/nbd0 kvm.qcow2 mount /dev/nbd0p2 /mnt/ @@ -72,6 +93,8 @@ umount /mnt sync qemu-nbd -d /dev/nbd0 +if [ -e /dev/net/tun ] +then echo setting up and testing networking bridge for guest brctl addbr br0 tunctl -u root @@ -80,11 +103,16 @@ ifconfig tap0 0.0.0.0 up brctl addif br0 eth0 brctl addif br0 tap0 udhcpc -t 10 -i br0 - ping -W 4 -c 10 192.168.1.10 && echo "$KVM_HOST_NET 0 pc pass" || echo "$KVM_HOST_NET 0 pc fail" +else +echo "$KVM_HOST_NET 0 pc skip" +fi + +case ${ARCH} in + armv7l) qemu-system-arm -smp 2 -m 1024 -cpu cortex-a15 -M vexpress-a15 \ - -kernel ./zImage -dtb ./vexpress-v2p-ca15-tc1.dtb \ + -kernel ./zImage-vexpress -dtb ./vexpress-v2p-ca15-tc1.dtb \ -append 'root=/dev/vda2 rw rootwait mem=1024M console=ttyAMA0,38400n8' \ -drive if=none,id=image,file=kvm.qcow2 \ -netdev tap,id=tap0,script=no,downscript=no,ifname="tap0" \ @@ -92,6 +120,22 @@ qemu-system-arm -smp 2 -m 1024 -cpu cortex-a15 -M vexpress-a15 \ -device virtio-blk-device,drive=image \ -nographic -enable-kvm \ 2>&1|tee kvm-log.txt + ;; + aarch64) +qemu-system-aarch64 -smp 2 -m 1024 -cpu host -M virt \ + -kernel ./Image-mustang \ + -append 'root=/dev/vda2 rw rootwait mem=1024M earlyprintk=pl011,0x9000000 console=ttyAMA0,38400n8' \ + -drive if=none,id=image,file=kvm.qcow2 \ + -netdev user,id=user0 -device virtio-net-device,netdev=user0 \ + -device virtio-blk-device,drive=image \ + -nographic -enable-kvm \ + 2>&1|tee kvm-log.txt + ;; + *) + echo unknown arch ${ARCH} + exit 1 + ;; +esac qemu-nbd -c /dev/nbd0 kvm.qcow2 mount /dev/nbd0p2 /mnt/ -- cgit v1.2.3