# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1299781302 0
# Node ID c8947c24536a0cdc19c30ec3e435d82f85e38c4d
# Parent a46101334ee21410a05434f9093138c914ba7a3d
libxl: do not rely on guest to respond when forcing pci device removal
This is consistent with the expected semantics of a forced device
removal and also avoids a delay when destroying an HVM domain which
either does not support hot unplug (does not respond to SCI) or has
crashed.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
Committed-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx>
---
diff -r a46101334ee2 -r c8947c24536a tools/libxl/libxl_pci.c
--- a/tools/libxl/libxl_pci.c Thu Mar 10 18:17:16 2011 +0000
+++ b/tools/libxl/libxl_pci.c Thu Mar 10 18:21:42 2011 +0000
@@ -865,7 +865,7 @@
/* Remove all functions at once atomically by only signalling
* device-model for function 0 */
- if ( (pcidev->vdevfn & 0x7) == 0 ) {
+ if ( !force && (pcidev->vdevfn & 0x7) == 0 ) {
xs_write(ctx->xsh, XBT_NULL, path, "pci-rem", strlen("pci-rem"));
if (libxl__wait_for_device_model(ctx, domid, "pci-removed", NULL,
NULL) < 0) {
LIBXL__LOG(ctx, LIBXL__LOG_ERROR, "Device Model didn't respond
in time");
@@ -873,8 +873,7 @@
* SCI, if it doesn't respond in time then we may wish to
* force the removal.
*/
- if ( !force )
- return ERROR_FAIL;
+ return ERROR_FAIL;
}
}
path = libxl__sprintf(gc, "/local/domain/0/device-model/%d/state",
domid);
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|