mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: eliminate redundant if clauses in qemuCollectPCIAddress
Replace them with switch cases. This will make it more efficient when we add exceptions for more controller types, and other device types. This is a prerequisite for patches to resolve: https://bugzilla.redhat.com/show_bug.cgi?id=1003983
This commit is contained in:
parent
51e184e982
commit
fbd9be484c
@ -1731,37 +1731,44 @@ qemuCollectPCIAddress(virDomainDefPtr def ATTRIBUTE_UNUSED,
|
||||
/* Change flags according to differing requirements of different
|
||||
* devices.
|
||||
*/
|
||||
if (device->type == VIR_DOMAIN_DEVICE_CONTROLLER &&
|
||||
device->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI) {
|
||||
switch (device->data.controller->model) {
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
|
||||
/* pci-bridge needs a PCI slot, but it isn't
|
||||
* hot-pluggable, so it doesn't need a hot-pluggable slot.
|
||||
*/
|
||||
flags = QEMU_PCI_CONNECT_TYPE_PCI;
|
||||
switch (device->type) {
|
||||
case VIR_DOMAIN_DEVICE_CONTROLLER:
|
||||
switch (device->data.controller->type) {
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
|
||||
switch (device->data.controller->model) {
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
|
||||
/* pci-bridge needs a PCI slot, but it isn't
|
||||
* hot-pluggable, so it doesn't need a hot-pluggable slot.
|
||||
*/
|
||||
flags = QEMU_PCI_CONNECT_TYPE_PCI;
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||
/* pci-bridge needs a PCIe slot, but it isn't
|
||||
* hot-pluggable, so it doesn't need a hot-pluggable slot.
|
||||
*/
|
||||
flags = QEMU_PCI_CONNECT_TYPE_PCIE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||
/* pci-bridge needs a PCIe slot, but it isn't
|
||||
* hot-pluggable, so it doesn't need a hot-pluggable slot.
|
||||
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_SATA:
|
||||
/* SATA controllers aren't hot-plugged, and can be put in
|
||||
* either a PCI or PCIe slot
|
||||
*/
|
||||
flags = QEMU_PCI_CONNECT_TYPE_PCIE;
|
||||
break;
|
||||
default:
|
||||
flags = QEMU_PCI_CONNECT_TYPE_PCI | QEMU_PCI_CONNECT_TYPE_PCIE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
/* SATA controllers aren't hot-plugged, and can be put in either a
|
||||
* PCI or PCIe slot
|
||||
*/
|
||||
if (device->type == VIR_DOMAIN_DEVICE_CONTROLLER &&
|
||||
device->data.controller->type == VIR_DOMAIN_CONTROLLER_TYPE_SATA)
|
||||
flags = QEMU_PCI_CONNECT_TYPE_PCI | QEMU_PCI_CONNECT_TYPE_PCIE;
|
||||
break;
|
||||
|
||||
/* video cards aren't hot-plugged, and can be put in either a PCI
|
||||
* or PCIe slot
|
||||
*/
|
||||
if (device->type == VIR_DOMAIN_DEVICE_VIDEO)
|
||||
case VIR_DOMAIN_DEVICE_VIDEO:
|
||||
/* video cards aren't hot-plugged, and can be put in either a
|
||||
* PCI or PCIe slot
|
||||
*/
|
||||
flags = QEMU_PCI_CONNECT_TYPE_PCI | QEMU_PCI_CONNECT_TYPE_PCIE;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Ignore implicit controllers on slot 0:0:1.0:
|
||||
* implicit IDE controller on 0:0:1.1 (no qemu command line)
|
||||
|
Loading…
x
Reference in New Issue
Block a user