mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-09-01 14:17:33 +03:00
qemu: Implement pcie-to-pci-bridge controller
The new controller will not yet be used automatically by libvirt, but at this point it's already possible to configure a guest to use it. Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
@ -3956,6 +3956,10 @@
|
|||||||
<code>pci-expander-bus</code>, <code>pcie-expander-bus</code>
|
<code>pci-expander-bus</code>, <code>pcie-expander-bus</code>
|
||||||
(<span class="since">since 1.3.4</span>)
|
(<span class="since">since 1.3.4</span>)
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<code>pcie-to-pci-bridge</code>
|
||||||
|
(<span class="since">since 4.3.0</span>)
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
The root controllers (<code>pci-root</code>
|
The root controllers (<code>pci-root</code>
|
||||||
|
@ -2102,6 +2102,8 @@
|
|||||||
<value>pci-bridge</value>
|
<value>pci-bridge</value>
|
||||||
<!-- implementations of 'dmi-to-pci-bridge' -->
|
<!-- implementations of 'dmi-to-pci-bridge' -->
|
||||||
<value>i82801b11-bridge</value>
|
<value>i82801b11-bridge</value>
|
||||||
|
<!-- implementations of 'pcie-to-pci-bridge' -->
|
||||||
|
<value>pcie-pci-bridge</value>
|
||||||
<!-- implementations of 'pcie-root-port' -->
|
<!-- implementations of 'pcie-root-port' -->
|
||||||
<value>ioh3420</value>
|
<value>ioh3420</value>
|
||||||
<value>pcie-root-port</value>
|
<value>pcie-root-port</value>
|
||||||
@ -2172,6 +2174,7 @@
|
|||||||
<choice>
|
<choice>
|
||||||
<value>pci-bridge</value>
|
<value>pci-bridge</value>
|
||||||
<value>dmi-to-pci-bridge</value>
|
<value>dmi-to-pci-bridge</value>
|
||||||
|
<value>pcie-to-pci-bridge</value>
|
||||||
<value>pcie-root-port</value>
|
<value>pcie-root-port</value>
|
||||||
<value>pcie-switch-upstream-port</value>
|
<value>pcie-switch-upstream-port</value>
|
||||||
<value>pcie-switch-downstream-port</value>
|
<value>pcie-switch-downstream-port</value>
|
||||||
|
@ -62,6 +62,9 @@ virDomainPCIControllerModelToConnectType(virDomainControllerModelPCI model)
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||||
return VIR_PCI_CONNECT_TYPE_DMI_TO_PCI_BRIDGE;
|
return VIR_PCI_CONNECT_TYPE_DMI_TO_PCI_BRIDGE;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
|
return VIR_PCI_CONNECT_TYPE_PCIE_TO_PCI_BRIDGE;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
||||||
return VIR_PCI_CONNECT_TYPE_PCIE_ROOT_PORT | VIR_PCI_CONNECT_AGGREGATE_SLOT;
|
return VIR_PCI_CONNECT_TYPE_PCIE_ROOT_PORT | VIR_PCI_CONNECT_AGGREGATE_SLOT;
|
||||||
|
|
||||||
@ -160,6 +163,8 @@ virDomainPCIAddressFlagsCompatible(virPCIDeviceAddressPtr addr,
|
|||||||
connectStr = "pci-switch-downstream-port";
|
connectStr = "pci-switch-downstream-port";
|
||||||
} else if (devFlags & VIR_PCI_CONNECT_TYPE_DMI_TO_PCI_BRIDGE) {
|
} else if (devFlags & VIR_PCI_CONNECT_TYPE_DMI_TO_PCI_BRIDGE) {
|
||||||
connectStr = "dmi-to-pci-bridge";
|
connectStr = "dmi-to-pci-bridge";
|
||||||
|
} else if (devFlags & VIR_PCI_CONNECT_TYPE_PCIE_TO_PCI_BRIDGE) {
|
||||||
|
connectStr = "pcie-to-pci-bridge";
|
||||||
} else if (devFlags & VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS) {
|
} else if (devFlags & VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS) {
|
||||||
connectStr = "pci-expander-bus";
|
connectStr = "pci-expander-bus";
|
||||||
} else if (devFlags & VIR_PCI_CONNECT_TYPE_PCIE_EXPANDER_BUS) {
|
} else if (devFlags & VIR_PCI_CONNECT_TYPE_PCIE_EXPANDER_BUS) {
|
||||||
@ -316,14 +321,24 @@ virDomainPCIAddressBusSetModel(virDomainPCIAddressBusPtr bus,
|
|||||||
bus->minSlot = 0;
|
bus->minSlot = 0;
|
||||||
bus->maxSlot = VIR_PCI_ADDRESS_SLOT_LAST;
|
bus->maxSlot = VIR_PCI_ADDRESS_SLOT_LAST;
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
|
/* Same as pci-bridge: 32 hotpluggable traditional PCI slots (0-31),
|
||||||
|
* the first of which is not usable because of the SHPC */
|
||||||
|
bus->flags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
|
||||||
|
VIR_PCI_CONNECT_TYPE_PCI_DEVICE |
|
||||||
|
VIR_PCI_CONNECT_TYPE_PCI_BRIDGE);
|
||||||
|
bus->minSlot = 1;
|
||||||
|
bus->maxSlot = VIR_PCI_ADDRESS_SLOT_LAST;
|
||||||
|
break;
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
/* provides one slot which is pcie, can be used by endpoint
|
/* provides one slot which is pcie, can be used by endpoint
|
||||||
* devices and pcie-switch-upstream-ports, and is hotpluggable
|
* devices, pcie-switch-upstream-ports or pcie-to-pci-bridges,
|
||||||
*/
|
* and is hotpluggable */
|
||||||
bus->flags = VIR_PCI_CONNECT_TYPE_PCIE_DEVICE
|
bus->flags = (VIR_PCI_CONNECT_HOTPLUGGABLE |
|
||||||
| VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_UPSTREAM_PORT
|
VIR_PCI_CONNECT_TYPE_PCIE_DEVICE |
|
||||||
| VIR_PCI_CONNECT_HOTPLUGGABLE;
|
VIR_PCI_CONNECT_TYPE_PCIE_SWITCH_UPSTREAM_PORT |
|
||||||
|
VIR_PCI_CONNECT_TYPE_PCIE_TO_PCI_BRIDGE);
|
||||||
bus->minSlot = 0;
|
bus->minSlot = 0;
|
||||||
bus->maxSlot = 0;
|
bus->maxSlot = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -49,6 +49,7 @@ typedef enum {
|
|||||||
VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS = 1 << 8,
|
VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS = 1 << 8,
|
||||||
VIR_PCI_CONNECT_TYPE_PCIE_EXPANDER_BUS = 1 << 9,
|
VIR_PCI_CONNECT_TYPE_PCIE_EXPANDER_BUS = 1 << 9,
|
||||||
VIR_PCI_CONNECT_TYPE_PCI_BRIDGE = 1 << 10,
|
VIR_PCI_CONNECT_TYPE_PCI_BRIDGE = 1 << 10,
|
||||||
|
VIR_PCI_CONNECT_TYPE_PCIE_TO_PCI_BRIDGE = 1 << 11,
|
||||||
} virDomainPCIConnectFlags;
|
} virDomainPCIConnectFlags;
|
||||||
|
|
||||||
/* a combination of all bits that describe the type of connections
|
/* a combination of all bits that describe the type of connections
|
||||||
@ -62,7 +63,8 @@ typedef enum {
|
|||||||
VIR_PCI_CONNECT_TYPE_DMI_TO_PCI_BRIDGE | \
|
VIR_PCI_CONNECT_TYPE_DMI_TO_PCI_BRIDGE | \
|
||||||
VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS | \
|
VIR_PCI_CONNECT_TYPE_PCI_EXPANDER_BUS | \
|
||||||
VIR_PCI_CONNECT_TYPE_PCIE_EXPANDER_BUS | \
|
VIR_PCI_CONNECT_TYPE_PCIE_EXPANDER_BUS | \
|
||||||
VIR_PCI_CONNECT_TYPE_PCI_BRIDGE)
|
VIR_PCI_CONNECT_TYPE_PCI_BRIDGE | \
|
||||||
|
VIR_PCI_CONNECT_TYPE_PCIE_TO_PCI_BRIDGE)
|
||||||
|
|
||||||
/* combination of all bits that could be used to connect a normal
|
/* combination of all bits that could be used to connect a normal
|
||||||
* endpoint device (i.e. excluding the connection possible between an
|
* endpoint device (i.e. excluding the connection possible between an
|
||||||
|
@ -335,6 +335,7 @@ VIR_ENUM_IMPL(virDomainControllerModelPCI, VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST,
|
|||||||
"pcie-root",
|
"pcie-root",
|
||||||
"pci-bridge",
|
"pci-bridge",
|
||||||
"dmi-to-pci-bridge",
|
"dmi-to-pci-bridge",
|
||||||
|
"pcie-to-pci-bridge",
|
||||||
"pcie-root-port",
|
"pcie-root-port",
|
||||||
"pcie-switch-upstream-port",
|
"pcie-switch-upstream-port",
|
||||||
"pcie-switch-downstream-port",
|
"pcie-switch-downstream-port",
|
||||||
@ -353,6 +354,7 @@ VIR_ENUM_IMPL(virDomainControllerPCIModelName,
|
|||||||
"pxb-pcie",
|
"pxb-pcie",
|
||||||
"pcie-root-port",
|
"pcie-root-port",
|
||||||
"spapr-pci-host-bridge",
|
"spapr-pci-host-bridge",
|
||||||
|
"pcie-pci-bridge",
|
||||||
);
|
);
|
||||||
|
|
||||||
VIR_ENUM_IMPL(virDomainControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
|
VIR_ENUM_IMPL(virDomainControllerModelSCSI, VIR_DOMAIN_CONTROLLER_MODEL_SCSI_LAST,
|
||||||
@ -10188,6 +10190,7 @@ virDomainControllerDefParseXML(virDomainXMLOptionPtr xmlopt,
|
|||||||
}
|
}
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
|
@ -690,6 +690,7 @@ typedef enum {
|
|||||||
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT,
|
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT,
|
||||||
VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE,
|
VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE,
|
||||||
VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE,
|
VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE,
|
||||||
|
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE,
|
||||||
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT,
|
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT,
|
||||||
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT,
|
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT,
|
||||||
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT,
|
VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT,
|
||||||
@ -710,6 +711,7 @@ typedef enum {
|
|||||||
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE,
|
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE,
|
||||||
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_ROOT_PORT,
|
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_ROOT_PORT,
|
||||||
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_HOST_BRIDGE,
|
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_HOST_BRIDGE,
|
||||||
|
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_PCI_BRIDGE,
|
||||||
|
|
||||||
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST
|
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST
|
||||||
} virDomainControllerPCIModelName;
|
} virDomainControllerPCIModelName;
|
||||||
|
@ -2795,6 +2795,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
|||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
virBufferAsprintf(&buf, "%s,id=%s", modelName, def->info.alias);
|
virBufferAsprintf(&buf, "%s,id=%s", modelName, def->info.alias);
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
||||||
|
@ -4400,6 +4400,8 @@ virDomainControllerPCIModelNameToQEMUCaps(int modelName)
|
|||||||
return QEMU_CAPS_DEVICE_PCIE_ROOT_PORT;
|
return QEMU_CAPS_DEVICE_PCIE_ROOT_PORT;
|
||||||
case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_HOST_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_HOST_BRIDGE:
|
||||||
return QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE;
|
return QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE;
|
||||||
|
case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_PCI_BRIDGE:
|
||||||
|
return QEMU_CAPS_DEVICE_PCIE_PCI_BRIDGE;
|
||||||
case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE:
|
case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE:
|
||||||
return 0;
|
return 0;
|
||||||
case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST:
|
case VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_LAST:
|
||||||
@ -4457,6 +4459,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
/* modelName should have been set automatically */
|
/* modelName should have been set automatically */
|
||||||
if (pciopts->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE) {
|
if (pciopts->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE) {
|
||||||
virReportControllerMissingOption(cont, model, modelName, "modelName");
|
virReportControllerMissingOption(cont, model, modelName, "modelName");
|
||||||
@ -4561,6 +4564,13 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
|
if (pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_PCI_BRIDGE) {
|
||||||
|
virReportControllerInvalidValue(cont, model, modelName, "modelName");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST:
|
||||||
default:
|
default:
|
||||||
@ -4577,6 +4587,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
if (cont->idx == 0) {
|
if (cont->idx == 0) {
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
|
||||||
_("Index for '%s' controllers must be > 0"),
|
_("Index for '%s' controllers must be > 0"),
|
||||||
@ -4638,6 +4649,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
if (pciopts->targetIndex != -1) {
|
if (pciopts->targetIndex != -1) {
|
||||||
virReportControllerInvalidOption(cont, model, modelName, "targetIndex");
|
virReportControllerInvalidOption(cont, model, modelName, "targetIndex");
|
||||||
return -1;
|
return -1;
|
||||||
@ -4671,6 +4683,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
if (pciopts->pcihole64 ||
|
if (pciopts->pcihole64 ||
|
||||||
pciopts->pcihole64size != 0) {
|
pciopts->pcihole64size != 0) {
|
||||||
virReportControllerInvalidOption(cont, model, modelName, "pcihole64");
|
virReportControllerInvalidOption(cont, model, modelName, "pcihole64");
|
||||||
@ -4702,6 +4715,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
if (pciopts->busNr != -1) {
|
if (pciopts->busNr != -1) {
|
||||||
virReportControllerInvalidOption(cont, model, modelName, "busNr");
|
virReportControllerInvalidOption(cont, model, modelName, "busNr");
|
||||||
return -1;
|
return -1;
|
||||||
@ -4746,6 +4760,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
if (pciopts->numaNode != -1) {
|
if (pciopts->numaNode != -1) {
|
||||||
virReportControllerInvalidOption(cont, model, modelName, "numaNode");
|
virReportControllerInvalidOption(cont, model, modelName, "numaNode");
|
||||||
return -1;
|
return -1;
|
||||||
@ -4776,6 +4791,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
if (pciopts->chassisNr != -1) {
|
if (pciopts->chassisNr != -1) {
|
||||||
virReportControllerInvalidOption(cont, model, modelName, "chassisNr");
|
virReportControllerInvalidOption(cont, model, modelName, "chassisNr");
|
||||||
return -1;
|
return -1;
|
||||||
@ -4810,6 +4826,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
if (pciopts->chassis != -1) {
|
if (pciopts->chassis != -1) {
|
||||||
virReportControllerInvalidOption(cont, model, modelName, "chassis");
|
virReportControllerInvalidOption(cont, model, modelName, "chassis");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -2171,6 +2171,9 @@ qemuDomainPCIControllerSetDefaultModelName(virDomainControllerDefPtr cont,
|
|||||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||||
*modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_I82801B11_BRIDGE;
|
*modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_I82801B11_BRIDGE;
|
||||||
break;
|
break;
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
|
*modelName = VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_PCI_BRIDGE;
|
||||||
|
break;
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
||||||
/* Use generic PCIe Root Ports if available, falling back to
|
/* Use generic PCIe Root Ports if available, falling back to
|
||||||
* ioh3420 otherwise */
|
* ioh3420 otherwise */
|
||||||
@ -2582,6 +2585,7 @@ qemuDomainAssignPCIAddresses(virDomainDefPtr def,
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||||
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_TO_PCI_BRIDGE:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_DEFAULT:
|
||||||
|
Reference in New Issue
Block a user