blob: 277db9bb4a02bad1d81745de72a41da35d9fc525 [file] [log] [blame]
Sergey Bronnikov1b7dd7d2017-03-15 14:12:33 +03001#!/usr/bin/env bash
Andrew Jones5e61cba2014-01-21 17:21:59 +01002
Andrew Jonesb6ff1782016-01-22 15:58:25 +01003if [ -z "$STANDALONE" ]; then
4 if [ ! -f config.mak ]; then
5 echo "run ./configure && make first. See ./configure -h"
6 exit 2
7 fi
8 source config.mak
Andrew Jonesb2a2aa52016-03-02 18:32:59 +01009 source scripts/arch-run.bash
Andrew Jones5e61cba2014-01-21 17:21:59 +010010fi
Andrew Jones39ac3f82014-12-10 21:00:01 +010011processor="$PROCESSOR"
Andrew Jones5e61cba2014-01-21 17:21:59 +010012
Radim Krčmářf4d99922017-06-29 16:28:24 +020013ACCEL=$(get_qemu_accelerator) ||
14 exit $?
Andrew Jones0601b852015-11-05 18:24:34 -060015
Radim Krčmářfcf4e0d2017-06-28 22:08:56 +020016qemu=$(search_qemu_binary) ||
17 exit $?
Andrew Jones5e61cba2014-01-21 17:21:59 +010018
19if ! $qemu -machine '?' 2>&1 | grep 'ARM Virtual Machine' > /dev/null; then
Balamuruhan S4b968502017-04-21 11:45:05 +053020 echo "$qemu doesn't support mach-virt ('-machine virt'). Exiting."
Andrew Jones5e61cba2014-01-21 17:21:59 +010021 exit 2
22fi
23
24M='-machine virt'
25
Andrew Jonesd9729022016-01-22 10:02:42 -050026if [ "$ACCEL" = "kvm" ]; then
27 if $qemu $M,\? 2>&1 | grep gic-version > /dev/null; then
28 M+=',gic-version=host'
29 fi
Alex Bennée67c2cc52017-05-18 17:02:07 +010030 if [ "$HOST" = "aarch64" ] || [ "$HOST" = "arm" ]; then
Andrew Jonesd9729022016-01-22 10:02:42 -050031 processor="host"
Alex Bennée67c2cc52017-05-18 17:02:07 +010032 if [ "$ARCH" = "arm" ] && [ "$HOST" = "aarch64" ]; then
Andrew Jonesd9729022016-01-22 10:02:42 -050033 processor+=",aarch64=off"
34 fi
35 fi
36fi
37
Andrew Jones1f0a5c12018-07-17 12:36:51 +020038if [ "$ARCH" = "arm" ]; then
39 M+=",highmem=off"
40fi
41
Andrew Jones5e61cba2014-01-21 17:21:59 +010042if ! $qemu $M -device '?' 2>&1 | grep virtconsole > /dev/null; then
Balamuruhan S4b968502017-04-21 11:45:05 +053043 echo "$qemu doesn't support virtio-console for chr-testdev. Exiting."
Andrew Jones5e61cba2014-01-21 17:21:59 +010044 exit 2
45fi
46
Andrew Jonesb6f901c2014-12-10 20:59:54 +010047if $qemu $M -chardev testdev,id=id -initrd . 2>&1 \
Andrew Jones5e61cba2014-01-21 17:21:59 +010048 | grep backend > /dev/null; then
Balamuruhan S4b968502017-04-21 11:45:05 +053049 echo "$qemu doesn't support chr-testdev. Exiting."
Andrew Jones5e61cba2014-01-21 17:21:59 +010050 exit 2
51fi
52
Andrew Jones5e61cba2014-01-21 17:21:59 +010053chr_testdev='-device virtio-serial-device'
54chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd'
55
Alexander Gordeevf7f81c62016-11-07 11:14:44 +010056pci_testdev=
57if $qemu $M -device '?' 2>&1 | grep pci-testdev > /dev/null; then
58 pci_testdev="-device pci-testdev"
59fi
60
Andrew Jones0601b852015-11-05 18:24:34 -060061M+=",accel=$ACCEL"
Andrew Jones3695c932016-11-15 18:47:27 +010062command="$qemu -nodefaults $M -cpu $processor $chr_testdev $pci_testdev"
Radim Krčmář8b13a5b2017-06-28 22:08:53 +020063command+=" -display none -serial stdio -kernel"
Andrew Jonesfd149352016-03-02 18:33:02 +010064command="$(timeout_cmd) $command"
Andrew Jones92a1afc2015-07-13 19:02:59 +020065
Andrew Jonesb2a2aa52016-03-02 18:32:59 +010066run_qemu $command "$@"