qemu-system-aarch64-wrapper: fix -M ? option following recent changes
[mirror/dsa-puppet.git] / modules / ganeti2 / files / qemu-system-aarch64-wrapper
index 5411e51..407f87d 100755 (executable)
 ## assumptions.
 ##
 
-# With qemu-system-aarch64 the machine should be defined even for simple
-# commands like querying the list of devices.
-args=("-machine")
-args+=("virt,gic-version=3")
+# Default to virt machine, forcing a gic version 3 to support more than 8 vcpus
+machine="virt,gic-version=3"
 
 # We want to always enable KVM. Contrary to what the Ganeti's documentation
 # says, enabling kvm_flag is not enough.
@@ -22,11 +20,20 @@ args+=("-enable-kvm")
 while [ "$1" ]; do
     case "$1" in
         -machine|-M)
-            # Ignore the machine argument (it is already defined above),
+            # Ignore the machine argument (it will be defined below),
             # except when querying the list of machines
             if [ "$2" = "?" ] ; then
-                args+=("-M")
-                args+=("?")
+                machine="?"
+            fi
+            shift
+            ;;
+        -cpu)
+            # Check if the CPU is configured to run in 32-bit mode and
+            # force the gvic to version 2 in that case
+            args+=("$1")
+            args+=("$2")
+            if echo "$2" | egrep -q '(^|,)aarch64=off(,|$)' ; then
+                machine="virt,gic-version=2"
             fi
             shift
             ;;
@@ -39,4 +46,10 @@ while [ "$1" ]; do
     shift
 done
 
+# With qemu-system-aarch64 the machine should be defined even for simple
+# commands like querying the list of devices.
+args+=("-machine")
+args+=($machine)
+
+# Start qemu-system-aarch64 with the mangled arguments
 exec /usr/bin/qemu-system-aarch64 "${args[@]}"