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

Re: [Xen-devel] GPLPV Drivers 0.9.11-pre4 hang during boot - WindowsXP P

Hi James,

I meet this problem before but not in the same scenario.
I use WinPv driver WDF version and attach a lot of vbd and vif device, such as 4 disks and 8 NICs. After WinPv driver install correctly, reboot the vm. Vm cannot reboot correctly every times. And the debug log is very similar as Sandro provided. I change the backend bit width detect code as follow. In my test box, WinPv driver works ok till now. Please have a try if you are interested in it.


+XenVbd_TestBitWidth(PXENVBD_DEVICE_DATA DeviceData, PXENVBD_TARGET_DATA 
TargetData)
+{
+  blkif_request_t *req;
+  ULONG i;
+ int notify; + + KdPrint((__DRIVER_NAME " --> XenVbd_TestBitWidth\n"));
+    req = RING_GET_REQUEST(&TargetData->Ring, TargetData->Ring.req_prod_pvt);
+       req->id = 0;
+       KdPrint((__DRIVER_NAME "    req id : %d\n",req->id));
+    req->operation = 0xff;
+    req->nr_segments = 0;
+    for (i = 0; i < req->nr_segments; i++)
+    {
+      req->seg[i].gref = 0xffffffff;
+      req->seg[i].first_sect = 0xff;
+      req->seg[i].last_sect = 0xff;
+    }
+    TargetData->Ring.req_prod_pvt++;
+
+    RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&TargetData->Ring, notify);
+    KdPrint((__DRIVER_NAME "     1st notify: %d\n", notify));
+    if (notify)
+      DeviceData->XenDeviceData->XenInterface.EvtChn_Notify(
+        DeviceData->XenDeviceData->XenInterface.InterfaceHeader.Context,
+        TargetData->EventChannel);
+    KeMemoryBarrier();
+ + req = RING_GET_REQUEST(&TargetData->Ring, TargetData->Ring.req_prod_pvt);
+       req->id = 1;
+       KdPrint((__DRIVER_NAME "     req id : %d\n",req->id));
+    req->operation = 0xff;
+    req->nr_segments = 0;
+    for (i = 0; i < req->nr_segments; i++)
+    {
+      req->seg[i].gref = 0xffffffff;
+      req->seg[i].first_sect = 0xff;
+      req->seg[i].last_sect = 0xff;
+    }
+    TargetData->Ring.req_prod_pvt++;
+
+    RING_PUSH_REQUESTS_AND_CHECK_NOTIFY(&TargetData->Ring, notify);
+    KdPrint((__DRIVER_NAME "     2nd notify: %d\n", notify));
+    if (notify)
+      DeviceData->XenDeviceData->XenInterface.EvtChn_Notify(
+        DeviceData->XenDeviceData->XenInterface.InterfaceHeader.Context,
+        TargetData->EventChannel);
+    KeMemoryBarrier();
+  KdPrint((__DRIVER_NAME " <-- XenVbd_TestBitWidth\n"));
+    return;
+}



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

<Prev in Thread] Current Thread [Next in Thread>