mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-22 11:22:23 +00:00
qemu: Move PCI command modelName check to controller def validate
Move the various modelName == NAME_NONE from the command line generation into domain controller validation. Also rather than have multiple cases with the same check, let's make the code more generic, but also note that it was the modelName option that caused the failure. We also have to be sure not to check the PCI models that we don't care about. For the remaining checks in command line building, we can use the field name in the error message to be more specific about what causes the failure.
This commit is contained in:
parent
c44ba1d4d1
commit
4d7f9bf0ef
@ -2716,9 +2716,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
|
||||
switch ((virDomainControllerModelPCI) def->model) {
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
|
||||
if (pciopts->modelName
|
||||
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
|
||||
pciopts->chassisNr == -1) {
|
||||
if (pciopts->chassisNr == -1) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("autogenerated pci-bridge options not set"));
|
||||
goto error;
|
||||
@ -2750,9 +2748,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
def->info.alias);
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||
if (pciopts->modelName
|
||||
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
|
||||
pciopts->busNr == -1) {
|
||||
if (pciopts->busNr == -1) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("autogenerated pci-expander-bus options not set"));
|
||||
goto error;
|
||||
@ -2787,13 +2783,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
pciopts->numaNode);
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||
if (pciopts->modelName
|
||||
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("autogenerated dmi-to-pci-bridge options not set"));
|
||||
goto error;
|
||||
}
|
||||
|
||||
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
|
||||
if (!modelName) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
@ -2818,9 +2807,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
virBufferAsprintf(&buf, "%s,id=%s", modelName, def->info.alias);
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
||||
if (pciopts->modelName
|
||||
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
|
||||
pciopts->chassis == -1 || pciopts->port == -1) {
|
||||
if (pciopts->chassis == -1 || pciopts->port == -1) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("autogenerated pcie-root-port options not set"));
|
||||
goto error;
|
||||
@ -2864,12 +2851,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
pciopts->chassis, def->info.alias);
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
||||
if (pciopts->modelName
|
||||
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("autogenerated pcie-switch-upstream-port options not set"));
|
||||
goto error;
|
||||
}
|
||||
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
|
||||
if (!modelName) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
@ -2895,9 +2876,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
virBufferAsprintf(&buf, "%s,id=%s", modelName, def->info.alias);
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||
if (pciopts->modelName
|
||||
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
|
||||
pciopts->chassis == -1 ||
|
||||
if (pciopts->chassis == -1 ||
|
||||
pciopts->port == -1) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("autogenerated pcie-switch-downstream-port "
|
||||
@ -2932,9 +2911,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
pciopts->chassis, def->info.alias);
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||
if (pciopts->modelName
|
||||
== VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
|
||||
pciopts->busNr == -1) {
|
||||
if (pciopts->busNr == -1) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("autogenerated pcie-expander-bus options not set"));
|
||||
goto error;
|
||||
@ -2969,8 +2946,7 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
||||
pciopts->numaNode);
|
||||
break;
|
||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
|
||||
if (pciopts->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE ||
|
||||
pciopts->targetIndex == -1) {
|
||||
if (pciopts->targetIndex == -1) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
|
||||
_("autogenerated pci-root options not set"));
|
||||
goto error;
|
||||
|
@ -4113,6 +4113,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
||||
const virDomainDef *def)
|
||||
{
|
||||
virDomainControllerModelPCI model = controller->model;
|
||||
const virDomainPCIControllerOpts *pciopts;
|
||||
|
||||
/* skip pcie-root */
|
||||
if (controller->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT)
|
||||
@ -4146,6 +4147,17 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
||||
break;
|
||||
}
|
||||
|
||||
pciopts = &controller->opts.pciopts;
|
||||
if (controller->model != VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT &&
|
||||
controller->model != VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST) {
|
||||
if (pciopts->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_NONE) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("autogenerated %s options not set"),
|
||||
virDomainControllerModelPCITypeToString(controller->model));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user