Sergey Bronnikov | 1b7dd7d | 2017-03-15 14:12:33 +0300 | [diff] [blame] | 1 | #!/usr/bin/env bash |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 2 | |
Andrew Jones | b6ff178 | 2016-01-22 15:58:25 +0100 | [diff] [blame] | 3 | if [ -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 Jones | b2a2aa5 | 2016-03-02 18:32:59 +0100 | [diff] [blame] | 9 | source scripts/arch-run.bash |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 10 | fi |
Andrew Jones | 39ac3f8 | 2014-12-10 21:00:01 +0100 | [diff] [blame] | 11 | processor="$PROCESSOR" |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 12 | |
Radim Krčmář | f4d9992 | 2017-06-29 16:28:24 +0200 | [diff] [blame] | 13 | ACCEL=$(get_qemu_accelerator) || |
| 14 | exit $? |
Andrew Jones | 0601b85 | 2015-11-05 18:24:34 -0600 | [diff] [blame] | 15 | |
Radim Krčmář | fcf4e0d | 2017-06-28 22:08:56 +0200 | [diff] [blame] | 16 | qemu=$(search_qemu_binary) || |
| 17 | exit $? |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 18 | |
| 19 | if ! $qemu -machine '?' 2>&1 | grep 'ARM Virtual Machine' > /dev/null; then |
Balamuruhan S | 4b96850 | 2017-04-21 11:45:05 +0530 | [diff] [blame] | 20 | echo "$qemu doesn't support mach-virt ('-machine virt'). Exiting." |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 21 | exit 2 |
| 22 | fi |
| 23 | |
| 24 | M='-machine virt' |
| 25 | |
Andrew Jones | d972902 | 2016-01-22 10:02:42 -0500 | [diff] [blame] | 26 | if [ "$ACCEL" = "kvm" ]; then |
| 27 | if $qemu $M,\? 2>&1 | grep gic-version > /dev/null; then |
| 28 | M+=',gic-version=host' |
| 29 | fi |
Alex Bennée | 67c2cc5 | 2017-05-18 17:02:07 +0100 | [diff] [blame] | 30 | if [ "$HOST" = "aarch64" ] || [ "$HOST" = "arm" ]; then |
Andrew Jones | d972902 | 2016-01-22 10:02:42 -0500 | [diff] [blame] | 31 | processor="host" |
Alex Bennée | 67c2cc5 | 2017-05-18 17:02:07 +0100 | [diff] [blame] | 32 | if [ "$ARCH" = "arm" ] && [ "$HOST" = "aarch64" ]; then |
Andrew Jones | d972902 | 2016-01-22 10:02:42 -0500 | [diff] [blame] | 33 | processor+=",aarch64=off" |
| 34 | fi |
| 35 | fi |
| 36 | fi |
| 37 | |
Andrew Jones | 1f0a5c1 | 2018-07-17 12:36:51 +0200 | [diff] [blame] | 38 | if [ "$ARCH" = "arm" ]; then |
| 39 | M+=",highmem=off" |
| 40 | fi |
| 41 | |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 42 | if ! $qemu $M -device '?' 2>&1 | grep virtconsole > /dev/null; then |
Balamuruhan S | 4b96850 | 2017-04-21 11:45:05 +0530 | [diff] [blame] | 43 | echo "$qemu doesn't support virtio-console for chr-testdev. Exiting." |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 44 | exit 2 |
| 45 | fi |
| 46 | |
Andrew Jones | b6f901c | 2014-12-10 20:59:54 +0100 | [diff] [blame] | 47 | if $qemu $M -chardev testdev,id=id -initrd . 2>&1 \ |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 48 | | grep backend > /dev/null; then |
Balamuruhan S | 4b96850 | 2017-04-21 11:45:05 +0530 | [diff] [blame] | 49 | echo "$qemu doesn't support chr-testdev. Exiting." |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 50 | exit 2 |
| 51 | fi |
| 52 | |
Andrew Jones | 5e61cba | 2014-01-21 17:21:59 +0100 | [diff] [blame] | 53 | chr_testdev='-device virtio-serial-device' |
| 54 | chr_testdev+=' -device virtconsole,chardev=ctd -chardev testdev,id=ctd' |
| 55 | |
Alexander Gordeev | f7f81c6 | 2016-11-07 11:14:44 +0100 | [diff] [blame] | 56 | pci_testdev= |
| 57 | if $qemu $M -device '?' 2>&1 | grep pci-testdev > /dev/null; then |
| 58 | pci_testdev="-device pci-testdev" |
| 59 | fi |
| 60 | |
Andrew Jones | 0601b85 | 2015-11-05 18:24:34 -0600 | [diff] [blame] | 61 | M+=",accel=$ACCEL" |
Andrew Jones | 3695c93 | 2016-11-15 18:47:27 +0100 | [diff] [blame] | 62 | command="$qemu -nodefaults $M -cpu $processor $chr_testdev $pci_testdev" |
Radim Krčmář | 8b13a5b | 2017-06-28 22:08:53 +0200 | [diff] [blame] | 63 | command+=" -display none -serial stdio -kernel" |
Andrew Jones | fd14935 | 2016-03-02 18:33:02 +0100 | [diff] [blame] | 64 | command="$(timeout_cmd) $command" |
Andrew Jones | 92a1afc | 2015-07-13 19:02:59 +0200 | [diff] [blame] | 65 | |
Andrew Jones | b2a2aa5 | 2016-03-02 18:32:59 +0100 | [diff] [blame] | 66 | run_qemu $command "$@" |