Signed-off-by: Jiri Denemark <jdenemar@xxxxxxxxxx> --- tests/virpcitest.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/virpcitest.c b/tests/virpcitest.c index 848014d..6a2291d 100644 --- a/tests/virpcitest.c +++ b/tests/virpcitest.c @@ -258,6 +258,37 @@ cleanup: } static int +testVirPCIDeviceDetachFail(const void *opaque) +{ + const struct testPCIDevData *data = opaque; + int ret = -1; + virPCIDevicePtr dev; + + dev = virPCIDeviceNew(data->domain, data->bus, data->slot, data->function); + if (!dev) + goto cleanup; + + if (virPCIDeviceSetStubDriver(dev, "vfio-pci") < 0) + goto cleanup; + + if (virPCIDeviceDetach(dev, NULL, NULL) < 0) { + if (virTestGetVerbose() || virTestGetDebug()) + virDispatchError(NULL); + virResetLastError(); + ret = 0; + } else { + virReportError(VIR_ERR_INTERNAL_ERROR, + "Attaching device %s to %s should have failed", + virPCIDeviceGetName(dev), + virPCIDeviceGetStubDriver(dev)); + } + +cleanup: + virPCIDeviceFree(dev); + return ret; +} + +static int testVirPCIDeviceReattachSingle(const void *opaque) { const struct testPCIDevData *data = opaque; @@ -389,6 +420,8 @@ mymain(void) DO_TEST_PCI(testVirPCIDeviceIsAssignable, 5, 0x90, 1, 0); DO_TEST_PCI(testVirPCIDeviceIsAssignable, 1, 1, 0, 0); + DO_TEST_PCI(testVirPCIDeviceDetachFail, 0, 0x0a, 1, 0); + /* Reattach a device already bound to non-stub a driver */ DO_TEST_PCI_DRIVER(0, 0x0a, 1, 0, "i915"); DO_TEST_PCI(testVirPCIDeviceReattachSingle, 0, 0x0a, 1, 0); -- 1.8.5.3 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list