提交 13b2083c 编写于 作者: J John Ferlan

qemu: Move PCI command modelName TypeToString to controller def validate

Similar to the checking the modelName vs. NAME_NONE, let's make the
ModelNameTypeToString check more generic too within the checking done
in controller validation (with the same ignore certain models.

NB: We need to keep the ModelNameTypeToString fetch in command line
validation since we use it, but at least we can assume it returns
something valid now.
上级 4d7f9bf0
...@@ -2713,6 +2713,9 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2713,6 +2713,9 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
case VIR_DOMAIN_CONTROLLER_TYPE_PCI: case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
pciopts = &def->opts.pciopts; pciopts = &def->opts.pciopts;
if (def->model != VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT &&
def->model != VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST)
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
switch ((virDomainControllerModelPCI) def->model) { switch ((virDomainControllerModelPCI) def->model) {
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE: case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
...@@ -2722,13 +2725,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2722,13 +2725,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
goto error; goto error;
} }
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown pci-bridge model name value %d"),
pciopts->modelName);
goto error;
}
if (pciopts->modelName if (pciopts->modelName
!= VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCI_BRIDGE) { != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCI_BRIDGE) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
...@@ -2754,13 +2750,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2754,13 +2750,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
goto error; goto error;
} }
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown pci-expander-bus model name value %d"),
pciopts->modelName);
goto error;
}
if (pciopts->modelName if (pciopts->modelName
!= VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB) { != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
...@@ -2783,13 +2772,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2783,13 +2772,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
pciopts->numaNode); pciopts->numaNode);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE: case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown dmi-to-pci-bridge model name value %d"),
pciopts->modelName);
goto error;
}
if (pciopts->modelName if (pciopts->modelName
!= VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_I82801B11_BRIDGE) { != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_I82801B11_BRIDGE) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
...@@ -2812,13 +2794,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2812,13 +2794,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
_("autogenerated pcie-root-port options not set")); _("autogenerated pcie-root-port options not set"));
goto error; goto error;
} }
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown pcie-root-port model name value %d"),
pciopts->modelName);
goto error;
}
if ((pciopts->modelName != if ((pciopts->modelName !=
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420) && VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420) &&
(pciopts->modelName != (pciopts->modelName !=
...@@ -2851,13 +2826,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2851,13 +2826,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
pciopts->chassis, def->info.alias); pciopts->chassis, def->info.alias);
break; break;
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT: case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown pcie-switch-upstream-port model name value %d"),
pciopts->modelName);
goto error;
}
if (pciopts->modelName if (pciopts->modelName
!= VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM) { != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_X3130_UPSTREAM) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
...@@ -2884,13 +2852,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2884,13 +2852,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
goto error; goto error;
} }
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown pcie-switch-downstream-port model name value %d"),
pciopts->modelName);
goto error;
}
if (pciopts->modelName if (pciopts->modelName
!= VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM) { != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_XIO3130_DOWNSTREAM) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
...@@ -2917,13 +2878,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2917,13 +2878,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
goto error; goto error;
} }
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown pcie-expander-bus model name value %d"),
pciopts->modelName);
goto error;
}
if (pciopts->modelName if (pciopts->modelName
!= VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE) { != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PXB_PCIE) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
...@@ -2956,13 +2910,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef, ...@@ -2956,13 +2910,6 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
if (pciopts->targetIndex == 0) if (pciopts->targetIndex == 0)
goto done; goto done;
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown pci-root model name value %d"),
pciopts->modelName);
goto error;
}
if (pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_HOST_BRIDGE) { if (pciopts->modelName != VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_SPAPR_PCI_HOST_BRIDGE) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("PCI controller model name '%s' is not valid for a pci-root"), _("PCI controller model name '%s' is not valid for a pci-root"),
......
...@@ -4114,6 +4114,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle ...@@ -4114,6 +4114,7 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
{ {
virDomainControllerModelPCI model = controller->model; virDomainControllerModelPCI model = controller->model;
const virDomainPCIControllerOpts *pciopts; const virDomainPCIControllerOpts *pciopts;
const char *modelName = NULL;
/* skip pcie-root */ /* skip pcie-root */
if (controller->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT) if (controller->model == VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT)
...@@ -4156,6 +4157,15 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle ...@@ -4156,6 +4157,15 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
virDomainControllerModelPCITypeToString(controller->model)); virDomainControllerModelPCITypeToString(controller->model));
return -1; return -1;
} }
modelName = virDomainControllerPCIModelNameTypeToString(pciopts->modelName);
if (!modelName) {
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unknown %s modelName value %d"),
virDomainControllerModelPCITypeToString(controller->model),
pciopts->modelName);
return -1;
}
} }
return 0; return 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册