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

To: "Wayne Gong" <wayne.gong@xxxxxxxxxx>, "Sandro Sigala" <sandro@xxxxxxxxx>
Subject: RE: [Xen-devel] GPLPV Drivers 0.9.11-pre4 hang during boot - WindowsXP Pro SP2
From: "James Harper" <james.harper@xxxxxxxxxxxxxxxx>
Date: Fri, 4 Jul 2008 21:19:10 +1000
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Fri, 04 Jul 2008 04:19:32 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <486DDF74.1010909@xxxxxxxxxx>
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>
References: <485A8681.10503@xxxxxxxxxxxxxxx> <AEC6C66638C05B468B556EA548C1A77D0148FABB@trantor> <485AD22D.7070303@xxxxxxxxxxxxxxx> <AEC6C66638C05B468B556EA548C1A77D0148FAEE@trantor> <485F726C.2000908@xxxxxxxxxxxxxxx> <AEC6C66638C05B468B556EA548C1A77D0148FB24@trantor><4861D361.9070806@xxxxxxxxx> <486C7997.80503@xxxxxxxxx> <AEC6C66638C05B468B556EA548C1A77D0148FCBA@trantor> <486CDFE4.6040006@xxxxxxxxx> <AEC6C66638C05B468B556EA548C1A77D0148FCC5@trantor> <486DD394.4060403@xxxxxxxxx> <486DDF74.1010909@xxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Thread-index: AcjdsFnoXU83jNYWR6OaIpOCjcrLEAAFqjlQ
Thread-topic: [Xen-devel] GPLPV Drivers 0.9.11-pre4 hang during boot - WindowsXP Pro SP2
> 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.

That patch appears to be to your wdf version of the code... can you give
me a summary of what the change you made is?

At a guess, the difference to the original code is that you are doing
two separate notify's, and a KeMemoryBarrier after each. Can you tell my
why the barrier is required?

I just noticed that the for() loop will never actually do anything as
req->nr_segments is initialised to zero... that's the same in my current
code too! I wonder how long that has been a problem for? I'll change my
code to initialise nr_segments to the maximum.

James

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