mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-22 12:35:17 +00:00
conf: Move index number checking to drivers
pSeries guests will soon be allowed to have multiple PHBs (pci-root controllers), which of course means that all but one of them will have a non-zero index; hence, we'll need to relax the current check. However, right now the check is performed in the conf module, which is generic rather than tied to the QEMU driver, and where we don't have information such as the guest machine type available. To make this change of behavior possible down the line, we need to move the check from the XML parser to the drivers. Luckily, only QEMU and bhyve are using PCI controllers, so this doesn't result in much duplication. Signed-off-by: Andrea Bolognani <abologna@redhat.com> Reviewed-by: Laine Stump <laine@laine.org>
This commit is contained in:
parent
b899f3652b
commit
620c390c73
@ -122,6 +122,21 @@ bhyveDomainDeviceDefPostParse(virDomainDeviceDefPtr dev,
|
||||
bhyveDomainDiskDefAssignAddress(driver, disk, def) < 0)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (dev->type == VIR_DOMAIN_DEVICE_CONTROLLER) {
|
||||
virDomainControllerDefPtr cont = dev->data.controller;
|
||||
|
||||
if (cont->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI &&
|
||||
(cont->model == VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT ||
|
||||
cont->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT) &&
|
||||
cont->idx != 0) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("pci-root and pcie-root controllers "
|
||||
"should have index 0"));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -9302,12 +9302,6 @@ virDomainControllerDefParseXML(xmlNodePtr node,
|
||||
"have an address"));
|
||||
goto error;
|
||||
}
|
||||
if (def->idx > 0) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("pci-root and pcie-root controllers "
|
||||
"should have index 0"));
|
||||
goto error;
|
||||
}
|
||||
if ((rc = virDomainParseScaledValue("./pcihole64", NULL,
|
||||
ctxt, &bytes, 1024,
|
||||
1024ULL * ULONG_MAX, false)) < 0)
|
||||
|
@ -3426,6 +3426,15 @@ qemuDomainControllerDefPostParse(virDomainControllerDefPtr cont,
|
||||
break;
|
||||
|
||||
case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
|
||||
if ((cont->model == VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT ||
|
||||
cont->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT) &&
|
||||
cont->idx != 0) {
|
||||
virReportError(VIR_ERR_XML_ERROR, "%s",
|
||||
_("pci-root and pcie-root controllers "
|
||||
"should have index 0"));
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (cont->model == VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS &&
|
||||
!qemuDomainIsI440FX(def)) {
|
||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||
|
Loading…
x
Reference in New Issue
Block a user