WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] libxl: do not rely on guest to respond when forcing

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH] libxl: do not rely on guest to respond when forcing pci device removal
From: Ian Campbell <ian.campbell@xxxxxxxxxx>
Date: Tue, 08 Mar 2011 11:49:05 +0000
Cc: Ian Campbell <ian.campbell@xxxxxxxxxx>
Delivery-date: Tue, 08 Mar 2011 03:50:03 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Ian Campbell <ian.campbell@xxxxxxxxxx>
# Date 1299584929 0
# Node ID 5084214b8983045d789a86c01e7a0fede46b5e58
# Parent  0e3211b5c4da98d170ed665c221bcb00e771fc56
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>

diff -r 0e3211b5c4da -r 5084214b8983 tools/libxl/libxl_pci.c
--- a/tools/libxl/libxl_pci.c   Tue Mar 08 11:13:12 2011 +0000
+++ b/tools/libxl/libxl_pci.c   Tue Mar 08 11:48:49 2011 +0000
@@ -866,7 +866,7 @@ static int do_pci_remove(libxl__gc *gc, 
 
         /* 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");
@@ -874,8 +874,7 @@ static int do_pci_remove(libxl__gc *gc, 
                  * 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-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel