87 lines
3.0 KiB
Diff
87 lines
3.0 KiB
Diff
From b005e5a27c44632b8d6485e1d4420bd0ab2aa0c2 Mon Sep 17 00:00:00 2001
|
|
Message-ID: <b005e5a27c44632b8d6485e1d4420bd0ab2aa0c2.1725606790.git.jdenemar@redhat.com>
|
|
From: Andrea Bolognani <abologna@redhat.com>
|
|
Date: Tue, 27 Aug 2024 15:03:31 +0200
|
|
Subject: [PATCH] qemu: Refactor default panic model
|
|
|
|
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>
|
|
(cherry picked from commit 9e1970efa5ac281febffabd57ac5b849117cccb4)
|
|
|
|
https://issues.redhat.com/browse/RHEL-56451
|
|
|
|
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
|
|
---
|
|
src/qemu/qemu_domain.c | 30 ++++++++++++++++++------------
|
|
1 file changed, 18 insertions(+), 12 deletions(-)
|
|
|
|
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
|
|
index 1bafe3708a..f169aca599 100644
|
|
--- a/src/qemu/qemu_domain.c
|
|
+++ b/src/qemu/qemu_domain.c
|
|
@@ -4139,6 +4139,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,
|
|
@@ -4386,13 +4399,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;
|
|
}
|
|
|
|
@@ -6076,14 +6088,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;
|
|
}
|
|
--
|
|
2.46.0
|