]> xenbits.xensource.com Git - libvirt.git/commitdiff
qemu: Refactor default panic model
authorAndrea Bolognani <abologna@redhat.com>
Tue, 27 Aug 2024 13:03:31 +0000 (15:03 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Tue, 3 Sep 2024 12:06:11 +0000 (14:06 +0200)
Perform decisions based on the architecture and machine type
in a single place instead of duplicating them.

This technically adds new behavior for MODEL_ISA in
qemuDomainDefAddDefaultDevices(), but it doesn't make any
difference functionally since we don't set addPanicDevice
outside of ppc64(le) and s390(x). If we did, the lack of
handling for that value would be a latent bug.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_domain.c

index 93dbbcbc0bcb9bbc08b402bc3362590da8879d31..69a2db686e68653f6849de7c45aa1a756d2f3293 100644 (file)
@@ -4150,6 +4150,19 @@ qemuDomainGetSCSIControllerModel(const virDomainDef *def,
 }
 
 
+static virDomainPanicModel
+qemuDomainDefaultPanicModel(const virDomainDef *def)
+{
+    if (qemuDomainIsPSeries(def))
+        return VIR_DOMAIN_PANIC_MODEL_PSERIES;
+
+    if (ARCH_IS_S390(def->os.arch))
+        return VIR_DOMAIN_PANIC_MODEL_S390;
+
+    return VIR_DOMAIN_PANIC_MODEL_ISA;
+}
+
+
 static int
 qemuDomainDefAddDefaultDevices(virQEMUDriver *driver,
                                virDomainDef *def,
@@ -4397,13 +4410,12 @@ qemuDomainDefAddDefaultDevices(virQEMUDriver *driver,
         return -1;
 
     if (addPanicDevice) {
+        virDomainPanicModel defaultModel = qemuDomainDefaultPanicModel(def);
         size_t j;
+
         for (j = 0; j < def->npanics; j++) {
             if (def->panics[j]->model == VIR_DOMAIN_PANIC_MODEL_DEFAULT ||
-                (ARCH_IS_PPC64(def->os.arch) &&
-                     def->panics[j]->model == VIR_DOMAIN_PANIC_MODEL_PSERIES) ||
-                (ARCH_IS_S390(def->os.arch) &&
-                     def->panics[j]->model == VIR_DOMAIN_PANIC_MODEL_S390))
+                def->panics[j]->model == defaultModel)
                 break;
         }
 
@@ -6100,14 +6112,8 @@ static int
 qemuDomainDevicePanicDefPostParse(virDomainPanicDef *panic,
                                   const virDomainDef *def)
 {
-    if (panic->model == VIR_DOMAIN_PANIC_MODEL_DEFAULT) {
-        if (qemuDomainIsPSeries(def))
-            panic->model = VIR_DOMAIN_PANIC_MODEL_PSERIES;
-        else if (ARCH_IS_S390(def->os.arch))
-            panic->model = VIR_DOMAIN_PANIC_MODEL_S390;
-        else
-            panic->model = VIR_DOMAIN_PANIC_MODEL_ISA;
-    }
+    if (panic->model == VIR_DOMAIN_PANIC_MODEL_DEFAULT)
+        panic->model = qemuDomainDefaultPanicModel(def);
 
     return 0;
 }