]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Move GIC checks to qemuDomainDefValidateFeatures()
authorAndrea Bolognani <abologna@redhat.com>
Fri, 2 Feb 2018 15:05:51 +0000 (16:05 +0100)
committerAndrea Bolognani <abologna@redhat.com>
Tue, 13 Feb 2018 13:39:55 +0000 (14:39 +0100)
Keep them along with other arch/machine type checks for
features instead of waiting until command line generation
time.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
src/qemu/qemu_command.c
src/qemu/qemu_domain.c
tests/qemuxml2argvtest.c

index 6c73cd7bfed5c3ef0a159fb0c1d1619efe40d44b..27736801dbc627e6876c178b9c03f720660e9a9b 100644 (file)
@@ -7175,13 +7175,6 @@ qemuBuildMachineCommandLine(virCommandPtr cmd,
 
         if (def->features[VIR_DOMAIN_FEATURE_GIC] == VIR_TRISTATE_SWITCH_ON) {
             if (def->gic_version != VIR_GIC_VERSION_NONE) {
-                if (!qemuDomainIsVirt(def)) {
-                    virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
-                                   _("gic-version option is available "
-                                     "only for ARM virt machine"));
-                    goto cleanup;
-                }
-
                 /* The default GIC version (GICv2) should not be specified on
                  * the QEMU commandline for backwards compatibility reasons */
                 if (def->gic_version != VIR_GIC_VERSION_2) {
index 5f1f1ba6d021e1029f0a0944032fd050694c21ae..59491fc21ccf2ee590c7e6b43a0ccbd4fd041352 100644 (file)
@@ -3347,6 +3347,19 @@ qemuDomainDefValidateFeatures(const virDomainDef *def)
             }
             break;
 
+        case VIR_DOMAIN_FEATURE_GIC:
+            if (def->features[i] == VIR_TRISTATE_SWITCH_ON &&
+                !qemuDomainIsVirt(def)) {
+                virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+                               _("The '%s' feature is not supported for "
+                                 "architecture '%s' or machine type '%s'"),
+                               featureName,
+                               virArchToString(def->os.arch),
+                               def->os.machine);
+                return -1;
+            }
+            break;
+
         case VIR_DOMAIN_FEATURE_ACPI:
         case VIR_DOMAIN_FEATURE_APIC:
         case VIR_DOMAIN_FEATURE_PAE:
@@ -3359,7 +3372,6 @@ qemuDomainDefValidateFeatures(const virDomainDef *def)
         case VIR_DOMAIN_FEATURE_CAPABILITIES:
         case VIR_DOMAIN_FEATURE_PMU:
         case VIR_DOMAIN_FEATURE_VMPORT:
-        case VIR_DOMAIN_FEATURE_GIC:
         case VIR_DOMAIN_FEATURE_SMM:
         case VIR_DOMAIN_FEATURE_VMCOREINFO:
         case VIR_DOMAIN_FEATURE_LAST:
index b34146714352fa4acb083cfe7e5765b8ea664cbb..70e66de1482346433cf382c84758f8546b7d3c42 100644 (file)
@@ -2660,12 +2660,12 @@ mymain(void)
     DO_TEST_PARSE_ERROR("aarch64-gic-invalid",
             QEMU_CAPS_KVM, QEMU_CAPS_MACHINE_OPT,
             QEMU_CAPS_MACH_VIRT_GIC_VERSION);
-    DO_TEST_FAILURE("aarch64-gic-not-virt",
-            QEMU_CAPS_KVM, QEMU_CAPS_MACHINE_OPT,
-            QEMU_CAPS_MACH_VIRT_GIC_VERSION);
-    DO_TEST_FAILURE("aarch64-gic-not-arm",
-            QEMU_CAPS_KVM, QEMU_CAPS_MACHINE_OPT,
-            QEMU_CAPS_MACH_VIRT_GIC_VERSION);
+    DO_TEST_PARSE_ERROR("aarch64-gic-not-virt",
+                        QEMU_CAPS_KVM, QEMU_CAPS_MACHINE_OPT,
+                        QEMU_CAPS_MACH_VIRT_GIC_VERSION);
+    DO_TEST_PARSE_ERROR("aarch64-gic-not-arm",
+                        QEMU_CAPS_KVM, QEMU_CAPS_MACHINE_OPT,
+                        QEMU_CAPS_MACH_VIRT_GIC_VERSION);
     DO_TEST("aarch64-kvm-32-on-64",
             QEMU_CAPS_NODEFCONFIG, QEMU_CAPS_DEVICE_VIRTIO_MMIO,
             QEMU_CAPS_DEVICE_PL011,