chassisNr);
return NULL;
}
- if (def->opts.pciopts.chassisNr < 1 ||
- def->opts.pciopts.chassisNr > 255) {
- virReportError(VIR_ERR_XML_ERROR,
- _("PCI controller chassisNr '%s' out of range "
- "- must be 1-255"),
- chassisNr);
- return NULL;
- }
}
if (chassis) {
if (virStrToLong_i(chassis, NULL, 0,
chassis);
return NULL;
}
- if (def->opts.pciopts.chassis < 0 ||
- def->opts.pciopts.chassis > 255) {
- virReportError(VIR_ERR_XML_ERROR,
- _("PCI controller chassis '%s' out of range "
- "- must be 0-255"),
- chassis);
- return NULL;
- }
}
if (port) {
if (virStrToLong_i(port, NULL, 0,
port);
return NULL;
}
- if (def->opts.pciopts.port < 0 ||
- def->opts.pciopts.port > 255) {
- virReportError(VIR_ERR_XML_ERROR,
- _("PCI controller port '%s' out of range "
- "- must be 0-255"),
- port);
- return NULL;
- }
}
if (busNr) {
if (virStrToLong_i(busNr, NULL, 0,
busNr);
return NULL;
}
- if (def->opts.pciopts.busNr < 1 ||
- def->opts.pciopts.busNr > 254) {
- virReportError(VIR_ERR_XML_ERROR,
- _("PCI controller busNr '%s' out of range "
- "- must be 1-254"),
- busNr);
- return NULL;
- }
}
if (targetIndex) {
if (virStrToLong_i(targetIndex, NULL, 0,
return NULL;
}
}
- if (numaNode >= 0) {
- if (def->idx == 0) {
- virReportError(VIR_ERR_XML_ERROR, "%s",
- _("The PCI controller with index=0 can't "
- "be associated with a NUMA node"));
- return NULL;
- }
+ if (numaNode >= 0)
def->opts.pciopts.numaNode = numaNode;
- }
+
if (hotplug) {
int val = virTristateSwitchTypeFromString(hotplug);
return -1;
}
}
+
+ if (opts->chassisNr != -1) {
+ if (opts->chassisNr < 1 || opts->chassisNr > 255) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("PCI controller chassisNr '%d' out of range "
+ "- must be 1-255"),
+ opts->chassisNr);
+ return -1;
+ }
+ }
+
+ if (opts->chassis != -1) {
+ if (opts->chassis < 0 || opts->chassis > 255) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("PCI controller chassis '%d' out of range "
+ "- must be 0-255"),
+ opts->chassis);
+ return -1;
+ }
+ }
+
+ if (opts->port != -1) {
+ if (opts->port < 0 || opts->port > 255) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("PCI controller port '%d' out of range "
+ "- must be 0-255"),
+ opts->port);
+ return -1;
+ }
+ }
+
+ if (opts->busNr != -1) {
+ if (opts->busNr < 1 || opts->busNr > 254) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
+ _("PCI controller busNr '%d' out of range "
+ "- must be 1-254"),
+ opts->busNr);
+ return -1;
+ }
+ }
+
+ if (opts->numaNode >= 0 && controller->idx == 0) {
+ virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
+ _("The PCI controller with index=0 can't "
+ "be associated with a NUMA node"));
+ return -1;
+ }
}
+
return 0;
}
-XML error: The PCI controller with index=0 can't be associated with a NUMA node
+unsupported configuration: Option 'numaNode' is not valid for PCI controller with index '0', model 'pci-root' and modelName 'spapr-pci-host-bridge'
QEMU_CAPS_OBJECT_MEMORY_RAM,
QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE);
- DO_TEST_PARSE_ERROR("pseries-default-phb-numa-node", NONE);
+ DO_TEST_PARSE_ERROR("pseries-default-phb-numa-node",
+ QEMU_CAPS_NUMA,
+ QEMU_CAPS_OBJECT_MEMORY_RAM,
+ QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE,
+ QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE);
DO_TEST_PARSE_ERROR("pseries-phb-invalid-target-index-1", NONE);
DO_TEST_PARSE_ERROR("pseries-phb-invalid-target-index-2", NONE);
DO_TEST_PARSE_ERROR("pseries-phb-invalid-target-index-3", NONE);