Use the same mechanism as search_qemu_binary(). Signed-off-by: Radim Krčmář <rkrcmar@xxxxxxxxxx> --- arm/run | 20 +------------------- powerpc/run | 18 +----------------- s390x/run | 18 +----------------- scripts/arch-run.bash | 22 ++++++++++++++++++++++ 4 files changed, 25 insertions(+), 53 deletions(-) diff --git a/arm/run b/arm/run index d7d778fe1645..f2e71eca022d 100755 --- a/arm/run +++ b/arm/run @@ -10,26 +10,8 @@ if [ -z "$STANDALONE" ]; then fi processor="$PROCESSOR" -if [ -c /dev/kvm ]; then - if [ "$HOST" = "arm" ] && [ "$ARCH" = "arm" ]; then - kvm_available=yes - elif [ "$HOST" = "aarch64" ]; then - kvm_available=yes - fi -fi - -if [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ]; then - echo "KVM is needed, but not available on this host" +ACCEL=$(get_accel '([ "$HOST" = "arm" ] && [ "$ARCH" = "arm" ]) || [ "$HOST" = "aarch64" ]') || exit 2 -fi - -if [ -z "$ACCEL" ]; then - if [ "$kvm_available" = "yes" ]; then - ACCEL="kvm" - else - ACCEL="tcg" - fi -fi qemu=$(search_qemu_binary) || exit 2 diff --git a/powerpc/run b/powerpc/run index e43c9fd8063c..55b987c5efc5 100755 --- a/powerpc/run +++ b/powerpc/run @@ -9,24 +9,8 @@ if [ -z "$STANDALONE" ]; then source scripts/arch-run.bash fi -if [ -c /dev/kvm ]; then - if [ "$HOST" = "ppc64" ] && [ "$ARCH" = "ppc64" ]; then - kvm_available=yes - fi -fi - -if [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ]; then - echo "KVM is needed, but not available on this host" +ACCEL=$(get_accel '[ "$HOST" = "ppc64" ] && [ "$ARCH" = "ppc64" ]') || exit 2 -fi - -if [ -z "$ACCEL" ]; then - if [ "$kvm_available" = "yes" ]; then - ACCEL="kvm" - else - ACCEL="tcg" - fi -fi qemu=$(search_qemu_binary) || exit 2 diff --git a/s390x/run b/s390x/run index ce8d45c2c8fd..67d6e88ea7e4 100755 --- a/s390x/run +++ b/s390x/run @@ -9,24 +9,8 @@ if [ -z "$STANDALONE" ]; then source scripts/arch-run.bash fi -if [ -c /dev/kvm ]; then - if [ "$HOST" = "s390x" ] && [ "$ARCH" = "s390x" ]; then - kvm_available=yes - fi -fi - -if [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ]; then - echo "KVM is needed, but not available on this host" +ACCEL=$(get_accel '[ "$HOST" = "s390x" ] && [ "$ARCH" = "s390x" ]') || exit 2 -fi - -if [ -z "$ACCEL" ]; then - if [ "$kvm_available" = "yes" ]; then - ACCEL="kvm" - else - ACCEL="tcg" - fi -fi qemu=$(search_qemu_binary) || exit 2 diff --git a/scripts/arch-run.bash b/scripts/arch-run.bash index 994c1aa9c0cd..a696652c61b1 100644 --- a/scripts/arch-run.bash +++ b/scripts/arch-run.bash @@ -272,3 +272,25 @@ trap_exit_push () local old_exit=$(trap -p EXIT | sed "s/^[^']*'//;s/'[^']*$//") trap -- "$1; $old_exit" EXIT } + +get_accel () +{ + local kvm_available + + if [ -c /dev/kvm ] && eval "$@"; then + kvm_available=yes + fi + + if [ "$ACCEL" = "kvm" ] && [ "$kvm_available" != "yes" ]; then + echo "KVM is needed, but not available on this host" >&2 + return 2 + fi + + if [ "$ACCEL" ]; then + echo $ACCEL + elif [ "$kvm_available" = "yes" ]; then + echo kvm + else + echo tcg + fi +} -- 2.13.2