mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-03 05:17:54 +03:00
qemu: Complete PCI command checks to controller def validate
Move the qemuCaps checks over to qemuDomainControllerDefValidatePCI. This requires two test updates in order to set the correct capability bit for an xml2xml test as well as setting up the similar capability for the pseries memlocktest.
This commit is contained in:
parent
2461476022
commit
7de841cc8e
@ -2719,23 +2719,11 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
|||||||
|
|
||||||
switch ((virDomainControllerModelPCI) def->model) {
|
switch ((virDomainControllerModelPCI) def->model) {
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_BRIDGE:
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PCI_BRIDGE)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the pci-bridge controller "
|
|
||||||
"is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
virBufferAsprintf(&buf, "%s,chassis_nr=%d,id=%s",
|
virBufferAsprintf(&buf, "%s,chassis_nr=%d,id=%s",
|
||||||
modelName, pciopts->chassisNr,
|
modelName, pciopts->chassisNr,
|
||||||
def->info.alias);
|
def->info.alias);
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PXB)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the pxb controller "
|
|
||||||
"is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
virBufferAsprintf(&buf, "%s,bus_nr=%d,id=%s",
|
virBufferAsprintf(&buf, "%s,bus_nr=%d,id=%s",
|
||||||
modelName, pciopts->busNr,
|
modelName, pciopts->busNr,
|
||||||
def->info.alias);
|
def->info.alias);
|
||||||
@ -2744,65 +2732,22 @@ 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:
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the dmi-to-pci-bridge (i82801b11-bridge) "
|
|
||||||
"controller is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
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:
|
||||||
if ((pciopts->modelName ==
|
|
||||||
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420) &&
|
|
||||||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IOH3420)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the pcie-root-port (ioh3420) "
|
|
||||||
"controller is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
if ((pciopts->modelName ==
|
|
||||||
VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_ROOT_PORT) &&
|
|
||||||
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PCIE_ROOT_PORT)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the pcie-root-port (pcie-root-port) "
|
|
||||||
"controller is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
virBufferAsprintf(&buf, "%s,port=0x%x,chassis=%d,id=%s",
|
virBufferAsprintf(&buf, "%s,port=0x%x,chassis=%d,id=%s",
|
||||||
modelName, pciopts->port,
|
modelName, pciopts->port,
|
||||||
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:
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_X3130_UPSTREAM)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the pcie-switch-upstream-port (x3130-upstream) "
|
|
||||||
"controller is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
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_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("The pcie-switch-downstream-port "
|
|
||||||
"(xio3130-downstream) controller "
|
|
||||||
"is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
virBufferAsprintf(&buf, "%s,port=0x%x,chassis=%d,id=%s",
|
virBufferAsprintf(&buf, "%s,port=0x%x,chassis=%d,id=%s",
|
||||||
modelName, pciopts->port,
|
modelName, pciopts->port,
|
||||||
pciopts->chassis, def->info.alias);
|
pciopts->chassis, def->info.alias);
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PXB_PCIE)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the pxb-pcie controller "
|
|
||||||
"is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
virBufferAsprintf(&buf, "%s,bus_nr=%d,id=%s",
|
virBufferAsprintf(&buf, "%s,bus_nr=%d,id=%s",
|
||||||
modelName, pciopts->busNr,
|
modelName, pciopts->busNr,
|
||||||
def->info.alias);
|
def->info.alias);
|
||||||
@ -2815,25 +2760,12 @@ qemuBuildControllerDevStr(const virDomainDef *domainDef,
|
|||||||
if (pciopts->targetIndex == 0)
|
if (pciopts->targetIndex == 0)
|
||||||
goto done;
|
goto done;
|
||||||
|
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the spapr-pci-host-bridge controller "
|
|
||||||
"is not supported in this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
virBufferAsprintf(&buf, "%s,index=%d,id=%s",
|
virBufferAsprintf(&buf, "%s,index=%d,id=%s",
|
||||||
modelName, pciopts->targetIndex,
|
modelName, pciopts->targetIndex,
|
||||||
def->info.alias);
|
def->info.alias);
|
||||||
|
|
||||||
if (pciopts->numaNode != -1) {
|
if (pciopts->numaNode != -1)
|
||||||
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE)) {
|
|
||||||
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
|
||||||
_("the spapr-pci-host-bridge controller "
|
|
||||||
"doesn't support numa_node on this QEMU binary"));
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
virBufferAsprintf(&buf, ",numa_node=%d", pciopts->numaNode);
|
virBufferAsprintf(&buf, ",numa_node=%d", pciopts->numaNode);
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_LAST:
|
||||||
|
@ -4110,7 +4110,8 @@ qemuDomainDeviceDefValidateControllerSCSI(const virDomainControllerDef *controll
|
|||||||
|
|
||||||
static int
|
static int
|
||||||
qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controller,
|
qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controller,
|
||||||
const virDomainDef *def)
|
const virDomainDef *def,
|
||||||
|
virQEMUCapsPtr qemuCaps)
|
||||||
{
|
{
|
||||||
virDomainControllerModelPCI model = controller->model;
|
virDomainControllerModelPCI model = controller->model;
|
||||||
const virDomainPCIControllerOpts *pciopts;
|
const virDomainPCIControllerOpts *pciopts;
|
||||||
@ -4187,6 +4188,13 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PCI_BRIDGE)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the pci-bridge controller is not supported "
|
||||||
|
"in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_EXPANDER_BUS:
|
||||||
@ -4204,6 +4212,13 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PXB)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the pxb controller is not supported in this "
|
||||||
|
"QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
case VIR_DOMAIN_CONTROLLER_MODEL_DMI_TO_PCI_BRIDGE:
|
||||||
@ -4215,6 +4230,13 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the dmi-to-pci-bridge (i82801b11-bridge) "
|
||||||
|
"controller is not supported in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT_PORT:
|
||||||
@ -4233,6 +4255,22 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((pciopts->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_IOH3420) &&
|
||||||
|
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_IOH3420)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the pcie-root-port (ioh3420) controller "
|
||||||
|
"is not supported in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((pciopts->modelName == VIR_DOMAIN_CONTROLLER_PCI_MODEL_NAME_PCIE_ROOT_PORT) &&
|
||||||
|
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PCIE_ROOT_PORT)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the pcie-root-port (pcie-root-port) controller "
|
||||||
|
"is not supported in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_UPSTREAM_PORT:
|
||||||
@ -4244,6 +4282,13 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_X3130_UPSTREAM)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the pcie-switch-upstream-port (x3130-upstream) "
|
||||||
|
"controller is not supported in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_SWITCH_DOWNSTREAM_PORT:
|
||||||
@ -4262,6 +4307,14 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_XIO3130_DOWNSTREAM)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("The pcie-switch-downstream-port "
|
||||||
|
"(xio3130-downstream) controller is not "
|
||||||
|
"supported in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_EXPANDER_BUS:
|
||||||
@ -4279,6 +4332,13 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_PXB_PCIE)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the pxb-pcie controller is not supported "
|
||||||
|
"in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCI_ROOT:
|
||||||
@ -4300,6 +4360,21 @@ qemuDomainDeviceDefValidateControllerPCI(const virDomainControllerDef *controlle
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the spapr-pci-host-bridge controller is not "
|
||||||
|
"supported in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pciopts->numaNode != -1 &&
|
||||||
|
!virQEMUCapsGet(qemuCaps, QEMU_CAPS_SPAPR_PCI_HOST_BRIDGE_NUMA_NODE)) {
|
||||||
|
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
|
||||||
|
_("the spapr-pci-host-bridge controller doesn't "
|
||||||
|
"support numa_node in this QEMU binary"));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
case VIR_DOMAIN_CONTROLLER_MODEL_PCIE_ROOT:
|
||||||
@ -4339,7 +4414,8 @@ qemuDomainDeviceDefValidateController(const virDomainControllerDef *controller,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
|
case VIR_DOMAIN_CONTROLLER_TYPE_PCI:
|
||||||
ret = qemuDomainDeviceDefValidateControllerPCI(controller, def);
|
ret = qemuDomainDeviceDefValidateControllerPCI(controller, def,
|
||||||
|
qemuCaps);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
|
case VIR_DOMAIN_CONTROLLER_TYPE_FDC:
|
||||||
|
@ -63,6 +63,7 @@ mymain(void)
|
|||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
char *fakerootdir;
|
char *fakerootdir;
|
||||||
|
virQEMUCapsPtr qemuCaps = NULL;
|
||||||
|
|
||||||
if (VIR_STRDUP_QUIET(fakerootdir, FAKEROOTDIRTEMPLATE) < 0) {
|
if (VIR_STRDUP_QUIET(fakerootdir, FAKEROOTDIRTEMPLATE) < 0) {
|
||||||
fprintf(stderr, "Out of memory\n");
|
fprintf(stderr, "Out of memory\n");
|
||||||
@ -127,6 +128,16 @@ mymain(void)
|
|||||||
DO_TEST("pc-locked+hostdev", VIR_DOMAIN_MEMORY_PARAM_UNLIMITED);
|
DO_TEST("pc-locked+hostdev", VIR_DOMAIN_MEMORY_PARAM_UNLIMITED);
|
||||||
|
|
||||||
qemuTestSetHostArch(driver.caps, VIR_ARCH_PPC64);
|
qemuTestSetHostArch(driver.caps, VIR_ARCH_PPC64);
|
||||||
|
if (!(qemuCaps = virQEMUCapsNew())) {
|
||||||
|
ret = -1;
|
||||||
|
goto cleanup;
|
||||||
|
}
|
||||||
|
|
||||||
|
virQEMUCapsSet(qemuCaps, QEMU_CAPS_DEVICE_SPAPR_PCI_HOST_BRIDGE);
|
||||||
|
if (qemuTestCapsCacheInsert(driver.qemuCapsCache, qemuCaps) < 0) {
|
||||||
|
ret = -1;
|
||||||
|
goto cleanup;
|
||||||
|
};
|
||||||
|
|
||||||
DO_TEST("pseries-kvm", 20971520);
|
DO_TEST("pseries-kvm", 20971520);
|
||||||
DO_TEST("pseries-tcg", 0);
|
DO_TEST("pseries-tcg", 0);
|
||||||
@ -140,6 +151,9 @@ mymain(void)
|
|||||||
DO_TEST("pseries-hardlimit+locked+hostdev", 2147483648);
|
DO_TEST("pseries-hardlimit+locked+hostdev", 2147483648);
|
||||||
DO_TEST("pseries-locked+hostdev", VIR_DOMAIN_MEMORY_PARAM_UNLIMITED);
|
DO_TEST("pseries-locked+hostdev", VIR_DOMAIN_MEMORY_PARAM_UNLIMITED);
|
||||||
|
|
||||||
|
cleanup:
|
||||||
|
virObjectUnref(qemuCaps);
|
||||||
|
|
||||||
if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
|
if (getenv("LIBVIRT_SKIP_CLEANUP") == NULL)
|
||||||
virFileDeleteTree(fakerootdir);
|
virFileDeleteTree(fakerootdir);
|
||||||
|
|
||||||
|
@ -1317,7 +1317,10 @@ mymain(void)
|
|||||||
DO_TEST("intel-iommu-machine",
|
DO_TEST("intel-iommu-machine",
|
||||||
QEMU_CAPS_MACHINE_OPT,
|
QEMU_CAPS_MACHINE_OPT,
|
||||||
QEMU_CAPS_MACHINE_IOMMU);
|
QEMU_CAPS_MACHINE_IOMMU);
|
||||||
DO_TEST("intel-iommu-caching-mode", NONE);
|
DO_TEST("intel-iommu-caching-mode",
|
||||||
|
QEMU_CAPS_DEVICE_PCI_BRIDGE,
|
||||||
|
QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE,
|
||||||
|
QEMU_CAPS_DEVICE_IOH3420);
|
||||||
DO_TEST("intel-iommu-eim", NONE);
|
DO_TEST("intel-iommu-eim", NONE);
|
||||||
DO_TEST("intel-iommu-device-iotlb", NONE);
|
DO_TEST("intel-iommu-device-iotlb", NONE);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user