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-changelog

[Xen-changelog] [xen-unstable] pcifront: fix multiple initialization bug

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] pcifront: fix multiple initialization bug
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Sun, 22 Nov 2009 23:35:54 -0800
Delivery-date: Sun, 22 Nov 2009 23:38:30 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1258960473 0
# Node ID 302e0877e4cf99482c3baa2b692cd438f37ebce3
# Parent  95f01bfd26672fdd5076699bb2ea7b65ce2e26e5
pcifront: fix multiple initialization bug

Now that we have pcifront_watches to dynamically initialize pcifront
we don't need a call to init_pcifront in pcilib and pcifront_scan
anymore; we should just wait for the frontend to connect to the
backend instead.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
---
 extras/mini-os/pcifront.c |   19 ++++++++++++++-----
 stubdom/pciutils.patch    |    4 +---
 2 files changed, 15 insertions(+), 8 deletions(-)

diff -r 95f01bfd2667 -r 302e0877e4cf extras/mini-os/pcifront.c
--- a/extras/mini-os/pcifront.c Mon Nov 23 07:13:59 2009 +0000
+++ b/extras/mini-os/pcifront.c Mon Nov 23 07:14:33 2009 +0000
@@ -276,15 +276,24 @@ void pcifront_scan(struct pcifront_dev *
 {
     char *path;
     int i, n, len;
-    char *s, *msg;
+    char *s, *msg = NULL, *err = NULL;
     unsigned int domain, bus, slot, fun;
 
     if (!dev)
         dev = pcidev;
-    if (!dev)
-        dev = init_pcifront(NULL);
-    if (!dev)
-        return;
+    if (!dev) {
+        xenbus_event_queue events = NULL;
+        char *fe_state = "device/pci/0/state";
+        xenbus_watch_path_token(XBT_NIL, fe_state, fe_state, &events);
+        while ((err = xenbus_read(XBT_NIL, fe_state, &msg)) != NULL || msg[0] 
!= '4') {
+            free(msg);
+            free(err);
+            printk("pcifront_scan: waiting for pcifront to become ready\n");
+            xenbus_wait_for_watch(&events);
+        }
+        xenbus_unwatch_path_token(XBT_NIL, fe_state, fe_state);
+        dev = pcidev;
+    }
 
     len = strlen(dev->backend) + 1 + 5 + 10 + 1;
     path = (char *) malloc(len);
diff -r 95f01bfd2667 -r 302e0877e4cf stubdom/pciutils.patch
--- a/stubdom/pciutils.patch    Mon Nov 23 07:13:59 2009 +0000
+++ b/stubdom/pciutils.patch    Mon Nov 23 07:14:33 2009 +0000
@@ -64,7 +64,7 @@ diff -urN pciutils-2.2.9.orig/lib/access
  
 --- pciutils-2.2.9.orig/lib/minios.c   1970-01-01 01:00:00.000000000 +0100
 +++ pciutils-2.2.9/lib/minios.c        2008-07-01 12:31:40.554260000 +0100
-@@ -0,0 +1,108 @@
+@@ -0,0 +1,106 @@
 +/*
 + *    The PCI Library -- MiniOS PCI frontend access
 + *
@@ -87,8 +87,6 @@ diff -urN pciutils-2.2.9.orig/lib/access
 +static void
 +minios_init(struct pci_access *a)
 +{
-+  if (!init_pcifront(NULL))
-+    a->warning("minios_init open failed");
 +}
 +
 +static void

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] pcifront: fix multiple initialization bug, Xen patchbot-unstable <=