From 9f52df3a70ea0fd68a5e54e1277bd3c90a390b4b Mon Sep 17 00:00:00 2001 From: Kristina Hanicova Date: Mon, 20 Feb 2023 17:12:57 +0100 Subject: [PATCH] qemu: assign PCI address to device pvpanic-pci It makes sense to accept pvpanic-pci also without specified PCI address and assign one if possible. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1961326 Signed-off-by: Kristina Hanicova Reviewed-by: Andrea Bolognani --- src/qemu/qemu_domain_address.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index 20b648354b..2023f283d6 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -1062,10 +1062,24 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDef *dev, } break; + case VIR_DOMAIN_DEVICE_PANIC: + switch ((virDomainPanicModel) dev->data.panic->model) { + case VIR_DOMAIN_PANIC_MODEL_PVPANIC: + return pciFlags | VIR_PCI_CONNECT_INTEGRATED; + + case VIR_DOMAIN_PANIC_MODEL_DEFAULT: + case VIR_DOMAIN_PANIC_MODEL_ISA: + case VIR_DOMAIN_PANIC_MODEL_PSERIES: + case VIR_DOMAIN_PANIC_MODEL_HYPERV: + case VIR_DOMAIN_PANIC_MODEL_S390: + case VIR_DOMAIN_PANIC_MODEL_LAST: + return 0; + } + break; + /* These devices don't ever connect with PCI */ case VIR_DOMAIN_DEVICE_NVRAM: case VIR_DOMAIN_DEVICE_TPM: - case VIR_DOMAIN_DEVICE_PANIC: case VIR_DOMAIN_DEVICE_HUB: case VIR_DOMAIN_DEVICE_REDIRDEV: case VIR_DOMAIN_DEVICE_SMARTCARD: @@ -2454,6 +2468,24 @@ qemuDomainAssignDevicePCISlots(virDomainDef *def, return -1; } + for (i = 0; i < def->npanics; i++) { + virDomainPanicDef *panic = def->panics[i]; + + switch (panic->model) { + case VIR_DOMAIN_PANIC_MODEL_PVPANIC: + if (virDeviceInfoPCIAddressIsWanted(&panic->info) && + qemuDomainPCIAddressReserveNextAddr(addrs, &panic->info) < 0) + return -1; + break; + case VIR_DOMAIN_PANIC_MODEL_DEFAULT: + case VIR_DOMAIN_PANIC_MODEL_ISA: + case VIR_DOMAIN_PANIC_MODEL_PSERIES: + case VIR_DOMAIN_PANIC_MODEL_HYPERV: + case VIR_DOMAIN_PANIC_MODEL_S390: + case VIR_DOMAIN_PANIC_MODEL_LAST: + break; + } + } return 0; }